最简单Sptring Boot+Activiti教程 | 第二篇:第一个Activiti程序 简易入门

一、概述

本文将详细介绍如何在IDEA里使用Activiti插件(actiBPM)绘制流程图,并实现简易流程,内容包含,绘制流程图,部署流程定义,启动流程,查询任务,办理任务,查询流程状态。

二、绘制流程图

  1. 画流程图
    项目工程【resources】目录下,新建【processes】目录,Spring Boot 启动时会加载该目录下.bpmn文件及.png文件,自动部署流程。
    依次点击 File --> New -->BPMN File,创建流程文件并绘制流程。
    打开开BPMN编辑窗口:点击View–> Tool Windows --> BPMN Editor在这里插入图片描述
    在这里插入图片描述
  2. 设置任务办理人
    在这里插入图片描述
    在这里插入图片描述
  3. 设置流程的ID和NAME
    在这里插入图片描述
  4. 生成流程png图片
    将文件【helloWord.bpmn】重命名为【helloWord.bpmn20.xml
    右键该文件,菜单下面找到 Diagrams -->Show BPMN 2.0 Designer…
    在这里插入图片描述在这里插入图片描述

三、部署流程定义

application.yml文件添加配置

Spring:
  activiti:
    database-schema-update: true
    history-level: audit
    db-history-used: true
    async-executor-activate: true

启动项目自动部署流程,成功后可在下面三张表查到数据。
部署阶段影响的表:

SELECT * FROM `act_ge_bytearray`; #二进制文件表
SELECT * FROM `act_re_deployment`;#流程部署表
SELECT * FROM `act_re_procdef`;#流程定义

四、启动流程

根据流程id启动流程

	@Resource
	private RuntimeService runtimeService;
	/**
	 * 启动流程
	 */
	@Test
	public void startProcess(){
		runtimeService.startProcessInstanceByKey("helloWord");
		System.out.println("启动成功");
	}

五、查询任务

根据办理人查询其任务,根据查询结果:taskId,完成任务。

   @Resource
   private TaskService taskService;
   /**
    * 查询任务
    */
   @Test
   public void queryTask(){
   	String assignee="刘亦菲";
//		String assignee="于帅";
   	List<Task> list= taskService.createTaskQuery().taskAssignee(assignee).list();
   	list.parallelStream().forEach(task->{
   		System.out.println("任务id:"+task.getId());
   		System.out.println("流程实例id:"+task.getProcessInstanceId());
   		System.out.println("执行实例id:"+task.getExecutionId());
   		System.out.println("流程定义id:"+task.getProcessDefinitionId());
   		System.out.println("名称:"+task.getName());
   		System.out.println("办理人:"+task.getAssignee());
   		System.out.println("------------");
   	});
   }

控制台打印:

任务id:35002
流程实例id:22508
执行实例id:22509
流程定义id:helloWord:2:22507
名称:求婚申请
办理人:刘亦菲
------------

六、办理任务

根据上步查询的带办理任务Id完成任务

	@Resource
	private TaskService taskService;
	/**
	 * 处理任务
	 */
	@Test
	public void completeTask(){
		String taskId="10002";
		taskService.complete(taskId);
	}

五、查询流程状态

判断流程是否结束

	@Resource
	private RuntimeService runtimeService;
	/**
	 * 查询流程状态
	 */
	@Test
	public void completeTassk(){
		String processInstanceId="22508";
		ProcessInstance processInstance =runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
		if(processInstance==null){
			System.out.println("刘亦菲同意嫁给我了!马上举办婚礼!");
			return;
		}
		System.out.println("我还没同意她嫁给我");
	}

控制台打印,流程已完成,运行时表的数据会清除。

刘亦菲同意嫁给我了!马上举办婚礼!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值