Activiti6.0(三)实现一个请假流程

目录

一、前言

二、实现请假流程

1、制作流程图

2、导出xml流程文件

3、流程部署及运行

4、流程部署时数据库表变化


 

一、前言

上文SpringBoot已经与Activiti做了基本整合,所有流程需要的数据表也都已生成,下面就先来实现一个最简单的请假流程来感受下工作流的大概步骤。

 

二、实现请假流程

1、制作流程图

如果只是自己玩的话可以使用Activiti6自带的Activiti-app绘制流程图,这里就直接使用系列一绘制的请假流程图:

Activiti6.0(三)实现一个请假流程_第1张图片

2、导出xml流程文件

导出步骤也在系列一中详细介绍过,这里直接贴请假流程的详细xml文件:



  
    
    
      
        
        
        
        
      
    
    
      
        
        
        
        
      
    
    
    
    
    
  
  
    
      
        
      
      
        
      
      
        
      
      
        
      
      
        
        
      
      
        
        
      
      
        
        
      
    
  

3、流程部署及运行

首先将第二步获得的xml文件上传到系列二的项目中,放于resource目录下,如下:

Activiti6.0(三)实现一个请假流程_第2张图片

然后新建一个demo类开始部署并运行,这里需要引入SpringBoo的Test依赖:

        
            org.springframework.boot
            spring-boot-starter-test
        

测试类代码如下:

@SpringBootTest
@RunWith(SpringRunner.class)
public class VocationDemo {

    @Autowired
    private RepositoryService repositoryService;

    @Autowired
    private RuntimeService runtimeService;

    @Autowired
    private TaskService taskService;

    @Test
    public void demoTest() {
        // 1、发布流程
        Deployment deployment = repositoryService.createDeployment().name("请假小流程").addClasspathResource("processes/vocationDemo.bpmn20.xml").deploy();

        // 2、启动一个流程实例,由于两个环节审批的人都是写死的test,所以这边在启动流程的时候未透传下一环节处理人
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("vocation");

        // 3、查询所有任务
        List tasks = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).list();

        // 4、提交到总经理审批即完成任务,同样不需要传递变量
        Task task = tasks.get(0);
        taskService.complete(task.getId());
    }
}

4、流程部署时数据库表变化

这是一个最简单的纯人工节点串行的流程,上面的代码也并没有完全走完整个流程,只完成了直属经理审批环节的任务,下面我们来看下每个步骤部分数据表发生的变化:

1):发布流程时Activiti首先会将xml资源文件部署到ACT_GE_BYTEARRAY资源表中

然后将流程的部署信息发布到ACT_RE_DEPLOYMENT表中

将流程具体的信息发布到ACT_RE_PROCDEF表中

 

2):启动流程后,ACT_RU_EXECUTION表会生成两条记录,流程启动和用户任务,可以看到PROC_INST_ID_是一样的,说明是同一个流程实例

同时各任务表即运行时任务表ACT_RU_TASK和历史任务表ACT_HI_TASKINST中数据也同时增加

ACT_RU_TASK表如下,由于当前流程流转到总经理审批,因此运行任务则在当下

ACT_HI_TASKINST表如下,保存了上一环节的已完成的任务

同时Activiti在流程流转时也支持一系列变量,用于在流程流转时起到辅助作用并能透传一些业务参数,这些变量数据均放在ACT_RU_VARIABLE,由于上面的例子实现很简单,并没有透传变量,透传变量只是说在启动流程和提交任务时增加Map参数,用于在监听器或流程本身使用。

 

你可能感兴趣的:(Activiti6)