【问题标题】:Alfresco: How can I check if a value already exists in DB save new values?Alfresco:如何检查数据库中是否已存在值保存新值?
【发布时间】:2016-10-20 22:08:57
【问题描述】:

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

【问题讨论】:

    标签: java alfresco alfresco-webscripts


    【解决方案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 调用您的数据库。

    【讨论】:

    • 是的,我实际上没有使用对象我的问题是工作流表单,当我从下拉列表中选择值时,我放置了一个下拉字段,我必须附加自动生成数字,例如(1000,1001,1002)为此我需要在创建数据库之前检查并创建新的自动生成号码
    • 好的,我更新了我的答案,包括一个指向工作流教程的链接,该教程显示了一个自定义 Java 任务侦听器的示例。
    猜你喜欢
    • 2020-07-15
    • 1970-01-01
    • 2011-05-16
    • 2021-10-10
    • 2013-08-11
    • 2011-12-10
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多