首页 > 编程语言 >Java中的审批流:BPMN与Flowable

Java中的审批流:BPMN与Flowable

时间:2024-02-08 10:44:37浏览次数:35  
标签:Java bpmn Flowable 流程 BPMN Source 文档

最近闲来无事,研究了一下工作流框架。找到了一条可以实现审批流程的技术方向。

我选择的后端工作流框架是Flowable,看文档应该是属于Activity的一个分支吧。使用教程文档地址在:Getting Started · Flowable Open Source Documentation(用百度/必应搜索,搜到的是Flowable的官网,最后这个技术文档还是从github里面找到的)。

我对Flowable的理解:它只是一个根据指定流程文件处理流程的框架,流程文件中还可以设置变量,使用Flowable可以对变量进行赋值,增加审批中的灵活性。

使用SpringBoot集成Flowable很简单:Spring Boot · Flowable Open Source Documentation

 将Flowable的依赖添加进入pom文件之后,Flowable会自动在你连接的数据库中创建数据表。

要想将Flowable玩起来的关键在于BPMN协议的流程定义文件:

  1. BPMN 2.0 Introduction · Flowable Open Source Documentation
  2. BPMN 2.0 Constructs · Flowable Open Source Documentation

上面两个文档看完之后再配合流程变量,基本上大部分的需求就解决了。

重点来了,如何在自己的WEB网页上设计BPMN流程,最后导出成文件,我尝试使用了两个框架:

  1. bpmn-js:bpmn-js: BPMN 2.0 rendering toolkit and web modeler | Toolkits | bpmn.io
  2. logicflow:快速上手 | LogicFlow (logic-flow.cn)

其中,bpmn-js生成的BPMN协议的文件应该是最符合标准的。但无奈参考资料少,定制化难度高,个人水平有限,被我浅尝之后果断放弃。投向了logicflow。

logicflow不止可以做BPMN协议的流程。我认为他最大的优点就是可定制化程度高。它有bpmn的扩展包,实现了大部分的bpmn的协议,但不适用于我的想法。

所以我决定自己使用logicflow实现一部分可用的BPMN内容。

具体怎么实现文档写的也很清楚:快速上手 | LogicFlow (logic-flow.cn) 主要用到的是自定义节点,自定义转换器。

标签:Java,bpmn,Flowable,流程,BPMN,Source,文档
From: https://www.cnblogs.com/zhaoleiFree/p/18011620

相关文章

  • Java反射(learning)
    Java-reflectionJava反射(Reflection)是Java语言的一个特性,它允许程序在运行时检查和修改内部类的行为。通过反射,可以获取类的构造器、方法、字段等成员的信息,并且可以动态地创建对象、调用方法、访问和修改字段。Java反射主要涉及到以下几个类:java.lang.Class:代表一个类,每个......
  • 解析Sermant热插拔能力:服务运行时动态挂载JavaAgent和插件
    本文分享自华为云社区《服务运行时动态挂载JavaAgent和插件——Sermant热插拔能力解析》,作者:华为云高级软件工程师栾文飞一、概述Sermant是基于Java字节码增强技术的无代理服务网格,其利用Java字节码增强技术,为宿主应用程序提供服务治理功能,以解决大规模微服务场景中的服务治理......
  • 深入理解 Java 循环结构:while、do while、for 和 for-each 循环
    Java循环循环可以执行一个代码块,只要达到指定的条件。循环很方便,因为它们节省时间,减少错误,并使代码更易读。JavaWhile循环while循环会循环执行一个代码块,只要指定的条件为真:语法while(condition){//要执行的代码块}在下面的示例中,只要变量(i)小于5,循环中的代码将......
  • Java 中的Collections工具类
    Collections工具类java.util.Collection集合接口java.util.Collections集合工具类,方便集合操作对List集合中元素排序,需要保证List集合中元素实现了Comparable接口Collections.synchronizedList(list);设置成线程安全的Collections.sort(wuGuis);进行排序importjava......
  • javascript 下载 application/octet-stream 文件
    functiondownloadFile(id){varxhr=newXMLHttpRequest();xhr.open('POST','https://localhost/api/app/isp-detection/'+id+'/download');xhr.responseType='blob';xhr.setRequestHeader('Cont......
  • 编程新手必学:Java运算符详解
    编程新手必学:Java运算符详解编程,这种强大的艺术形式,给我们带来了无穷的可能性。就像数学中的加减乘除,程序设计中也有一种类似的工具:运算符。作为一种编程语言,Java提供了一系列的运算符来执行各种基础和复杂的操作。在本文中,我将尝试解释Java中的各种运算符,并提供一些代码示例来说......
  • 【视频】互联网Java工程师面试突击训练(三季)
    视频下载地址 https://pan.quark.cn/s/c17e3da33a76目录一、Java集合包HashMap的底层数据结构是什么?JDK1.8中对hash算法和寻址算法是如何优化的?03.HashMap是如何解决hash碰撞问题的?04.说说HashMap是如何进行扩容的?05.ArrayList,LinkedList,TreeMap,LinkedHashMap,HashSet等底层......
  • Java过滤器实现敏感词过滤
    一、前言在我们日常开发中经常会遇到前端输入数据保存到数据库的需求,比如留言板、回复等。我们需要规范输入内容就需要防范敏感词汇,这涉及到维护良好的用户体验、遵守法规以及保护用户免受侮辱和威胁。通过实施敏感词汇过滤,我们可以降低不适当内容的传播风险,提高平台的信誉度。二、......
  • Java与sql中的字符串表示
    在Java中,双引号""用于表示字符串字面量,而单引号''用于表示字符字面量。这意味着在Java中,您可以使用双引号来包围包含任意数量字符的字符串,包括零个字符(空字符串)和多个字符。例如,在Java中:StringemptyString="";//空字符串StringsingleChar='a';/......
  • Java获取方法的调用者
    publicstaticvoidmain(String[]args){method1();}staticvoidmethod1(){method2();}staticvoidmethod2(){method3();}staticvoidmethod3(){printCallingInfo();}staticvoidp......