1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 工作流引擎Activiti

工作流引擎Activiti

时间:2019-06-26 15:21:03

相关推荐

工作流引擎Activiti

文章目录

前言一、工作流是什么?二、Activiti工作流框架三、如何使用1.添加依赖2.新建BPMN文件3.业务功能4.涉及数据库表

前言

在企业日常管理中,相信会有各种各样的申请,例如加班申请、请假申请、调休申请、离职等行政流程。订单、采购处理、合同审核、等业务流程,若是用人工的方式去管理这些流程,效率低,管理成本高;因此,为了提升效率,降低成本,这就需要用到工作流引擎。

一、工作流是什么?

工作流就是通过计算机技术对业务流程进行自动化管理。实现多个参与者按照预定的流程去自动执行业务流程。

二、Activiti工作流框架

Activiti是一个开源的工作流框架,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度

Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于Java的超快速,超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员

Activiti 流程引擎重点关注在系统开发的易用性和轻量性上.每一项BPM业务功能Activiti流程引擎都以服务的形式提供给开发人员.通过使用这些服务,开发人员能够构建出功能丰富,轻便且高效的BPM应用程序

三、如何使用

1.添加依赖

<dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter-basic</artifactId><version>6.0.0</version></dependency>

2.新建BPMN文件

下载插件

新建BPMN文档,放置/resource/bpmn 目录下

3.业务功能

部署工作流

//核心逻辑 指定bpmn文件 调用createDeployment 进行部署ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();Deployment deployment = processEngine.getRepositoryService()// 创建一个部署对象.createDeployment()// 添加部署名称.name(processDeployReqDto.getProcessName()).key(processDeployReqDto.getProcessKey())// 从classpath的资源中加载,一次只能加载一个文件.addClasspathResource("bpmn/" + processDeployReqDto.getProcessKey() + ".bpmn")// 完成部署.deploy();

提交工作流

//核心逻辑 设置variables参数 调用complete 走到下一个流程ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();Map<String, Object> variables = new HashMap<>();variables.put("nextUserId", nextUserId);//是否驳回标识,通过网关判断该标识决定执行下一流程是驳回还是继续variables.put("back", false);plete(task.getId(), variables);

审核工作流

//核心逻辑 设置variables参数 调用complete 走到下一个流程ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();Map<String, Object> variables = new HashMap<>();variables.put("nextUserId", nextUserId);//是否驳回标识,通过网关判断该标识决定执行下一流程是驳回还是继续variables.put("back", false);plete(task.getId(), variables);

驳回工作流

//核心逻辑 通过工作流网关判断该标识决定执行下一流程是驳回还是继续ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();Map<String, Object> variables = new HashMap<>();//是否驳回标识variables.put("back", true);plete(task.getId(), variables);

查询工作流程记录

//核心逻辑 通过调用引擎提供 api createHistoricTaskInstanceQuery 查询出流程记录 //api createHistoricVariableInstanceQuery 查询出流程中的各种参数 进行数据整合ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();List<HistoricTaskInstance> historicTaskInstanceList = processEngine.getHistoryService().createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).orderByProcessInstanceId().asc().list();HistoryService historyService = processEngine.getHistoryService();List<HistoricVariableInstance> list=historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId).list();

查询流程图

//核心逻辑 获取工作流定义 和流程记录 流程参数根据自己的需求进行数据整合//获取流程定义ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) repositoryService .getProcessDefinition(historicProcessInstance.getProcessDefinitionId());BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());respMap.put("flowDef", bpmnModel.getProcesses().get(0).getFlowElementMap());//流程参数HistoryService historyService = processEngine.getHistoryService();List<HistoricVariableInstance> list = historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId).list();//流程记录List<HistoricTaskInstance> historicTaskInstanceList = processEngine.getHistoryService().createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).orderByProcessInstanceId().asc().list();

4.涉及数据库表

Activiti的后台由有数据库的支持,所有的表都以ACT_开头

第二部分是表示表的用途的两个字母标识

用途也和服务的API对应

ACT_RE_* : 'RE'表示repository. 这个前缀的表包含了流程定义和流程静态资源(图片,规则...)ACT_RU_* : 'RU'表示runtime.这些运行时的表, 包含流程实例,任务,变量,异步任务,等运行中的数据.Activiti只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录.这样运行时表可以一直很小速度很快ACT_ID_* : 'ID'表示identity.这些表包含身份信息, 比如用户,组...ACT_HI_* : 'HI'表示history.这些表包含历史数据, 比如历史流程实例,变量,任务...ACT_GE_* :通用数据. 用于不同场景下, 如存放资源文件资源库流程规则表 (ACT_RE_*:'RE’表示repository. 这个前缀的表包含了流程定义和流程静态资源(图片,规则…))

act_re_deployment部署信息表act_re_model 流程设计模型部署表act_re_procdef 流程定义数据表

运行时数据库表 (ACT_RU_*:'RU’表示runtime.这些运行时的表, 包含流程实例,任务,变量,异步任务,等运行中的数据.Activiti只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录.这样运行时表可以一直很小速度很快)

act_ru_execution 运行时流程执行实例表act_ru_identitylink运行时流程人员表,主要存储任务节点与参与者的相关信息act_ru_task运行时任务节点表act_ru_variable运行时流程变量数据表组织机构表 (ACT_ID_* : 'ID’表示identity.这些表包含身份信息, 比如用户,组…)act_id_group用户组信息表act_id_info用户扩展信息表act_id_membership用户与用户组对应信息表act_id_user用户信息表

这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足

历史数据库表 (ACT_HI_*:'HI’表示history.这些表包含历史数据, 比如历史流程实例,变量,任务…)

act_hi_actinst历史节点表act_hi_attachment历史附件表act_hi_comment历史意见表act_hi_identitylink历史流程人员表act_hi_detail历史详情表,提供历史变量的查询act_hi_procinst历史流程实例表act_hi_taskinst历史任务实例表act_hi_varinst 历史变量表组织机构表 (ACT_GE_*:通用数据. 用于不同场景下, 如存放资源文件)act_ge_bytearray二进制数据表act_ge_property属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
扩展阅读