簡體   English   中英

當工作流的任務更改某些屬性時,如何制定觸發策略?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM