Activiti(一)SpringBoot2集成Activiti6

Activiti是领先的轻量级的,以Java为中心的开源BPMN(Business Process Modeling Notation)引擎,实现了真正的流程自动化。下面介绍如何在SpringBoot环境下使用Maven集成Activiti6,来实现流程开发。

添加依赖

<dependency>

    <groupId>org.activiti</groupId>

    <artifactId>activiti-spring-boot-starter-basic</artifactId>

    <version>6.0.0</version>

</dependency>

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-jdbc</artifactId>

</dependency>

添加Processes目录

SpringBoot集成activiti默认会从classpath下的processes目录下读取流程定义文件,所以需要在src/main/resources目录下添加processes目录,并在目录中创建流程文件,添加目录后,目录结构变为:


如果没有processes目录,则需要修改配置spring.activiti.process-definition-location-prefix,指定流程文件存放目录。

Spring集成Activiti6默认支持**.bpmn20.xml和**.bpmn格式的流程定义文件,修改支持的文件格式,通过配置spring.activiti.process-definition-location-suffixes修改

如:

spring:

  activiti:

    check-process-definitions: true #自动检查、部署流程定义文件

    database-schema-update: true #自动更新数据库结构

    process-definition-location-prefix: classpath:/processes/ #流程定义文件存放目录

  #process-definition-location-suffixes: #流程文件格式

  #  - **.bpmn20.xml

  #  - **.bpmn

启动项目时,如果没有流程部署,就不能通过自动注入,使用RuntimeService等API,依赖注入时后报错。

ActivitiProperties中定义了activiti的自动配置项,其他配置请查看ActivitiProperties属性。

添加数据源

添加数据源,项目中添加数据源,初始化数据库结构,后续保存流程数据,

spring :

  #data source config

  datasource :

    driver : com.mysql.jdbc.Driver

    url: jdbc:mysql://192.168.105.10:3306/test_db?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true

    username : root

    password : mysql

    initsize : 10

    maxActive : 20

    minIdle : 10

    maxWait : 120000

    poolPreparedStatements : false

    maxOpenPreparedStatements : -1

    validationQuery : select 1

    testOnborrow : true

    testOnReturn : true

    testWhileIdle : true

    timeBetweenEvictionRunsMillis : 120000

    filters : log4j,stat

添加流程

在项目中添加流程,创建文件simple.bpmn,添加内容

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:tns="Examples" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" expressionLanguage="http://www.w3.org/1999/XPath" id="m1539757531057" name="" targetNamespace="Examples" typeLanguage="http://www.w3.org/2001/XMLSchema">

  <process id="oneTaskProcess" isClosed="false" name="The One Task Process" processType="None">

    <startEvent id="theStart"/>

    <sequenceFlow id="flow1" sourceRef="theStart" targetRef="theTask"/>

    <userTask activiti:assignee="${user}" activiti:exclusive="true" id="theTask" name="my task"/>

    <sequenceFlow id="flow2" sourceRef="theTask" targetRef="theEnd"/>

    <endEvent id="theEnd"/>

  </process>

</definitions>

启动测试

编写SpringBoot启动类,启动项目,启动项目。

@SpringBootApplication(scanBasePackages = "com.legao.server")

@EnableSwagger2

public class WorkflowServer {

    public static void main(String[] args) {

        SpringApplication.run(WorkflowServer.class, args);

    }

}

启动时,发现启动报错,

Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

查看activiti-spring-boot-starter-basic-6.0.0.jar发现,org.activiti.spring.boot.SecurityAutoConfiguration编译报错,这时候将SecurityAutoConfiguration排除到SpringBoot启动之外,即@SpringBootApplication注解添加exclude = SecurityAutoConfiguration.class属性

@SpringBootApplication(scanBasePackages = "com.legao.server", exclude = SecurityAutoConfiguration.class)

@EnableSwagger2

public class WorkflowServer {

    public static void main(String[] args) {

        SpringApplication.run(WorkflowServer.class, args);

    }

}

再启动发现启动正常,这时候SpringBoot集成activiti已经启动成功,查看数据库,Activiti6运行所需的28张表也已经创建成功。

ACT_EVT_LOG

ACT_GE_BYTEARRAY

ACT_GE_PROPERTY

ACT_HI_ACTINST

ACT_HI_ATTACHMENT

ACT_HI_COMMENT

ACT_HI_DETAIL

ACT_HI_IDENTITYLINK

ACT_HI_PROCINST

ACT_HI_TASKINST

ACT_HI_VARINST

ACT_ID_GROUP

ACT_ID_INFO

ACT_ID_MEMBERSHIP

ACT_ID_USER

ACT_PROCDEF_INFO

ACT_RE_DEPLOYMENT

ACT_RE_MODEL

ACT_RE_PROCDEF

ACT_RU_DEADLETTER_JOB

ACT_RU_EVENT_SUBSCR

ACT_RU_EXECUTION

ACT_RU_IDENTITYLINK

ACT_RU_JOB

ACT_RU_SUSPENDED_JOB

ACT_RU_TASK

ACT_RU_TIMER_JOB

ACT_RU_VARIABLE

idea上activiti插件的安装及使用

首先下载activti插件- actiBPM

File - settings-plugins-Browse-Repositories 搜索 actiBPM   双击搜索结果或点击Install plugin安装

IDEA Activiti Designer插件---actiBPM汉字乱码问题

idea 安转activiti插件后,编辑流程图发现保存后中文乱码,并且idea的字符集(Settings—>Editor—>File Encodings)已经设置为UTF-8,流程图中中文仍然是乱码,如下图所示:

2、解决此问题,需要修改idea源字符集,修改方法如下: 

找到idea安装目录bin目录下如下图所示两个文件: 

用编辑器打开,在文件末尾添加:

-Dfile.encoding=UTF-8

然后重启idea,再打开流程图就会发现中文已经可以正常显示了: 

idea actiBPM插件生成png文件 (解决没有Diagrams或Designer选项问题)

之前在网上看到一种解决办法:

先将bpmn文件修改成xml文件

然后右键点这个xml文件,在选项中选择diagrams,然后选择show Designer

就可以看到流程图,然后Export to file保存png文件。

我试了一下,但是在xml文件右键菜单中并没有找到Diagrams选项。

后来找到问题所在,原来是因为有一个jbpm2.0的插件没有开启 

开了这个插件后,果然xml右键菜单显示有Diagrams或Designer选项了 


点开后,显示流程图,点击Export to file导出png 

成功导出! 


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容