工作流引擎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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python信号处理库_python开源协议

    python信号处理库_python开源协议本发明涉及的是一种在用电采集终端上实现标准MBUS协议接口用来采集水表、热量表、气表数据的方法,具体涉及一种基于MBUS标准协议接口模块采集水、热、气表的方法,属于用电信息采集领域。背景技术:我国正处于自动化楼宇建设事业蓬勃发展的时期,远程抄表系统作为其中重要的一环,正朝着自动化及智能化方向发展;MBUS(仪表总线)总线作为一种通讯方式,以其高性价比,在水热测量仪表中得到了广泛的应用,大大推动了远…

    2022年10月15日
    0
  • 安卓原生镜像(中国网站)「建议收藏」

    安卓原生镜像(中国网站)「建议收藏」安卓原生镜像(谷歌中国站)找了半天百度,好不容易看到,赶紧收藏起来:原生安卓包:https://developers.google.cn/android/images?h1=zh=cn#angler

    2022年6月19日
    31
  • 手把手教你学SVN

    手把手教你学SVN注意转载须保留原文链接(http://www.cnblogs.com/wzhiq896/p/6822713.html)作者:wangwen896SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。对于很多新手来…

    2022年5月6日
    40
  • Fiddler+夜神模拟器进行APP抓包

    Fiddler+夜神模拟器进行APP抓包Fiddler+夜神模拟器进行APP抓包作者:霞落满天需求:对公司APP进行抓包获取详细的接口信息,这是现在开发必备的。工具:Fiddler抓包,夜神模拟器模拟手机安装APP1.下载Fiddlerhttps://www.telerik.com/download/fiddlerFiddler正是在这里帮助您记录计算机和Internet之间传递的所有HTTP和HTTPS通信…

    2022年5月7日
    100
  • jQuery实现方式不一样的跳转到底部

    jQuery跳转到页面底部效果在线体验:http://hovertree.com/texiao/jquery/9.htm以下是完整HTML代码:跳到底部jquery效果-何问起跳到底部效果

    2021年12月21日
    48
  • storm kafka_kafka poll timeout

    storm kafka_kafka poll timeouthttp://blog.csdn.net/liuxinghao/article/details/50553060

    2022年10月14日
    0

发表回复

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

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