【问题标题】:DQL drop group_name in DFCDQL 在 DFC 中删除 group_name
【发布时间】:2016-08-31 11:51:41
【问题描述】:

我有一个应用程序正在从外部 .txt 读取的组名列表。 我想作为 List <String> 组名传递给方法并执行 dql 查询,例如:

for (String s : groupnames) {
    dql = "DROP GROUP " + s;
    System.out.println("dropped group: " + s;
}

如何编写/执行 DQL?

【问题讨论】:

  • 好的,但是你的问题是什么?如何以编程方式实现它?执行 DQL?
  • 是的,如何执行 DQL 从列表中删除每个组

标签: java dql documentum dfc


【解决方案1】:

我自己做的:

private static void deleteGroups(List<String> groupsToDelete) {
    try {
        DfClientX clientX = new DfClientX();
        IDfQuery query = clientX.getQuery();

        for (String s : groupsToDelete){
            query.setDQL("DROP GROUP '" + s + "'");
            printInfo("Executing DQL: " + query.getDQL());
            query.execute(_session, 0);

        }

    } catch (DfException e) {
        printError(e.getMessage());
        DfLogger.error("app", "DQL DROP GROUP execution", null,e);
    }
}

【讨论】:

  • 两点:1) 您必须关闭文档集合。执行 query.execute() 方法时会得到一个。如果这只是一次性活动,那就没问题了。如果您在应用程序中使用它 - 这需要修复 2) 删除组可能会产生后果,因为可能有对象持有对它的引用。最好运行 dm_ConsistencyChecker 作业并检查其输出
【解决方案2】:

不太确定 CS 是否允许通过 DFC 删除组,但应该是这样的:

IDfQuery query = new DfQuery();
query.setDQL("DROP GROUP <group_name>");
query.execute(getSession(), IDfQuery.DF_EXEC_QUERY);

肯定有办法在内存中实例化组对象并调用 .delete() 方法。我会试着检查一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    相关资源
    最近更新 更多