Activiti的简单应用,应用监听来实现简单的业务颗粒与工作流程结合,让流程带动业务颗粒执行的过程,此次的监听我们应用抽象的监听来实现,也就是说所有的普通业务类均应用此抽象监听,而不需要每一个类一个监听的来操作。
新建两个普通类:
package com.tgb.itoo.activiti.controller;
public class milaoshi {
public static void SayHello(){
System.out.println("milaoshi--sayHello--");
}
/* public static void SayHi(){
System.out.println("milaoshi--sayHi--");
}*/
}
package com.tgb.itoo.activiti.controller;
public class tanghuan {
public static void SayHello(){
System.out.println("tanghuan--sayHello--");
}
public static void SayHi(){
System.out.println("tanghuan--sayHi--");
}
}
抽象监听类:
package com.tgb.itoo.activiti.controller;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
public class CommonDelegate implements TaskListener{
static Map<Object,Object> map;
public CommonDelegate(){}
public CommonDelegate(Map<Object,Object> map){
this.map=map;
}
@Override
public void notify(DelegateTask delegateTask) {
Object obj=map.get("object");
Class clazz=obj.getClass();
Method[] methods=clazz.getDeclaredMethods();
for(int i=0;i<methods.length;i++ ){
try {
Method beforMehod = clazz.getMethod(methods[i].getName());
beforMehod.invoke(obj);
} catch (NoSuchMethodException | SecurityException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
业务流程图 如图(tanghuan类和milaoshi类均绑定同一个监听):