Activiti入门

最近要用工作流,之前没用过,没办法强撸吧,参考了官方文档感觉比较生涩难懂 , 又翻了很多博客 , 加上我们团队小姐姐粘的几页代码,勉强总结一下子,不足请谅解
老规矩,先来波简介
简介
是由软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架 。
工作流概念:工作流() , 就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行 , 从而实现某个预期的业务目标,或者促使此目标的实现” 。
demo准备
【Activiti入门】知道他是干什么的那么怎么用呢 , 暂时需要这些东西,先跑跑看看
环境 我用的是JDK8 ,官方说JDK6+就行软件 我用的idea idea的插件没有的好用版本 我这是的,官网最高本版本是7项目管理用的maven 导个依赖就行方便快捷,当然你如果有需要就自己下jar包 我用的内嵌,你们自己玩把 。插件下载
我这里只有idea插件下载教程,的自己找吧
左上角 file>> >搜索 “”
下载完成重启idea,然后有这个BPMN File就说明下载好了
创建demo
创建一个maven工程,我用的 。
1 , 导入依赖 。其他依赖自己导,我这只把粘出来了
org.activitiactiviti-engine5.21.0org.activitiactiviti-spring5.21.0
2,配置文件
.yml文件我就不说了,数据源你自己配
接下来是配置文件
@Configurationpublic class ActivitiConfig {@Autowiredprivate DataSource dataSource;@Autowiredprivate ResourcePatternResolver resourceLoader;/*** 初始化配置 , 将创建28张表* @return*/@Beanpublic StandaloneProcessEngineConfiguration processEngineConfiguration() {StandaloneProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration();configuration.setDataSource(dataSource);configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);configuration.setAsyncExecutorActivate(false);return configuration;}@Beanpublic ProcessEngine processEngine() {return processEngineConfiguration().buildProcessEngine();}@Beanpublic RepositoryService repositoryService() {return processEngine().getRepositoryService();}@Beanpublic RuntimeService runtimeService() {return processEngine().getRuntimeService();}@Beanpublic TaskService taskService() {return processEngine().getTaskService();}
配置了之几个常用组件,后面熟悉了按需可以配置其它
3 , 画流程图
再目录下建个文件夹,new BPMN File
画图就是右侧图标来过来就行 , 连线时你将鼠标放到节点中间,变成个圈往另一个节点拉就行,小绿是开始节点 , 小红是结束节点,这俩必须得有,其它自行翻译 。
点击节点,给他设置id 名字 , 受理人等信息 。老夫给翻译了一下 。
4,测试
@RunWith(SpringRunner.class)@SpringBootTestpublic class OaActivityApplicationTests {@AutowiredRepositoryService repositoryService;@AutowiredRuntimeService runtimeService;@AutowiredTaskService taskService;private String processInstanceKey = "test";@Testpublic void createLiucheng() {System.out.println("--创建流程定义--");String processResourceFile = "diagrams/test.bpmn";Deployment deploy = repositoryService.createDeployment().addClasspathResource(processResourceFile).name(processInstanceKey).deploy();System.out.println("部署ID:" + deploy.getId()); //2501System.out.println("部署名称:" + deploy.getName());//test}@Testpublic void firstLiucheng() {System.out.println("--测试步骤--");Map property = new HashMap<>();property.put("user", "1");ProcessInstance pi = runtimeService.startProcessInstanceByKey("test",property);System.out.println("流程实例的ProcessInstanceId: "+pi.getId());//5001System.out.println("流程实例的ProcessDefinitionKey: "+pi.getProcessDefinitionKey());//testSystem.out.println("流程实例的ProcessDefinitionId: "+pi.getProcessDefinitionId());//test:1:2504System.out.println("流程实例的ProcessDefinitionName: "+pi.getProcessDefinitionName());//nullSystem.out.println("流程实例的ProcessDefinitionVersion: "+pi.getProcessDefinitionVersion());//null}@Testpublic void getDaiban() {System.out.println("--得到待办--");String assignnee = "1";String processInstanceId = "5001";List tasks = taskService.createTaskQuery().processInstanceId(processInstanceId).taskAssignee(assignnee).list();for(Task task:tasks){System.out.println("任务id: "+task.getId());//5005System.out.println("任务name: "+task.getName());// 测试System.out.println("任务formkey: "+task.getFormKey());//null}}}
再结合点百度 。run
数据库生成的表
的表都以ACT_开头 。第二部分是表示表的用途的两个字母标识 。用途也和服务的API对应 。
*: 'RE’表示 。这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等) 。
*: 'RU’表示 。这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据 。只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录 。这样运行时表可以一直很小速度很快 。
*: 'ID’表示 。这些表包含身份信息,比如用户,组等等 。
*: 'HI’表示 。这些表包含历史数据,比如历史流程实例, 变量,任务等等 。
*: 通用数据, 用于不同场景下 。
总结
这里分享一下官方文档地址,可以去里面参考
5.15 用户手册
5.16 用户手册
官网 5 6 7 用户手册
只有把抱怨环境的心情 , 化为上进的力量,才是成功的保证 。——罗曼·罗兰