activiti java service task 服务任务

java 服务任务 有三种实现方式

1. activiti:class 要实现 javaDelegate或ActivityBehavior
2. activiti:delegateExpression 也要实现上面两个类
3. activiti:expression 直接调用javaBean

第一种方式在前面博客中已经实现过了,这里实现一下2和3这两个方式

activiti:delegateExpression的实现方式:

1. bmpn中的serviceTask中引用类
<process id="leaveBill" name="leaveBillprocess" isExecutable="true">
    <startEvent id="startevent1" name="Start"></startEvent>
    <endEvent id="endevent1" name="End"></endEvent>
    <userTask id="usertask1" name="User Task"></userTask>
    <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
    <serviceTask id="servicetask1" name="Service Task"></serviceTask>
    <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="servicetask1" activiti:delegateExpression="${myDelegate}"></sequenceFlow>
    <sequenceFlow id="flow3" sourceRef="servicetask1" targetRef="endevent1"></sequenceFlow>
</process>


2. 定义myDelegate
public class Mydelegate  implements JavaDelegate,Serializable{

	@Override
	public void execute(DelegateExecution execution) {
		System.out.println("自定义java类");
		
	}
	  
   
}


RuntimeService runtimeService = engine.getRuntimeService();
    	Deployment de = rs.createDeployment().addClasspathResource("test.bpmn").deploy();
    	ProcessDefinition defi = rs.createProcessDefinitionQuery().deploymentId(de.getId()).singleResult();
    	
Map<String,Object> vars=new HashMap<>();
vars.put("myDelegate", new Mydelegate());
ProcessInstance pi = runtimeService.startProcessInstanceByKey(de.getKey(),vars);


实现activiti:expression 直接调用javaBean
1. 定义bmpn文件
 <serviceTask id="servicetask2" name="Service Task"activiti:expression="${myBean.print(execution)}" ></serviceTask>
    <sequenceFlow id="flow3" sourceRef="servicetask1" targetRef="servicetask2" 
activiti:expression="${execution.setVariable('myName',myBean.name)}"></sequenceFlow>

2. 定义自定义类

public class MyBean  implements Serializable{
	private static final long serialVersionUID = 4888650505758480822L;

	private String name="test";
	
	public String getName() {
		return name;
	}
   
	public void print(Execution exe) {
		System.out.println("执行流id"+exe.getId());
	}
}

RuntimeService runtimeService = engine.getRuntimeService();
    	Deployment de = rs.createDeployment().addClasspathResource("test.bpmn").deploy();
    	ProcessDefinition defi = rs.createProcessDefinitionQuery().deploymentId(de.getId()).singleResult();
    	
Map<String,Object> vars=new HashMap<>();
vars.put("myBean", new Mydelegate());
ProcessInstance pi = runtimeService.startProcessInstanceByKey(de.getKey(),vars);
runtimeService.getVariable(pi.getId(), "myName");

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DQchat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值