悬崖三千尺
耐心与坚持成就未来!
展开
-
Camunda BPM架构
所以即使是相同的流程实例不同的执行过程,也可以运行在不同的节点上,不会出现不一致的状态,从而实现简单的集群支持。Camunda BPM的核心流程引擎是一个轻量级的模块,可以被Spring管理或者加入到自定义的编程模型中,并且支持线程模型。由应用程序控制流程引擎的启动和停止,并且可以根据需要运行多个流程引擎。将流程引擎部署在运行时容器中(如tomcat),流程引擎作为容器服务提供,可以被容器中的所有应用程序共享。为了提供扩展和保证服务可靠性,流程引擎可以作为集群,部署在多个节点上,连接到一个共享的数据库。原创 2024-06-01 10:51:39 · 554 阅读 · 0 评论 -
Camunda BPM主要组件
显然,任务管理和驾驶舱是Camunda提供的简单工具,UI简单,甚至可以说毫无美感,对大型应用或者系统来说,并不满足需求,只适合开发人员进行流程设计时候的使用,或者管理员来使用,使流程能够正常流转,处理异常。可以执行业务驱动的决策表,预制于工作流引擎当中,与工作流引擎一样,可以通过REST API进行调用或者Java应用嵌入使用,支持DMN1.3规范。通过仪表盘呈现统计数据,报表结果,监控运行状态。管理员也是一个web应用,用来管理用户,群组和权限,可以对用户分组,对用户授权,并集成其他系统的用户。原创 2024-05-26 09:48:56 · 134 阅读 · 0 评论 -
BPMN2.0 事件 - 基本概念
结束事件是一个黑体的圆,标志一个事件或者流程的结束,当它发生在参与者的活动之后,通常标记流程结束,用户的业务活动结束,但只代表业务活动结束,并不代表业务活动达成用户的期待结果。从流程生命周期角度定义,事件可以分为开始,中间,结束三种类型,从事件的动作处理,触发方式角度定义,事件又分为捕获,抛出事件。站在触发方式的角度,捕获事件的发生需要动作或者状态的变化来触发,在这里这个动作和状态的变化定义为触发器,当触发器被触发或者激活的时候,捕获事件将发生,根据捕获事件的类型和定义,将影响流程的执行。原创 2024-05-01 09:19:23 · 83 阅读 · 0 评论 -
BPMN2.0 任务-任务监听器
较早之前,我们也引入了新的执行监听器类型,org.flowable.engine.impl.bpmn.listener.ScriptTaskListener。这个脚本任务监听器可以为一个任务监听器事件执行一段脚本代码。请注意委托类的实例在流程部署时创建(与Flowable中其它的委托类一样),这意味着该实例会在所有流程实例执行中共享。用于在特定的任务相关事件发生时,执行自定义的Java逻辑或表达式。(必填):触发任务监听器的任务事件类型。事件时,我们通常希望能看到任务的所有参数,包括办理人。原创 2024-04-21 21:19:27 · 182 阅读 · 0 评论 -
BPMN2.0 -条件序列流和默认序列流
当离开BPMN 2.0活动时,默认行为是计算其每个出口顺序流上的条件。在流程执行过程中访问一个元素之后,将继续执行素有的序列流,默认是并行的。只有当没有其他顺序流可以选择时,才会选择默认顺序流作为活动的出口顺序流。流程会忽略默认顺序流上的条件。下面的例子,通过典型的JavaBean的方式,使用getter引用流程变量的数据。时,选择该出口顺序流。都计算为false时,才会选择默认顺序流作为网关的出口顺序流。子元素的普通顺序流。定义,默认为唯一支持的表达式类型。活动的默认顺序流由该活动的。原创 2023-05-21 15:19:24 · 1322 阅读 · 1 评论 -
BPMN2.0 任务-执行监听器
较早之前,我们也引入了新的执行监听器类型,org.flowable.engine.impl.bpmn.listener.ScriptExecutionListener。这个脚本执行监听器可以为执行监听器事件执行一段脚本代码。执行监听器(execution listener)可以在流程执行中发生特定的事件时,执行外部Java代码或计算表达式。下面的代码片段展示了一个简单的示例流程,带有一个使用了字段注入的执行监听器。属性配置的执行监听器时,可以使用字段注入。启动事件的结束,和结束事件的启动。原创 2023-05-18 21:41:38 · 1105 阅读 · 0 评论 -
BPMN2.0 任务-发送任务&业务规则任务
Flowable使用名为Drools Expert的Drools规则引擎执行业务规则。目前,业务规则中包含的.drl文件,必须与定义了业务规则服务并执行规则的流程定义一起部署。这意味着流程中使用的所有.drl文件都需要打包在流程BAR文件中,与任务表单等类似。如果想要使用自己的规则任务实现,比如希望通过不同方法使用Drools,或者想使用完全不同的规则引擎,则可以使用BusinessRuleTask的class或expression属性。发送任务时一种比较简单的任务,用来把消息发送给外部参与者。原创 2023-05-18 21:29:02 · 359 阅读 · 0 评论 -
BPMN2.0 任务-接收任务&手动任务
当流程执行到接收任务时,流程状态将提交给持久性存储。流程将保持这种等待状态,直到流程引擎接收到特定的消息,这将触发接收任务之外流程的继续进行。接收任务用左上角有一个消息图标的标准BPMN 2.0任务(圆角矩形)表示。消息图标是白色的(对应的黑色消息图标代表发送的含义)。在flowable中只支持java任务。要使流程实例从接收任务的等待状态中继续执行,需要使用到达接收任务的执行id,调用。接收任务是一个简单的任务,它等待特定消息的到来。原创 2023-05-08 19:59:56 · 244 阅读 · 0 评论 -
BPMN2.0 任务-服务任务
默认情况下,异步作业是排他的,也就是说流程实例会被锁定,以保证流程实例中的其他活动不会影响到触发器的逻辑。这是最不线程安全的模式,但可以保证历史版本兼容性,也可以在委托表达式只在一个任务中使用的时候(因此不会产生并发竞争条件),安全使用。这种情况下,使用字段注入时,没有线程安全性问题:每次表达式解析时,都会注入新实例的字段。有的时候,需要在Java服务任务中使用Flowable服务(例如调用活动(call activity)不满足需要的场景下,使用RuntimeService启动流程实例)。原创 2023-05-03 19:52:29 · 642 阅读 · 0 评论 -
BPMN2.0 任务-脚本任务
如果想使用其它(兼容JSR-223的)脚本引擎,则需要在classpath中添加相应的jar,并使用适当的名字。有时,脚本任务中的脚本不是由开发者撰写的。如果指定为已存在的流程变量,则流程变量的值会被脚本执行的结果值覆盖。时,执行的脚本与Java代码具有相似的能力。当流程执行到达脚本任务时,会执行相应的脚本。也就是说如果在脚本任务定义中忽略这个参数,则脚本声明的所有变量将只在脚本执行期间有效。到达脚本引擎的执行中,所有的流程变量都可以在脚本中使用。: 一个全限定类名字符串的集合,表示允许在脚本中使用的类。原创 2023-05-02 16:43:34 · 777 阅读 · 0 评论 -
BPMN2.0 泳池与泳道
泳池和泳道定义了流程中的职责。泳池有明确的组织边界,泳道总是位于一个泳池或者另一个泳道中,它与同一泳池的其他泳道可以无限制通信。泳池和泳道代表了流程执行中的不同角色,也就是流程参与者。泳道可以用来对不同的任务或者子流程分组,并分配不同的任务管理者。泳池和泳道是参与流程的对象,表示活动的执行者,可以是组织,角色,系统,个人等。泳池和泳道的意义,更在于流程的建模者的设计,体现流程的流转和业务含义。不同的泳道一般是不同的任务执行者。原创 2023-04-27 20:03:48 · 651 阅读 · 0 评论 -
BPMN2.0 任务-用户任务
例如,可以使用在流程里前一个表单中输入的日期,或者由前一个服务任务计算出的日期。每个任务都可以使用一个字段标志该任务的到期日期(due date)。可以使用查询API,查询在给定日期前或后到期的任务。在前一章节提到过,Flowable的身份管理实现并不适用于生产环境,而需要在支持的认证概要下自行扩展。可以在任务定义中使用扩展指定表达式,以在任务创建时设定到期日期。拥有办理人的任务,在其他人的任务列表中不可见,而只能在该办理人的。用户任务用左上角有一个小用户图标的标准任务(圆角矩形)表示。原创 2023-04-26 15:21:05 · 682 阅读 · 1 评论 -
BPMN2.0 网关
所有到达包容网关的并行执行,都会在网关等待,直到所有“可以到达”包容网关的执行都“到达”包容网关。当流程执行到达基于事件的网关时,与等待状态类似,网关会暂停执行,并且为每一条出口顺序流创建一个事件订阅。请注意包容网关不需要“平衡”(也就是说,前后对应的两个包容网关,其入口/出口顺序流的数量不需要一致)。与排他网关一样,可以在包容网关的出口顺序流上定义条件,包容网关会计算条件。在这种情况下,网关首先合并所有具有流程标志的入口顺序流,然后为每一个条件计算为true的出口顺序流分裂出并行执行路径。原创 2023-04-26 14:13:17 · 1000 阅读 · 0 评论