工作流引擎Activiti入门-01

工作流引擎Activiti入门-01工作流引擎 Activiti 入门工作流引擎工作流 BPMBPMNActiv 集成 Activiti 新建数据库新建项目 log4j 的配置 mysql 的配置生成 mysql 表流程操作 Activitibpmn 流程定义流程存储 部署流程启动任务查询任务处理工作流引擎工作流是指业务过程的部分或整体在计算机应用环境下的自动化 工作流主要解决的主要问题是 为了实现某个业务目标 利用计算机在多个参与者之间按某种预定规则自动传递文档 信息或者任务 BPMBPM BusinessProc

工作流引擎

工作流

BPM

BPMN

Activiti

Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准。

集成Activiti

新建数据库

新建项目

pom.xml:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.duohoob</groupId> <artifactId>activity</artifactId> <version>0.0.1-SNAPSHOT</version> <name>activity</name> <description>Demo project for Spring Boot and Activiti</description> <properties> <java.version>1.8</java.version> <slf4j.version>1.6.6</slf4j.version> <log4j.version>1.2.12</log4j.version> <activiti.version>7.0.0.Beta1</activiti.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--activiti核心包--> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>${activiti.version}</version> </dependency> <!--activiti与spring整合的包--> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring</artifactId> <version>${activiti.version}</version> </dependency> <!--bpmn模型处理--> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-bpmn-model</artifactId> <version>${activiti.version}</version> </dependency> <!--bpmn转换--> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-bpmn-converter</artifactId> <version>${activiti.version}</version> </dependency> <!--bpmn json数据转换--> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-json-converter</artifactId> <version>${activiti.version}</version> </dependency> <!--bpmn布局--> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-bpmn-layout</artifactId> <version>${activiti.version}</version> </dependency> <!--bpmn云支持--> <dependency> <groupId>org.activiti.cloud</groupId> <artifactId>activiti-cloud-services-api</artifactId> <version>${activiti.version}</version> </dependency> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <!--连接池--> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 

log4j的配置

在resources新建log4j.properties:

log4j.rootCategory=debug,CONSOLE,LOGFILE log4j.logger.org.apache.axis.enterprise=FATAL,CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n log4j.appender.LOGFILE=org.apache.log4j.FileAppender #\u65E5\u5FD7\u7684\u5B58\u653E\u8DEF\u5F84 log4j.appender.LOGFILE.File=D:\\work\\eclipse-workspace2\\activity\\activiti.log log4j.appender.LOGFILE.Append=true log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n 

mysql的配置

按照Activiti的默认方式,在resources新建activiti.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/contex http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- processEngine Activiti的流程引擎 --> <!-- 默认id对应的值为processEngineConfiguration --> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="jdbcDriver" value="com.mysql.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti"/> <property name="jdbcUsername" value="root"/> <property name="jdbcPassword" value="root123"/> <!-- activiti数据库表处理策略 --> <property name="databaseSchemaUpdate" value="true"/> </bean> </beans> 

生成mysql表

在test新建ActivityTest.java:

package com.duohoob.activity; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.junit.Test; public class ActivityTest { 
    / * 使用activiti提供的默认方式来创建mysql的表 */ @Test public void createTable(){ 
    // 使用classpath下的activiti.cfg.xml中的配置创建processEngine ProcessEngine engine = ProcessEngines.getDefaultProcessEngine(); System.out.println(engine); } } 

流程操作

Activiti bpmn designer

流程定义

bpmn文件其实是通过xml文件表示业务流程,open with xml editor就可以查看xml内容。

流程存储/部署

bpmn定义好后,通过Activiti提供的api,将我们的流程保存到数据库中。

testDeployProcess

 @Test public void testDeployProcess() { 
    // 创建processEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // 得到RepositoryService实例 RepositoryService repositoryService = processEngine.getRepositoryService(); Deployment deploy = repositoryService.createDeployment() .addClasspathResource("bpmn/Leave.bpmn") .name("请假流程") .deploy(); System.out.println(deploy.getId()); System.out.println(deploy.getName()); } 

流程启动

通过Activiti提供的api,开启一个流程实例。

testStartProcess

 @Test public void testStartProcess() { 
    // 创建processEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // 获取runtimeService RuntimeService runtimeService = processEngine.getRuntimeService(); // 启动流程 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess"); System.out.println("流程定义id:" + processInstance.getProcessDefinitionId()); System.out.println("流程实例id:" + processInstance.getId()); System.out.println("当前活动id:" + processInstance.getActivityId()); } 

任务查询

查询当前Assignee待执行的任务,比如说worker。

testFindPersonalTaskList

 @Test public void testFindPersonalTaskList() { 
    // 负责人 String assignee = "worker"; // 创建processEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // 获取taskService TaskService taskService = processEngine.getTaskService(); // 获取任务列表 List<Task> list = taskService.createTaskQuery() .processInstanceId("17501") .taskAssignee(assignee) .list(); for (Task task : list) { 
    System.out.println("流程实例id:" + task.getProcessInstanceId()); System.out.println("任务id:" + task.getId()); System.out.println("任务负责人:" + task.getAssignee()); System.out.println("任务名称:" + task.getName()); } } 

“17501”是上一步的流程实例ID。

任务处理

testcompleteTask

 @Test public void testcompleteTask() { 
    // 负责人 String assignee = "worker"; // 创建processEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // 获取taskService TaskService taskService = processEngine.getTaskService(); // 获取任务 Task task = taskService.createTaskQuery() .processInstanceId("17501") .taskAssignee(assignee) .singleResult(); // 处理任务 taskService.complete(task.getId()); } 

下一篇:工作流引擎Activiti入门-02

参考文章:

小Y先生。:Activiti工作流教程
Young丶:工作流引擎Activiti万字详细入门

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233876.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 表白生成器PHP源码,表白网页在线生成源码[通俗易懂]

    表白生成器PHP源码,表白网页在线生成源码[通俗易懂]在520这个节日里面,很多人都开始了表白计划,对于那些不敢说出口的问题,就直接来此下载520表白网页一键生成软件,帮助你们直接生成最棒的表白页面,让你们增加成功的机会。520表白网页一键生成软件简介如果你喜欢她不能亲自向她说不如做个网页,把自己想说的话写进去,然后发个地址给她,里面添加她喜欢的音乐或者mv。不会做网页怎么办,没事。表白网页生成器帮助你!无需任何编程。一键生成,然后把生成在桌面的i…

    2022年5月21日
    35
  • 电子元件-电阻

    本内容包括可调电位器的介绍,电阻率与温度系数,高精密电阻介绍,热敏电阻、压敏电阻、碳膜电阻与金属膜电阻介绍等。

    2022年4月8日
    56
  • 怎么新建pytest的ini文件_bikini

    怎么新建pytest的ini文件_bikini前言pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行查看pytest.ini的配置选项pytest-h找到以下

    2022年7月31日
    40
  • 常量字符串过长的解决办法_未受控的格式化字符串

    常量字符串过长的解决办法_未受控的格式化字符串如果使用String str = “这是一个很长很长很长 你需要的字符串。”; 出现异常不能正常编译运行时,可以使用下方:StringBuilder sb = new StringBuilder();sb.append(“这是一个很长很长”);sb.append(“很长 你需要的字符串”);字符串太长或字符串其他情况下可使用 : StringBuilder sb = new StringBuilder()…

    2022年8月19日
    37
  • java中 +=和+的区别[通俗易懂]

    java中 +=和+的区别[通俗易懂]java中+=的意义包含两部分,一是"+",就是通常所说的直接相加,二是改变结果的类型,将计算结果的类型转换为"+=符号左边的类型。比如:shrots=1;s+=1这个语句其实就是s=(short)(s+1)…

    2022年7月8日
    16
  • pycharm双击打不开,没有反应,下列方法亲测有用!

    pycharm双击打不开,没有反应,下列方法亲测有用!关于这个问题,刚好我朋友安装的pycharm出现了同样地问题,激活成功教程安装一段时间后就突然打不开了,网上有许多的解决办法,我都试了一遍还是无果,后来自己发现了问题所在,首先给大家科普一下网上的方法,再放上我的,请大家耐心读完。亲测有效!!!第一种:1.打开C:\Windows\System32;以管理员身份运行cmd.exe;2.在打开的cmd窗口中,输入netshwinsockreset,按回车键;3.重启电脑;4.重启后,双击pycharm图标就能打开了!第二种:在Pycha

    2022年8月25日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号