【应用篇】Activiti监听(抽象)与业务颗粒结合的简单应用(二)

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类均绑定同一个监听):

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值