- 博客(210)
- 资源 (2)
- 收藏
- 关注
原创 Flowable源码注释(七十四)案例任务活动行为
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated CaseTaskActivityBehavior 案例任务活动行为 /** * 案例任务活动行为 * 使用案例服务任务启动CMMN案例 * * @author Tijs Rademakers * @author Joram Barrez */ public class CaseTaskActivityBehavior extends Abstract
2022-04-09 20:59:02
1492
1
原创 Flowable源码注释(七十三)服务任务委托表达式活动行为
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated /** * 服务任务委托表达式活动行为 * {@link ActivityBehavior}当“delegateExpression”用于serviceTask时使用 * * @author Joram Barrez * @author Josh Long * @author Slawomir Wojtasiak (Patch for ACT-115
2022-04-08 22:47:17
1308
原创 Flowable源码注释(七十二)子任务、流程任务活动行为
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated ChildTaskActivityBehavior 子任务活动行为类 /** * 子任务活动行为类 * * @author Tijs Rademakers * @author Joram Barrez */ public abstract class ChildTaskActivityBehavior extends CoreCmmnTriggerab
2022-03-30 22:18:34
1740
原创 Flowable源码注释(七十一)人类任务活动行为类
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated HumanTaskActivityBehavior 人类任务活动行为类 /** * 人类任务活动行为 * * @author Joram Barrez */ public class HumanTaskActivityBehavior extends TaskActivityBehavior implements PlanItemActivityBeha
2022-03-29 20:26:26
540
原创 Flowable源码注释(七十)脚本、业务规则、接收任务活动行为类
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated ScriptTaskActivityBehavior 脚本任务活动行为类 /** * 脚本任务活动行为类 * * BPMN 2.0脚本任务的实现。 * * @author Joram Barrez * @author Christian Stettler * @author Falko Menge */ public class ScriptTa
2022-03-27 19:52:48
1234
原创 Flowable源码注释(六十九)任务、用户任务活动行为
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated TaskActivityBehavior 任务活动行为类 /** * 任务活动行为类 * * 所有BPMN 2.0任务类型(如ServiceTask、ScriptTask、UserTask等)的父类。 * * 单独使用时,它的行为就像一个传递活动。 * * @author Joram Barrez */ public class TaskAc
2022-03-25 20:29:00
1445
原创 Flowable源码注释(六十八)流节点、抽象BPMN活动行为
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated FlowNodeActivityBehavior 流节点活动行为类 是网关、边界、任务等活动行为类继承的抽象类 /** * 流节点活动行为类 * * 所有“可连接”BPMN 2.0流程元素的超类:任务、网关和事件。这意味着任何子类都可以是sequenceflow的源或目标。 * 与BPMN 2.0中的“流节点”(flownode)概念相对应。 *
2022-03-23 21:19:48
1276
原创 设计模式-代理模式
一、定义 代理模式,为另一个对象提供一个替身或占位符以控制对这个对象的访问。 二、代理模式变体 远程代理 远程代理可以作为另一个JVM上对象的本地代表。调用代理的方法,会被代理利用网络转发到远程执行,并且结果会通过网络返回给代理,再由代理将结果转给客户。 虚拟代理 虚拟代理作为创建开销大的对象的代表。虚拟代理经常直到我们真正需要一个对象的时候才创建它。当对象在创建前和创建中时,由虚拟代理来扮演对象的替身。对象创建后,代理就会将请求直接委托给对象。 保护代理 一种根据访问权限决定客户可否访问对象的代理。 防火
2022-03-22 15:30:43
198
原创 Flowable源码注释(六十七)边界扩大、定时器、消息、信号事件行为类
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated BoundaryEscalationEventActivityBehavior 边界扩大事件活动行为类 /** * 边界扩大事件活动行为类 * * 扩大事件大多数用在连接子流程和父流程,用于触发一个子流程,不能发起流程实例 * 与错误事件不同,扩大事件不是临界事件,在抛出扩大事件的地方会继续执行 * * @author Tijs Rademakers
2022-03-21 16:21:50
674
原创 Flowable源码注释(六十六)边界注册、取消、条件、变量事件活动行为类
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated BoundaryEventRegistryEventActivityBehavior 边界事件注册事件活动行为类 /** * 边界事件注册事件活动行为类 * * @author Tijs Rademakers */ public class BoundaryEventRegistryEventActivityBehavior extends Bound
2022-03-18 23:25:55
795
原创 设计模式-状态模式
定义 状态模式,允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 这个模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象,行为会随着内部状态而改变。 实例 以糖果机为例,自动售卖糖果。 糖果机工作状态流程: 没有25分钱—》投入25分钱—》有25分钱—》转动曲柄—》售出糖果—》发放糖果,如果此时糖果数目等于0,则变成糖果售罄,否则返回没有25分钱状态。 其中,在投入25分钱,未转动曲柄前,可退回25分钱。 在糖果售罄状态时,不能投25分钱。 很明显,这个例子有4个状态:没有25分
2022-03-17 11:40:16
681
原创 Flowable源码注释(六十五)边界取消与补偿事件活动行为类
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated BoundaryCancelEventActivityBehavior 边界取消事件活动行为类 /** * 边界取消事件活动行为类 * * 取消边界事件(cancel boundary event),在事务取消时触发。当取消边界事件触发时,首先会中断当前范围的所有活动执行。 * 接下来,启动事务范围内所有有效的的补偿边界事件(compensation b
2022-03-17 09:45:13
994
原创 Flowable源码注释(六十四)边界事件活动行为类
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated BoundaryEventActivityBehavior 边界事件活动行为类 /** * 边界事件活动行为类 * * @author Joram Barrez */ public class BoundaryEventActivityBehavior extends FlowNodeActivityBehavior { private sta
2022-03-16 22:16:58
926
原创 HeadFirst设计模式-组合模式
定义 组合模式,允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 实例 继续以餐厅和煎饼屋合并的例子为例。 前面说到,餐厅菜单用ArrayList实现,煎饼屋菜单用数组,合并后两个都不想改变自己的实现,那么我们通过迭代器模式,统一了这两种实现,完成菜单遍历功能。 现在,餐厅需要在菜单上加个小菜单,甜品菜单。它包含在餐厅菜单里,所以无法用迭代器模式完成。那么,试试组合模式。将甜品菜单看做是组件,组合到餐厅菜单中。 餐厅菜单和甜品菜单都继承MenuCom
2022-03-16 10:20:26
274
原创 HeadFirst设计模式-迭代器模式
定义 迭代器模式,提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 实例 对象村餐厅和对象村煎饼屋要合并了。这是个好消息,但是煎饼屋使用ArrayList记录菜单项,餐厅使用数组记录菜单项。他们两个都不愿意改变实现,因为有太多的代码依赖于它们了。 但至少它们都同意实现MenuItem。 public class MenuItem { String name; String description; String vegetarian; double pr
2022-03-14 22:27:23
669
原创 HeadFirst设计模式-模板方法模式
定义 模板方法模式,在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 实例 以星巴克咖啡师训练手册为例。 星巴克咖啡冲泡法: (1)把水煮沸 (2)用沸水冲泡咖啡 (3)把咖啡倒进杯子 (4)加糖和牛奶 星巴克茶冲泡法: (1)把水煮沸 (2)用沸水浸泡茶叶 (3)把茶倒进杯子 (4)加柠檬 咖啡和茶的冲泡法大致上一样的。如果分开实现咖啡和茶的冲泡方法,则会发现有不少重复代码。既然咖啡和茶是如此地相似,我们应该将共同的部分抽取
2022-03-11 23:18:26
457
原创 Flowable源码注释(六十三)网关活动行为类(下)
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated InclusiveGatewayActivityBehavior 包容网关活动行为类 /** * 包容网关活动行为类 * Implementation of the Inclusive Gateway/OR gateway/inclusive data-based gateway as defined in the BPMN specification.
2022-03-10 21:44:35
659
原创 Flowable源码注释(六十二)网关活动行为类(上)
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated ExclusiveGatewayActivityBehavior 独占网关活动行为类 package org.flowable.engine.impl.bpmn.behavior; import java.util.Iterator; import org.flowable.bpmn.model.ExclusiveGateway; import org.fl
2022-03-09 20:58:29
786
原创 HeadFirst设计模式-外观模式
定义 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 实例 以家庭影院为例,准备放松准备开始感受电影的魔幻魅力。可能需要的步骤: 开始爆米花 将灯光调暗 放下屏幕 打开投影机 切换输入源 设置环绕立体声 开始播放电影 需要不少的步骤才能开始观看电影。但还不只这样。 看完电影后,你还要把一切都关掉,要反向地把这一切动作再进行一次。 如果要听广播,难道也这么麻烦? 如果你决定升级系统,可能还必须重新学习一套稍微不同的操作过程。 使用家庭
2022-03-07 10:57:48
432
原创 HeadFirst设计模式-适配器模式
定义 适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 适配器是什么,你一定不难理解,因为现实中到处都是。比方说,如果你需要在欧洲国家使用美国制造的笔记本电脑,你可能需要使用一个交流电的适配器。 你知道适配器的作用:它位于美式插头和欧式插座的中间,它的工作是将欧式插座转换成美式插座,好让美式插头可以插进这个插座得到电力。或者也可以这么认为:适配器改变了插座的接口,以符合美式笔记本电脑的需求。 实例 以之前讲过的鸭子为例。 public interface Du
2022-03-06 21:47:40
265
原创 Flowable源码注释(六十一)默认活动行为工厂类
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated DefaultActivityBehaviorFactory 默认活动行为工厂类 /** * 默认活动行为工厂类 * 活动行为工厂{@link ActivityBehaviorFactory}的默认实现。 * 在流程引擎配置类{@link ProcessEngineConfigurationImpl}上没有注入自定义{@link ActivityBehav
2022-03-03 16:58:57
790
原创 HeadFirst设计模式-命令模式
定义 命令模式——将请求封装成对象,这可以让你使用不同的请求、队列,或者日志请求来参数化其他对象。命令模式也可以支持撤销操作。 实例 餐厅点餐 以餐厅为例,顾客点餐,服务员记录订单,后移交给后厨制作。服务员是不用具体知道菜品是如何制作的,只需要记录下菜名,移交给后厨。服务员实际上将顾客和后厨解耦了,他们之间通过一个个菜品名,即一个个命令产生联系。不同的菜品可以互相组合,同样命令也可以互相组合。 下面列出餐厅对象与命令模式对象的对应关系: 餐厅 命令模式 顾客 Client 订单 Comm
2022-03-03 16:38:26
328
翻译 Flowable源码注释(六十)活动行为工厂类
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated ActivityBehaviorFactory 活动行为工厂类 /** * 活动行为工厂类 * 工厂类用于BPMN解析类{@link BpmnParser},BPMN解析类实例化行为类。例如,在解析独占网关时, * 将请求此工厂创建新的行为类{@link ActivityBehavior},设置在流程当前步骤的元素上,并实现独占网关符合规范的行为。 *
2022-03-01 21:21:51
544
翻译 Flowable源码注释(五十九)抽象行为工厂类
Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated AbstractBehaviorFactory 抽象行为工厂类 内部持有表达式管理器,主要负责将FieldExtension类型的集合转化为FieldDeclaration类型的集合 package org.flowable.engine.impl.bpmn.parser.factory; import java.util.ArrayList; import
2022-03-01 21:08:53
278
原创 HeadFirst设计模式-工厂模式(7)-总结
定义 工厂方法模式——定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 抽象工厂模式——提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。 要点 所有的工厂都是用来封装对象的创建。 简单工厂,虽然不是真正的设计模式,但仍不失为一个简单的方法,可以将客户程序从具体类解耦。 工厂方法使用继承:把对象的创建委托给子类,子类实现工厂方法来创建对象。 抽象工厂使用对象组合:对象的创建被实现在工厂接口所暴露出来的方法中。 所有工厂模式都通
2022-03-01 20:43:15
257
原创 HeadFirst设计模式-工厂模式(6)-工厂方法和抽象工厂的区别
工厂方法和抽象工厂都是工厂模式,它们间有相似的地方,常常被人们搞混。 工厂方法模式 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 abstract Product factoryMethod(String type) 抽象工厂模式 提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。 两者都能把应用程序从特定实现中解耦,都负责创建对象,但是做法不同。 两者区别 实现方式不同 工厂方法使用类,即使用继承的方法。工厂方法创建对象,需要
2022-03-01 20:21:08
203
原创 Flowable源码注释(五十八)事务监听器(下)
Flowable源码地址:https://github.com/flowable/flowable-engine Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated 事务监听器,包路径:org.flowable.common.engine.impl.cfg JobAddedTransactionListener 作业添加事务监听器 /** * 作业添加事务监听器 * * @author Tijs Radem
2022-02-27 18:50:07
497
翻译 Flowable源码注释(五十七)事务监听器(上)
Flowable源码地址:https://github.com/flowable/flowable-engine Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated 事务监听器,包路径:org.flowable.common.engine.impl.cfg TransactionListener 事务监听器 /** * 事务监听器 * * @author Tom Baeyens */ public int
2022-02-26 22:43:33
895
原创 HeadFirst设计模式-工厂模式(5)-抽象工厂
接上文。 重做披萨 现在已经有了一个抽象比萨,可以开始创建具体披萨子类了。子类间唯一的区别在于使用区域性的原料,至于比萨的做法都一样(面团+酱料+芝士),其他的比萨(蔬菜、蛤蜊等)也是如此。它们都依循着相同的准备步骤,只是使用不同的原料。 所以,我们不需要设计两个不同的类来处理不同风味的比萨,让原料工厂处理这个区域差异就可以了。下面是CheesePizza: public class CheesePizza extends Pizza { PizzaIngredientFactory ingredi
2022-02-26 22:13:32
239
翻译 Flowable源码注释(五十六)事务上下文工厂类
Flowable源码地址:https://github.com/flowable/flowable-engine Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated 事务上下文工厂类,包路径:org.activiti.engine.impl.cfg TransactionContextFactory 事务上下文工厂类 /** * 事务上下文工厂类 * * @author Tom Baeyens */ pu
2022-02-26 22:12:41
333
原创 HeadFirst设计模式-工厂模式(4)-抽象工厂
接上文。 确保原料的一致 你打算建造一家生产原料的工厂,并将原料运送到各家加盟店。但是加盟店在不同的区域,酱料是不一样的。你需要准备不同的原料。考虑到未来的扩展,你需要各个地区的原料。 建造原料工厂 现在,我们要建造一个工厂来生产原料。这个工厂将负责创建原料家族中的每一种原料。 开始先为工厂定义个接口,这个接口负责创建所有的原料: public interface PizzaIngredientFactory { // 接口中,每个原料都有一个对应的方法创建该原料 // 这里有许多新类,每个
2022-02-26 21:54:31
226
翻译 Flowable源码注释(五十五)MyBatis事务
Flowable源码地址:https://github.com/flowable/flowable-engine Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated Mybatis事务,包路径:org.activiti.engine.impl.cfg.standalone StandaloneMybatisTransactionContext独立MyBatis事务上下文 /** * 独立MyBatis事务上下文
2022-02-25 21:54:04
542
翻译 Flowable源码注释(五十四)Spring事务
Flowable源码地址:https://github.com/flowable/flowable-engine Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated Spring事务,包路径:org.activiti.spring TransactionContext 事务上下文接口 package org.activiti.engine.impl.cfg; /** * 事务上下文 * * @author
2022-02-25 21:42:10
481
原创 HeadFirst设计模式-工厂模式(3)-工厂方法
接上文。 披萨店改造的做法实际是“工厂方法”设计模式,原本由一个对象负责所有具体类的实例化,现在通过对PizzaStore做一些转变,变成由一群子类类负责实例化。 工厂方法模式 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 abstract Product factoryMethod(String type) 工厂方法用来处理对象的创建,并将这样的行为封装在子类中。这样,客户程序中伏案与超类的代码就和子类对象创建代码解耦了。 代码里减少对于具
2022-02-25 21:17:55
215
原创 HeadFirst设计模式-工厂模式(2)-工厂方法
接上文。 加盟比萨店 由于比萨店经营有成,开始有了加盟店。身为加盟公司经营者,你希望确保加盟店营运的质量,所以希望这些店都使用你那些经过时间考验的代码。但是每家加盟店都可能想要提供不同风味的比萨(比如说纽约、芝加哥、加州)。比如一家加盟店希望工厂能知道纽约风味的比萨:博饼、美味的酱料和少量的芝士。另一家加盟店希望工厂能制造芝加哥风味的比萨:厚饼、重味的酱料和大量的芝士。 不仅风味不同,还有些自创的流程:烘烤的做法有些差异、不要切片、使用其他厂商的盒子等。 下面的做法可让比萨制作活动局限于PizzaStore
2022-02-25 20:36:33
236
翻译 Flowable源码注释(五十三)事件解析处理器(下)
Flowable源码地址:https://github.com/flowable/flowable-engine Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated 事件解析处理器,包路径:org.flowable.engine.impl.bpmn.parser.handler ConditionalEventDefinitionParseHandler 条件事件定义解析器 /** * 条件事件定义解析器 *
2022-02-24 20:58:03
454
翻译 Flowable源码注释(五十二)事件解析处理器(上)
Flowable源码地址:https://github.com/flowable/flowable-engine Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated 事件解析处理器,包路径:org.flowable.engine.impl.bpmn.parser.handler CompensateEventDefinitionParseHandler 补偿事件定义解析处理器 /** * 补偿事件定义解析处理器
2022-02-24 20:37:30
307
原创 HeadFirst设计模式-工厂模式(1)-简单工厂
工厂模式解决初始化经常造成耦合的问题,将你从复杂的依赖中脱困。 实例化对象时,会使用new,但这是针对实现编程,而不是接口。这样让代码绑着具体类,会导致代码更脆弱,缺乏弹性。 在技术上,new没有错,毕竟这是Java的基础部分。真正令人犯难的是“改变”。需要找出会变化的方面,把它们从不变的部分分离出来。 比萨店实例 假设你有一个比萨店,制作比萨的初始代码: Pizza orderPizza() { Pizza pizza = new Pizza(); pizza.prepare()
2022-02-24 19:50:40
384
原创 HeadFirst设计模式-装饰者模式(下)
接上文。 真实世界的装饰者:Java I/O java.io包内的类太多了,简直是排山倒海。现在,你已经知道装饰者模式,这些I/O的相关类对你来说应该更有意义了,因为其中许多类都是装饰者。 例如: BufferedInputStream及LineNumberInputStream都扩展自FilterInputStream,而FilterInputStream是一个抽象的装饰类。 而FileInputStream和FilterInputStream都扩展自InputSteam类,InputSteam也是个装饰
2022-02-24 01:08:25
312
翻译 Flowable源码注释(五十一)网关解析处理器
Flowable源码地址:https://github.com/flowable/flowable-engine Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated 网关解析处理器,包路径:org.flowable.engine.impl.bpmn.parser.handler ExclusiveGatewayParseHandler 排他网关 /** * 排他网关 * * @author Joram Ba
2022-02-22 21:30:00
522
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人