2016-04-14 3 views
0

私は私の手に持っているこの状況を解決する方法について質問があります。事は、私は、特定の機能を繰り返すためにカスタムプロセスを定義しようとしていますが、 "父"プロセスで指定された動的な式を使用しています。カスタムプロセスを "B"と呼び、Bアクティビティを "A"と呼びます。私のプロセスでは、最近、サービスタスクで使用されているターゲット式 "customExpression"を指定してBプロセスを呼び出しますBプロセスのサービスタスクでこの "customExpression"を使用する方法がわかりません。私は...よく、あなたのサポートのための おかげで多くのことを自分自身を説明したいと考えてB工程コールアクティビティ - 表現 - 方法へ

<process id="B" name="B" isExecutable="true"> 
<startEvent id="startevent1" name="Start"></startEvent> 
<serviceTask id="serviceTask1" name="Service Task 1" activiti:expression="${customExpression}"></serviceTask> 
<endEvent id="endevent1" name="End"></endEvent> 
<sequenceFlow id="flow7" sourceRef="startevent1" targetRef="serviceTask1"></sequenceFlow> 
<sequenceFlow id="flow8" sourceRef="serviceTask1" targetRef="endevent1"></sequenceFlow> 
</process> 

<process id="A" name="A" isExecutable="true"> 
<startEvent id="startevent1" name="Start"></startEvent> 
<callActivity id="callactivity1" name="Custom Service Task" calledElement="B"> 
    <extensionElements> 
    <activiti:in sourceExpression="${customSpringService.execute(execution)}"></activiti:in> 
    </extensionElements> 
</callActivity> 
<sequenceFlow id="flow10" sourceRef="startevent1" targetRef="callactivity1"></sequenceFlow> 
<endEvent id="endevent1" name="End"></endEvent> 
<sequenceFlow id="flow11" sourceRef="callactivity1" targetRef="endevent1"></sequenceFlow> 
</process> 

過程で

すでにドキュメントでhttps://forums.activiti.org/content/call-activity-expression-how

答えて

1

は最後に、私は(activitiフォーラムから)マークで提案された解決策を試してみて、完璧に働いit's ...

これはサービス

のコードです:仕様を見て、ください。
import org.activiti.engine.delegate.DelegateExecution; 
import org.activiti.engine.impl.context.Context; 
import org.springframework.stereotype.Component; 

@Component("customService") 
public class CustomService { 

    public void executeExpression(String expression, DelegateExecution execution) { 
     Context.getProcessEngineConfiguration().getExpressionManager() 
      .createExpression(expression).getValue(execution); 
} 

} そして、これは、サービスタスク

<serviceTask id="customServiceTask_execution" name="Custom Service Task" activiti:expression="${customService.executeExpression("${accountService.getAccount(execution)}", execution)}"></serviceTask> 

の代わりに「$ {Aを指定するからですccountService.getAccount(execution)} "メソッドのパラメータとして直接親プロセスから渡された変数を使用します。

関連する問題