当有人更改任务属性的值时,我正在尝试执行代码。
这是我的代码:
public void init() {
JavaBehaviour updateBehaviour = new JavaBehaviour(this,
OnUpdatePropertiesPolicy.QNAME.getLocalName(),
NotificationFrequency.TRANSACTION_COMMIT);
policyComponent.bindClassBehaviour(OnUpdatePropertiesPolicy.QNAME,
WorkflowModel.TYPE_TASK, updateBehaviour);
policyComponent.bindClassBehaviour(OnUpdatePropertiesPolicy.QNAME,
WorkflowModel.TYPE_START_TASK, updateBehaviour);
policyComponent.bindClassBehaviour(OnUpdatePropertiesPolicy.QNAME,
WorkflowModel.TYPE_ACTIVTI_TASK, updateBehaviour);
policyComponent.bindClassBehaviour(OnUpdatePropertiesPolicy.QNAME,
WorkflowModel.TYPE_ACTIVTI_START_TASK, updateBehaviour);
policyComponent.bindClassBehaviour(OnUpdatePropertiesPolicy.QNAME,
WorkflowModel.TYPE_WORKFLOW_TASK, updateBehaviour);
logger.debug("Initialised"); // the program prints this line
}
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable>
before, Map<QName, Serializable> after) {
String msg = String.format("NodeRef: %s", nodeRef.toString());
logger.info(msg); // this line is never printed
}
我为几乎所有与任务相关的类型创建了一个策略。但是,如果我手动更改任务中某些属性的值,则永远不会触发策略。
也许是相关的。我试图在Lucene中查询一些查询:
@bpm\:priority:1
TYPE:"bpm:task"
没有任何结果。我创造了许多任务。
我正在使用Alfresco 4.1(我无法更改版本)
答案 0 :(得分:0)
我发现无法将策略绑定到工作流程,但我找到了另一种方法。
使用AbstractFilter,我们可以在每次有人使用表单更改任务属性时附加行为。
public class TaskFormFilter extends AbstractFilter<WorkflowTask, WorkflowTask> {
public void init() {
if (this.isActive()) {
this.register();
}
}
...
@Override
public void afterPersist(WorkflowTask item, FormData data,
WorkflowTask persistedObject) {
Map<QName, Serializable> newProperties = item.getProperties();
Map<QName, Serializable> oldProperties = persistedObject.getProperties();
// here I can see if some properties has changed
...
}
}
当任务属性发生更改时,没有任务侦听器被触发