Alfresco在工作流程中形成一个字段值。我需要检查数据库中是否存在已存在的值,如果存在则不保存,如果不保存不同的值。这可能吗?
答案 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 < 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调用。