2016-06-21 7 views
0

私は自分のサービスを通じてActiviti Apiを公開しています。 はserviceTasksの一つで、私は私自身のサービス(たとえば、XyzService)、私はセッター/ゲッターを使用してみましたActiviti Apiサービスタスクに私自身のサービスを注入する

を使用する必要があり、それは があり、私はゲッター/セッターを使用するように持っていけない、とにかく、動作しません。私はそれを使用することができるように、このserviceTaskにこのXyzServiceを注入する他の方法?

ありがとうございます、ありがとうございます。アプローチ以下

+0

プロジェクトでSpringを使用していますか? – Evgeny

+0

私はActivitiのためにSpringを使用していません – OutOfMind

答えて

0

試してみてください。

ProcessEngineを構築する前にProcessEngineConfigurationからxyzServiceが含まれている豆のマップを追加します。マップからのオブジェクトは、キーによって式にアクセスできます。たとえば、次のようにField Injection

<serviceTask id="servicetask" name="Service Task" activiti:class="com.example.MyJavaDelegate"> 
    <extensionElements> 
    <activiti:field name="xyzServiceExp"> 
     <activiti:expression>${xyzService}</activiti:expression> 
    </activiti:field> 
    </extensionElements> 
</serviceTask> 
MyJavaDelegate

public class MyJavaDelegate implements JavaDelegate { 

    private Expression xyzServiceExp; 

    @Override 
    public void execute(DelegateExecution execution) throws Exception { 
     XyzService xyzService = (XyzService) xyzServiceExp.getValue(execution); 
     .... 
    } 

    public void setXyzServiceExp(Expression xyzServiceExp) { 
     this.xyzServiceExp = xyzServiceExp; 
    } 
} 

それとも、beansマップに注入サービスとJavaDelegateインスタンスを入れて、サービスを定義することができますです

を使用してサービスタスクへの

ProcessEngineConfigurationImpl cfg = 
    (ProcessEngineConfigurationImpl) ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration(); 

Map<Object, Object> beans = new HashMap<>(); 
beans.put("xyzService", new XyzService()); 

ProcessEngine engine = cfg.setBeans(beans).buildProcessEngine(); 

注入するサービスタスクは

<serviceTask id="servicetask" name="Service Task" 
     activiti:delegateExpression="${myJavaDelegateInstance}" /> 
+0

ありがとうございます!これは動作します – OutOfMind

関連する問題