jbpm框架活动标志

流程图活动包括:

1:开始活动

      不能有分支,不能有多个开始活动,连线不能指向开始活动

2:结束活动

      end 普通结束

      end-cancel 取消结束

      end-error 异常结束

      PS:每个结束虽然长的不一样,功能一样,不一样的地方体现在his_task里的COUCOME描述,主要针对不用业务

3:状态活动state

     指的是流程走到该状态节点就停了,如果继续往下走只能调用

     processEngine.getExecutionService().singalExecutionById(executionId,"连线name")进行通知才能往下走。

     例如业务逻辑:当走到某节点需要所有人做反馈,当所有人反馈有调用上面的api进行唤醒

     PS:走到该节点在task表里没数据,在execution表里会记录当前节点是属于state状态,等待唤醒

4:判断活动 decision

     4.1:定义一个decisionhandle类,实现 DecisionHandle接口里的decide函数,返回的是判断活动下一步的路线

      

public class PriceDecisionHandle implements DecisionHandler {

	/**
	 * 执行判断,返回的是连线
	 */
	@Override
	public String decide(OpenExecution execution) {
		// TODO Auto-generated method stub
		String linkName = "to task2";

		double price = (double) execution.getVariable("price");

		if (price > 200) {
			linkName = "to task3";
		}
		System.out.println(linkName);
		return linkName;
	}

}

     4.2:指定的decision的handle class ,见图片

      


           4.3:在启动或执行task任务时设置流程变量

    

		//启动时设置流程变量
		String executionId = "financeDecision-1";
		
		Map<String, Object> map = new HashMap<String, Object>();

		map.put("price", 580d);
		
		ProcessInstance processInstance = pe.getExecutionService().startProcessInstanceById(executionId, map);

             4.4 当teamleader任务用户执行任务时会通过反射路径执行 decide函数 返回路径 跳转到指定的task

5:分支合并活动

     PS:使用场景,当一个流程需要2个人同时审批才能通过,如图(CEO和CFO同时审批后才能END)

      

 启动时在task表里会同时存储2条数据,在CEO和CFO全都执行完各自的任务后才能进行join合并并且end结束。


6:自定义活动

PS:自定义活动是用户可以自定义自己的行为,定义一个实现类,实现ExternalActivityBehaviour,其中可分为2中执行策略 1:执行完毕后直接跳转到下一个流程节点2:在该自定义节点停留等待唤醒(execute函数里执行ActivityExecution类型参数的wait函数execution. waitForSignal()),如图

public class Customer implements ExternalActivityBehaviour {

	/**
	 * 不管哪种策略都会执行该函数,也是第一步执行
	 */
	@Override
	public void execute(ActivityExecution execution) throws Exception {
		// TODO Auto-generated method stub
		
		execution.waitForSignal(); //等待唤醒之后执行signal
		
		System.out.println("execute执行");
	}

	/**
	 * 只有当execute(...)里执行了execution.waitForSignal()函数代表等待,之后执行(precessEngine.
	 * getExecutionService().signalsignalExecutionById())才会进行执行该函数
	 */
	@Override
	public void signal(ActivityExecution arg0, String arg1, Map<String, ?> arg2) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("signal执行");
	}

}
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值