[英]In TornadoFX, how can I make one Property change when other properties are changed?
[英]How can I make a policy that trigger when a workflow's task change some property?
當有人更改任務屬性的值時,我正在嘗試執行代碼。
這是我的代碼:
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(更改版本不方便)
我發現不可能將策略綁定到工作流,但是我找到了另一種方法。
有了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
...
}
}
更改任務屬性后,不會觸發任何任務偵聽器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.