Atitit flowable使用总结

目录

1. flowable 1

1.1. 添加依赖 1

1.2. Flowable的启动接口 2

2. 还是使用简单流程来完成业务流程的学习, 2

2.1. 设计流程: 3

2.2. 4.新建flowable的表 自定义h2模式 3

2.3. 5.使用flowable创建一个简单的流程 5

2.4. 5.2部署启动写好的BPMN2.0文件: 5

2.5. d. 最后一步,完成实现申请通过后执行的自动逻辑,在现实中,这个逻辑可以做任何事情,例子中只做任务处理 6

  1. flowable
  • flowable存储数据默认采用h2内存数据库,但我这里还是用熟悉的mysql
  • flowable内部采用SLF4J作为其日志框架
  1. 部署前我们编辑了一个普通的流程文件,需要加载下改文件来防止文件有错误,把文件转换为BPMNModel来校验,核心接口为BpmnXMLConverter,通过API接口convertToBpmnModel来实现xml到模型的转换
  1. 添加依赖

<dependency>

<groupId>org.flowable</groupId>

<artifactId>flowable-engine</artifactId>

<version>6.4.1</version>

</dependency>

<dependency>

<groupId>com.h2database</groupId>

<artifactId>h2</artifactId>

<version>RELEASE</version>

<scope>compile</scope>

</dependency>

    1.  Flowable的启动接口
  1. 加载完成流程后,我们将流程启动,Flowable的启动接口为runtimeService,运行时服务调用startProcessInstanceByKey启动一个流程,并且返回流程对象ProcessInstance。该对象包含ID,后续我们将经常用到该ID。
  1. 还是使用简单流程来完成业务流程的学习,

目前流程只包含一个开始节点/用户任务节点/结束节点。给用户任务节点配置一个分配人为admin.如下图所示:

当客户有这么一个需求:下一个任务我需要自动执行一些操作,并且这个节点不需要任何的人工干涉,也就是说这个节点是自动化的。那么,这个当前面一个经办人员把任务发送下去的时候,自然而然的下一个节点就会开始马上执行。这个时候。我们就需要使用Activiti工作流的ServiceTask任务。

  1. 设计流程:

搞个类左右

  1. 4.新建flowable的表 自定义h2模式

ProcessEngineConfiguration config=ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()

.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)

.setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")

.setAsyncExecutorActivate(false);

ProcessEngine processEngine =config.buildProcessEngine();

运行后表目录为

  1. 5.使用flowable创建一个简单的流程

5.1创建一个bpmn文件:使用eclipse bpmn2插件

process_1.bpmn

注意地方

<bpmn2:process id="process_1" name="Default Process" isExecutable="true">

xmlns:activiti="http://activiti.org/bpmn"

  1. 5.2部署启动写好的BPMN2.0文件:

/*创建了一个新的部署*/

/*创建了一个新的部署*/

RepositoryService repositoryService = processEngine.getRepositoryService();

Deployment deployment = repositoryService.createDeployment()

.addClasspathResource("process_1.bpmn")     //TODO holiday.xml命名为何不行?

.deploy();

//启动一个流程结点

RuntimeService runtimeService = processEngine.getRuntimeService();

ProcessInstance processInstance =

runtimeService.startProcessInstanceByKey("process_id2", newHashMap());

System.out.println("--finis");

  1.  d. 最后一步,完成实现申请通过后执行的自动逻辑,在现实中,这个逻辑可以做任何事情,例子中只做任务处理

<serviceTask id="externalSystemCall" name="Enter holidays in external system" activiti:class="cn.thinvent.first.CallExternalSystemDelegate"/>

创建Java类,实现JavaDelegate

public class CallExternalSystemDelegate implements JavaDelegate {

public void execute(DelegateExecution execution) {

System.out.println("Calling the external system for employee "

+ execution.getVariable("employee"));

}

}

Atitit flowable使用总结 目录 1. flowable 1 1.1. 添加依赖 1 1.2. Flowable的启动接口 2 2. 还是使用简单流程来完成业务流程的学习, 2 2.1.相关推荐

  1. ActiveReports 9 新功能:借助目录(TOC)控件为报表添加目录功能

    ActiveReports 9 新功能:借助目录(TOC)控件为报表添加目录功能 原文:ActiveReports 9 新功能:借助目录(TOC)控件为报表添加目录功能 在最新发布的ActiveRep ...

  2. Oracle11g adump目录下面.aud增长导致空间撑满无法删除导致CRS无法启动的解决方法

    Oracle11g adump目录下面.aud增长导致空间撑满无法删除导致CRS无法启动的解决方法 参考文章: (1)Oracle11g adump目录下面.aud增长导致空间撑满无法删除导致CRS无 ...

  3. flowable工作流 流程变量_业务流程 BPM、工作流引擎、Flowable、Activiti

    特点 基于 Flowable(Activiti)生来具有的稳定工作流引擎 支持在线流程设计器,流程导入导出,符合 BPMN 规范,中国式工作流 支持流程办理.退回.自由流.会签.并行.串行.服务任务等 ...

  4. VS2008 C++ 项目添加“依赖”、“库目录”和“包含目录”

    1. 添加编译所需要(依赖)的 lib 文件 [解决方案资源管理器]"项目->属性->配置属性->连接器->输入->附加依赖项"里填写"wi ...

  5. VS|Qt工作笔记-修改pro文件生成目录清晰的项目结构并添加三方库

    目录 前言 修改过程 VS运行 前言 一般用Qt Creator写好东西(用Qt Creator写Qt程序一般比vs效率高)后,要用vs进行编译,要用vs进行打开,现在来说明,如何修改pro文件,生成 ...

  6. VS2005 项目怎样添加“依赖”、“库目录”和“包含目录”

    1. 添加编译所需要(依赖)的 lib 文件  [解决方案资源管理器]"项目->属性->配置属性->连接器->输入->附加依赖项"里填写"w ...

  7. VS2005 C++ 项目怎样添加“依赖”、“库目录”和“包含目录”

    1. 添加编译所需要(依赖)的 lib 文件 [解决方案资源管理器]"项目->属性->配置属性->连接器->输入->附加依赖项"里填写"wi ...

  8. 第9章第7节:给目录页幻灯片中的元素添加动画效果 [PowerPoint精美幻灯片实战教程]

    在完成目录页的制作之后,现在来给幻灯片中的元素添加动画效果.首先选择需要添加动画效果的对象. 点击动画选项卡,显示动画功能面板. 然后给所选对象添加名为淡化的动画效果. 将动画的开始方式设置为上一动画 ...

  9. cmake添加查找目录_CMakeLists.txt文件写法(7):添加查找头文件的路径

    [1.List转换成为数组.(这里的List是实体是ArrayList) 调用ArrayList的toArray方法. toArray public T[] toArray(T[] a)返回一个按照正 ...

  10. linux给目录加裸设备磁盘,Linux添加裸设备空间(Redhat)

    .创建pv pvcreate            /dev/sdd****pvcreate -M2 –metadatasize 100M /dev/sda pvcreate -M2 –metadat ...

最新文章

  1. java虚拟机 什么语言_什么是Java虚拟机?为什么Java被称为平台无关的编程语言...
  2. java中属性加参数_java – 具有类型参数的注释属性
  3. ExtJs+php学习长连接comet技术开端。
  4. 关于开发工具环境准备事项作为故事来处理的对话
  5. SI 和 DI 寄存器的区别
  6. kafka 服务端消费者和生产者的配置
  7. JAVA 技术类分享(一)
  8. 消息中间件学习总结(11)——Kafka与RocketMQ的Topic数量对单机性能的影响比较分析
  9. 原 IntelliJ IDEA 中 右键新建时,选项没有Java class的解决方法和具体解释
  10. 计算机网络实验二:网络基础编程实验
  11. 如何在matlab中设置colorbar
  12. 大数据技术架构_大数据架构流程图
  13. ZPL指令打印标签时出现白色窄条的坑
  14. InstallShield2015创建安装包
  15. 解决 您的安全设置不允许将此应用程序安装到您的计算机上的问题
  16. 用c#做的打地鼠小游戏,整理一下上课学的
  17. 【msvcr120.dll下载】msvcr120.dll丢失怎么修复
  18. [Lintcode]142. O(1) Check Power of 2
  19. 用 ECharts 做出漂亮的数据统计图
  20. 计算机是如何组成的?

热门文章

  1. java锁的粗化,锁优化(自旋锁,锁消除,锁粗化,轻量级锁,偏向锁)(深入理解JAVA虚拟机-学习记录)...
  2. python视频教程免费慕课网-python视频教程慕课 | 最好的python视频教程谁有
  3. html 源码_(带手机版数据同步)中国风古典园林石业织梦模板 水墨风格园林艺术网站源码下载...
  4. java需要class_java需要class是什么意思
  5. jQuery基础 - 选择器
  6. 三层代码的bll dal 层优化
  7. spring boot 创建第一个
  8. xcode中使用正则表达式来搜索替换代码
  9. Layout Management
  10. 使用nohup让程序在远程主机后台运行