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


相关推荐

  • 物理讨论题复习

    物理讨论题复习请简要回答避雷针的工作原理?避雷针由于曲率半径小,电荷面密度大,从而产生尖端放电现象,导致自身与带电云层形成回路。导致自身电荷放出从而不会被雷击中,当带电云层密度过大,避雷针通过接地把电引下大地“分子电流假说“是谁提出的?请解释“分子电流”。安培。在原子、分子等物质微粒内部,存在着一种环形电流—-分子电流。分子电流使每个物质都成为微小的磁体,他的两侧相当于两个磁极请解释”磁偶极子“。磁偶极子是类比电偶极子而建立的物理模型。具有等值异号的两个点磁荷构成的系统称为磁偶极子。磁偶极子的物理

    2025年6月29日
    5
  • volatile关键字解析

    volatile关键字解析

    2021年6月17日
    99
  • Pytest(6)重复运行用例pytest-repeat「建议收藏」

    Pytest(6)重复运行用例pytest-repeat「建议收藏」前言平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,

    2022年7月30日
    12
  • matlab 加权回归估计_Matlab:地理加权回归基本操作「建议收藏」

    matlab 加权回归估计_Matlab:地理加权回归基本操作「建议收藏」%————————————————————————–%计量经济学服务中心《空间计量经济学及Matlab应用》%————————————————————————–Vname=VariableGeometri…

    2022年10月6日
    5
  • java远程关机,Win7远程桌面以及远程关机设置注意事项

    java远程关机,Win7远程桌面以及远程关机设置注意事项远程桌面注意点在开启远程桌面的时候提示 必须为远程桌面启用 Windows 防火墙例外 顾名思义就是防火墙给阻止了 但是在防火墙里找了又找还是没有找到远程桌面的选项 为了系统的安装也不能把防火墙给关闭 怎么才能把远程桌面添加到防火墙信任呢 原因分析 出现此现象是由于 Windows7 组策略的设置才没有远程桌面这一选项 我们只需要修改下组策略才行解决方法 开始 运行 gpedit msc 计算机配置

    2025年8月25日
    5
  • 结巴分词库_中文分词

    结巴分词库_中文分词※结巴分词代码如下:#-*-coding:utf-8-*-importjieba#创建停用词列表defstopwordslist():stopwords=[line.strip()forlineinopen(‘stopword.txt’,encoding=’UTF-8′).readlines()]returnstopwords#…

    2025年8月14日
    2

发表回复

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

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