【Activiti工作流引擎】官方快速入门demo

您所在的位置:网站首页 workflow官网中文规则 【Activiti工作流引擎】官方快速入门demo

【Activiti工作流引擎】官方快速入门demo

2023-11-17 18:13| 来源: 网络整理| 查看: 265

Activiti官方快速入门demo

地址: https://www.activiti.org/quick-start

0. 版本

activiti 5.22.0 JDK 1.8

1. 介绍

这个快速入门指南用于介绍如何在你编写的应用程序中嵌入BPM(Business Process Management)框架Activiti,你可以构建一个基于命令行的BPMN(业务流程建模与标注)逻辑应用程序。 Activiti拥有先进的流程设计工具,可将更复杂的BPM逻辑嵌入到您的应用程序中。这些工具包括基于Eclipse和基于Web的BPMN编辑器等等。为简洁起见,本快速入门只使用Activiti的Java API。

2. 创建设设置Maven项目

使用以下Maven依赖项创建一个名为“ActivitiDeveloperQuickStart”(以下称为)的Java项目: pom.xml文件内容为:

4.0.0 activiti activiti-demo 1.0-SNAPSHOT org.activiti activiti-engine 5.22.0 org.slf4j slf4j-api 1.7.21 org.slf4j slf4j-log4j12 1.7.21 com.h2database h2 1.4.193 mysql mysql-connector-java 6.0.6 org.apache.maven.plugins maven-assembly-plugin 2.4.1 jar-with-dependencies com.example.OnboardingRequest UTF-8 make-assembly package single

官方使用的数据库是H2,由于我想看一下表结构,所以这里我自己使用的是mysql数据库

3. 创建流程引擎

配置日志 D:\IDEAProject\activitidemo\src\main\resources\log4j.properties

log4j.rootLogger=DEBUG, ACT log4j.appender.ACT=org.apache.log4j.ConsoleAppender log4j.appender.ACT.layout=org.apache.log4j.PatternLayout log4j.appender.ACT.layout.ConversionPattern= %d{hh:mm:ss,SSS} [%t] %-5p %c %x - %m%n

创建一个带main方法的类

D:\IDEAProject\activitidemo\src\main\java\com\example\OnboardingRequest.java

package com.example; public class OnboardingRequest { public static void main(String[] args) { } }

使用Java代码的方式创建流程引擎

public class OnboardingRequest { public static void main(String[] args) throws ParseException { ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration() .setJdbcUrl("jdbc:mysql://localhost:3306/activiti?serverTimezone=UTC") .setJdbcUsername("root") .setJdbcPassword("123456") .setJdbcDriver("com.mysql.jdbc.Driver") .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); ProcessEngine processEngine = cfg.buildProcessEngine(); String pName = processEngine.getName(); String ver = ProcessEngine.VERSION; System.out.println("ProcessEngine [" + pName + "] Version: [" + ver + "]"); } }

FatJar也就叫做UberJar,是一种可执行的Jar包(Executable Jar)。FatJar和普通的jar不同在于它包含了依赖的jar包。 在第一步中已经把中加入了fatjar的配置

运行OnboardingRequest.java,运行成功后数据库会出现25张表

4. 部署流程实例

官方提供的Onboarding(入职)流程是: 1. 输入数据 2. 经验大于3年,发布个性化入职欢迎消息 3. 工作经验3年或者以下,直接把数据存入后端系统

官方提供的是xml配置文件 / src / main / resources / onboarding.bpmn20.xml

var dateAsString = new Date().toString(); execution.setVariable("autoWelcomeTime", dateAsString);]]> 3}]]>

这里要注意的是: “Enter Data”节点有2个参数fullName和yearsOfExperience,candidate groups设置为managers “Personalized Introduction and Data Entry”节点有1个参数personalWelcomeTime,candidate groups设置为managers “Years of Experience”网关判断节点的条件是${yearsOfExperience > 3},默认走automatedIntroPath

修改OnboardingRequest.java,部署流程实例

package com.example; import java.text.ParseException; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngineConfiguration; import org.activiti.engine.RepositoryService; import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration; import org.activiti.engine.repository.Deployment; import org.activiti.engine.repository.ProcessDefinition; public class OnboardingRequest { public static void main(String[] args) throws ParseException { ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration() .setJdbcUrl("jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000") .setJdbcUsername("sa") .setJdbcPassword("") .setJdbcDriver("org.h2.Driver") .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); ProcessEngine processEngine = cfg.buildProcessEngine(); String pName = processEngine.getName(); String ver = ProcessEngine.VERSION; System.out.println("ProcessEngine [" + pName + "] Version: [" + ver + "]"); RepositoryService repositoryService = processEngine.getRepositoryService(); Deployment deployment = repositoryService.createDeployment() .addClasspathResource("onboarding.bpmn20.xml").deploy(); ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() .deploymentId(deployment.getId()).singleResult(); System.out.println( "Found process definition [" + processDefinition.getName() + "] with id [" + processDefinition.getId() + "]"); } } 5. 启动流程实例

已经部署的流程实例,可以通过Activiti API来启动,运行,查看历史记录,并以其他方式管理流程实例 日志级别可以继续使用DEBUG,这里不修改,比较方便可以看到修改和查询了哪些表格

修改OnboardingRequest.java,启动一个流程

package com.example; import java


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3