2016-06-21 3 views
0

내 서비스를 통해 Activiti API를 노출하려고합니다. 이 serviceTasks 중 하나에서, 나는 내 자신의 서비스 (예를 들어, XyzService), 내가 세터/게터를 사용하여 시도Activiti Api 서비스 태스크에 내 서비스를 삽입하십시오.

를 사용해야합니다, 그것은 가 있는가, 내가 게터/세터를 사용할 필요 없다 어쨌든, 작동하지 않습니다 이 XyzService를이 serviceTask에 삽입하는 다른 방법은 내가 사용할 수 있도록?

감사합니다. 감사드립니다. 방법 다음

+0

프로젝트에서 Spring을 사용합니까? – Evgeny

+0

Activiti에 Spring을 사용하지 않습니다. – OutOfMind

답변

0

시도 :

ProcessEngine을 구축하기 전에 ProcessEngineConfiguration-xyzService을 포함 콩 맵을 추가합니다. 지도의 객체는 키에 의해 표현식에 액세스 할 수 있습니다. 예를 들어 : 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(); 

를 주입 서비스는 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> 

를 사용하여 작업은

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

고마워요! 이 작품 – OutOfMind

관련 문제