Alfresco:如何检查DB中是否已存在值保存新值?

时间:2016-10-19 11:04:07

标签: java alfresco alfresco-webscripts

Alfresco在工作流程中形成一个字段值。我需要检查数据库中是否存在已存在的值,如果存在则不保存,如果不保存不同的值。这可能吗?

1 个答案:

答案 0 :(得分:1)

你在说" DB"但我会假设你的意思是"存储在Alfresco存储库中的对象的属性"。如果是这样,您可以从工作流中嵌入的JavaScript中检查属性值。如果一个属性被命名为" foo:someProperty"然后你可以使用doc.properties [' foo:someProperty']来获取它。您可以从工作流程包中获取对象。工作流程中的所有文档都在一个可以使用bpm_package.children访问的数组中。

代码看起来像:

<activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
  <activiti:field name="script">
    <activiti:string>
      for (var i = 0; i &lt; bpm_package.children.length; i++)
      {
        var doc = bpm_package.children[i];
        if (doc.properties['foo:someProperty'] === 'some value') {
            doc.properties['foo:someProperty'] = 'some other value';
            doc.save();
        }
      }
    </activiti:string>
  </activiti:field>

有关Alfresco JavaScript API的详细信息,请参阅docs

如果您不是指存储库中的对象而您确实是指关系数据库,那么您必须使用Java实现自定义任务侦听器,并从那里使用JDBC或其他一些API来查询您的数据库中的数据库和更新记录。

如果您需要做什么,那么您可以查看此workflow tutorial。有一个名为ExternalReviewNotification的类,它显示了如何在Java中实现自定义任务侦听器。您可以实现自己的任务侦听器,以便对数据库进行JDBC调用。