【发布时间】:2016-10-20 22:08:57
【问题描述】:
Alfresco 在工作流表单一字段值。我需要检查数据库中是否已经存在的值,如果存在则不保存,如果不保存不同的值。这可能吗?
【问题讨论】:
标签: java alfresco alfresco-webscripts
Alfresco 在工作流表单一字段值。我需要检查数据库中是否已经存在的值,如果存在则不保存,如果不保存不同的值。这可能吗?
【问题讨论】:
标签: java alfresco alfresco-webscripts
您说的是“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 < 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 调用您的数据库。
【讨论】: