flowableタスクリスナーとjavaサービスタスク依存注入の問題
2327 ワード
flowableタスクリスナーとjavaサービスタスクを最近使用した問題を記録します.
タスクリスナー
TaskListenerは主にusertaskをリスニングする場合であり、リスニングイベントeventは4種類ある:create作成assignment割当者complete完了delete削除
xml:
コード:
ここで問題があります.spring依存注入がある場合、取得できません.見てみると、プロセスエンジンが起動したとき、依存注入はまだ初期化されていません.groovyとjavaが工事で混在しているので、この問題があるかもしれません.
依存注入
ここでは、ApplicationContextAwareインタフェースを介してApplicationContextオブジェクトインスタンスを取得する別の方法で解決する
JAvaサービスタスク
同様にjavaサービスタスクにもこの問題がありますxml:
コード:
タスクリスナー
TaskListenerは主にusertaskをリスニングする場合であり、リスニングイベントeventは4種類ある:create作成assignment割当者complete完了delete削除
xml:
コード:
public class MyListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
System.out.println("=========== ============");
}
}
ここで問題があります.spring依存注入がある場合、取得できません.見てみると、プロセスエンジンが起動したとき、依存注入はまだ初期化されていません.groovyとjavaが工事で混在しているので、この問題があるかもしれません.
依存注入
ここでは、ApplicationContextAwareインタフェースを介してApplicationContextオブジェクトインスタンスを取得する別の方法で解決する
@Component
public class MyListener implements TaskListener, ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException {
applicationContext = arg0;
}
@Override
public void notify(DelegateTask delegateTask) {
String processInsId = delegateTask.getProcessInstanceId();
MyService myService = (MyService) applicationContext.getBean("myService");
// TODO service
System.out.println("========== ======");
}
}
JAvaサービスタスク
同様にjavaサービスタスクにもこの問題がありますxml:
コード:
@Component
public class ClassImplementsJavaDelegate implements JavaDelegate, ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException {
applicationContext = arg0;
}
public void execute(DelegateExecution execution) {
String processInsId = execution.getProcessInstanceId();
MyService myService = (MyService) applicationContext.getBean("myService");
System.out.println("===================== JavaDelegate =====================");
}
}