工作流Activity框架入门(一)

工作流Activity框架入门(一)

2023年8月1日发(作者:)

⼯作流Activity框架⼊门(⼀)Activity⼯作流⼊门1. ⼯作流概念⼯作流(Workflow),就是“业务过程的部分或整体在计算机应⽤环境下的⾃动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递⽂档、信息或任务的过程⾃动进⾏,从⽽实现某个预期的业务⽬标,或者促使此⽬标的实现”。

⼯作流管理系统(Workflow Management System, WfMS)是⼀个软件系统,它完成⼯作量的定义和管理,并按照在系统中预先定义好的⼯作流逻辑进⾏⼯作流实例的执⾏。⼯作流管理系统不是企业的业务系统,⽽是为企业的业务系统的运⾏提供了⼀个软件的⽀撑环境。

2. Activiti简介Activiti5是由Alfresco软件在2010年5⽉17⽇发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、⼯作流、服务协作等领域的⼀个开源的、灵活的、易扩展的可执⾏流程语⾔框架。Activiti基于Apache许可的开源BPM平台,创始⼈Tom Baeyens是JBoss jBPM的项⽬架构师,它特⾊是提供了eclipse插件,开发⼈员可以通过插件直接绘画出业务流程图。Activiti框架底层有数据库提供⽀持,根据版本不同,表的数量不⼀致,activiti5.13有23张表。底层使⽤mybatis操作数据库,开发⼈员不需要⾃⼰编写sqlJbpm4.4底层也有数据库⽀持,18张表。 底层使⽤hibernate操作数据库。

Activiti的后台是有数据库的⽀持,所有的表都以ACT_开头。 第⼆部分是表⽰表的⽤途的两个字母标识。 ⽤途也和服务的API对应。1) ACT_RE_*: 'RE'表⽰repository。 这个前缀的表包含了流程定义和流程静态资源 (图⽚,规则,等等)。2) ACT_RU_*: 'RU'表⽰runtime。 这些运⾏时的表,包含流程实例,任务,变量,异步任务,等运⾏中的数据。 Activiti只在流程实例执⾏过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运⾏时表可以⼀直很⼩速度很快。3) ACT_ID_*: 'ID'表⽰identity。 这些表包含⾝份信息,⽐如⽤户,组等等。4) ACT_HI_*: 'HI'表⽰history。 这些表包含历史数据,⽐如历史流程实例, 变量,任务等等。5) ACT_GE_*: 通⽤数据, ⽤于不同场景下。3. 安装插件(流程设计器插件)第⼀步:解压zip⽂件到eclipse中的dropins⽬录中第⼆步:重启eclipse,勾选save选项第三步:使⽤插件设计流程图4.⼿动创建数据库表Activity⾃带建表脚本,选择⼿动建表的话,只需要选取对应数据库的脚本即可,⾥⾯包含的Create、upgrade和drop相关脚本(upgrade脚本是⽤于⼯作流版本升级时候⽤的),当然Activity也⽀持⾃动建表,可以参考下⾯的DEMO,但是不建议⾃动建表,本案例⽤的是mysql,所以我选取的是mysql的脚本创建后应该可以看到有23张表,本教程使⽤的是Activity5.135.⾃定义流程右击⼯程->NEW->Other->Activity->Activity Diagram,新建⼀个⼯作流模板然后就可以开始拖拉控件设计流程了,设计好的流程,只要通过发布操作,就可以⾃动在数据库插⼊相应数据,可参考下⾯demo,以下是⼀个简单的流程:6.⼊门Demopackage ;import ;import sEngine;import sEngineConfiguration;import sEngines;import e;import ment;import mentBuilder;import sDefinition;import sDefinitionQuery;import sInstance;import ;import ery;import ;import ClassValidator;public class HelloWorld { // 使⽤框架的⾃动建表功能(不提供配置⽂件) @Test public void testCreateTablesAutomaticallyWithoutConfigFiles() { // 创建流程引擎配置对象 ProcessEngineConfiguration config = StandaloneProcessEngineConfiguration(); // 设置jdbc连接参数信息 cDriver(""); cUrl("jdbc:mysql:///eam-mirror"); cUsername("root"); cPassword("root"); // 设置⾃动建表 abaseSchemaUpdate("true"); // 使⽤配置对象创建流程引擎对象,创建对象过程中会⾃动建表 ProcessEngine processEngine = rocessEngine(); } // 使⽤框架的⾃动建表功能(提供配置⽂件) @Test public void testCreateTablesAutomaticallyWithConfigFiles() { ProcessEngineConfiguration config = ProcessEngineConfiguration .createProcessEngineConfigurationFromResource("", "processEngineConfiguration"); ProcessEngine pe = rocessEngine(); } // 使⽤框架的⾃动建表功能(提供配置⽂件---使⽤默认配置) @Test public void testCreateTablesAutomatically() { ProcessEngine pe = aultProcessEngine(); } ProcessEngine pe = aultProcessEngine(); // 将设计的流程图部署到数据库中 @Test public void testDeploy() { // 创建部署构建器对象,⽤于加载流程定义⽂件(,),部署流程定义 DeploymentBuilder deploymentBuilder = ositoryService().createDeployment(); sspathResource(""); Deployment deployment = (); n(()); } // 查询流程定义 @Test public void testQueryProcessDefinition() { // 流程定义查询对象,⽤于查询流程定义表----act_re_procdef ProcessDefinitionQuery query = ositoryService().createProcessDefinitionQuery(); // 添加过滤条件,取最新版本 Version(); // sDefinitionId(processDefinitionId) // sDefinitionKey(processDefinitionKey); // 添加排序条件 yProcessDefinitionVersion().desc(); // 添加分页条件 // ge(firstResult, maxResults); // 查询所有流程 List processDefinitionList = (); for (ProcessDefinition pd : processDefinitionList) { n(()); } } // 根据流程定义启动流程实例----操作的数据表:act_ru_execution act_ru_task @Test public void testStartProcess(){ String processDefinitionId = "UserAuditProcess:2:504"; //根据流程实例ID去启动流程 ProcessInstance pInstance = timeService().startProcessInstanceById(processDefinitionId); n(()); }

//查询任务列表 @Test public void testQueryTaskList(){ //创建任务查询对象,查询表act_ru_task TaskQuery query = kService().createTaskQuery(); String assignee ="张三"; //添加过滤条件 signee(assignee); //排序 yTaskCreateTime().desc(); List taskList = (); for(Task task : taskList){ n("taskId:"+()+",taskName:"+e()); } } //办理任务 //办理个⼈任务,操作的表是act_ru_execution,act_ru_task @Test public void testExecuteTask(){ String taskId= "604"; kService().complete(taskId); }

}ty框架学习指南

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690876169a452673.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信