2017-03-07 6 views
0

誰かがタスクのプロパティの値を変更したときにコードを実行しようとしています。ワークフローのタスクによってプロパティが変更されたときにトリガするポリシーを作成するにはどうすればよいですか。

これは私のコードです:

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 somesのようなクエリをクエリしようとしました:

@bpm\:priority:1 
TYPE:"bpm:task" 

結果なし。そして私は多くの仕事を作りました。私はAlfrescoは4.1を使用しています

は、私はそれがワークフローにポリシーをバインドすることはできません見つかっ

+0

興味深い変更されたときにトリガを取得タスクリスナーがありません、私は私が今まで誰もがワークフロータスクで動作を使用しようと見てきたとは思わないし、私は」それがうまくいくかどうかわからない。ワークフローにタスクリスナーを追加するだけの理由は何ですか? –

+0

私はタスクリスナーを試しましたが、タスクプロパティの変更をトリガーする方法はありません。しかし、私は代わりの方法を見つけた – Troncador

答えて

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 
    ... 
    } 
} 

タスクプロパティは

関連する問題