Activiti7工作流引擎:进阶篇 ServiceTask

Posted vbirdbest

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activiti7工作流引擎:进阶篇 ServiceTask相关的知识,希望对你有一定的参考价值。


心念一转, 万念皆转; 心路一通, 万路皆通。

UserTask 需要 调用 taskService.complete(task.getId()) 来完成任务,而ServiceTask是不需要用户操作而自动执行的,它会自动调用Spring环境下的某个Bean的某个方法。
因为使用的是Bean所以在需要在Spring环境下运行,这里在SpringBoot2.x版本运行。

*************************** 废话不多说,上来就干。***************************

员工申请请假-》经理审批-》总经理审批。如果是经理要请假那么按照原来的方式经理还需要审核自己,然后再到总经理,现在想实现的效果是经理自己请假但自己不需要审核自己,直接到总经理审核。

🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷🍷 🍷🍷

一:🍼🍼🍼🍼🍼🍼.bpmn

在ServiceTask上设置Type=Expression,Expression=$myTaskService.isPm(execution),其中myTaskService是Bean中的Id值,方法参数名必须是execution不能修改。

本示例中是将ServiceTask使当做条件来使用的,本质上一般使用ServiceTask执行一些逻辑,计算出来一些值,然后将这些值设置为变量,然后供后面的流程来使用。

🥝🥝🥝🥝🥝🥝 设置流程条件。

🌽🌽🌽🌽🌽🌽 设置流程条件。

二:🍆🍆🍆🍆🍆🍆 Service

@Service如果没有指定名字,默认是类名的首字母小写,即myTaskService。

@Service
public class MyTaskService 

    public void isPm(DelegateExecution delegateExecution) 
        String creator = (String)delegateExecution.getVariable("creator");
        if ("狗经理".equals(creator)) 
            delegateExecution.setVariable("isPM", 1);
         else 
            delegateExecution.setVariable("isPM", 0);
        
    

三:🥒🥒🥒🥒🥒🥒 Test


@SpringBootTest
class SpringbootActiviti7Test 

	@Autowired
	private RuntimeService runtimeService;

	@Autowired
	private TaskService taskService;


	@Test
	void testStartProcess() 
		Map<String, Object> variables = new HashMap<>();
		variables.put("creator", "狗经理");
		variables.put("pm", "狗经理");
		variables.put("gm", "狗总经理");
		runtimeService.startProcessInstanceByKey("LeaveServiceTask", variables);

		Task task = taskService.createTaskQuery().processDefinitionKey("LeaveServiceTask")
				.taskAssignee("狗经理")
				.singleResult();
		taskService.complete(task.getId());
	

✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️经理请假直接到总经理那里审批了✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️

以上是关于Activiti7工作流引擎:进阶篇 ServiceTask的主要内容,如果未能解决你的问题,请参考以下文章

Activiti7工作流引擎:进阶篇 SpringBoot整合工作流Activiti7

Activiti7工作流引擎:进阶篇 多实例

Activiti7工作流引擎:进阶篇 ServiceTask

Activiti7工作流引擎:进阶篇 MailTask

Activiti7工作流引擎:进阶篇 ScriptTask

Activiti7工作流引擎:进阶篇 CallActivityTask