Fire Workflow源码分析——(基本组成)(3)

好像分析的顺序错了,应该是先分析流程定义的基本元素好一些,今天就给大家展示一下Fire Workflow的org.fireflow.model.net包。

首先看一下整体类图:

由图很显而易见,Node分为两大类,Synchronizer和Activity,其中前者又可以分为EndNode和 StartNode。边Edge两端关联两个Node。Loop和Transition继承自Edge。由于Fire Workflow是基于Petri 网理论的,Transition也就是Petri net 中的变迁。Fire Workflow在基本Petri网基础上将处所节点 (Place)给扩展了(虽然当前的流程元素定义还不够完善,这也是下一步要做的事情)。下面简要展示 一下每一部分的内容。

Node:工作流网的节点。继承抽象类AbstractWFElement(见上文)。其第二个构造函数也是调用了基 类的方法。

Activity:继承自Node,大大丰富了节点的内容,和我们通常认为的工作网中的Activity类似。

时间: 2016-10-28

Fire Workflow源码分析——(基本组成)(3)的相关文章

Fire Workflow源码分析——(基本组成)(1)

Fire Workflow是最近兴起的国内比较火的开源工作流引擎,本人从发现它.应用它到解读它,感觉很 有前途.本开源项目有个谦逊的leader--非也,有个稳定良好的团队,我相信只要坚持,它的发展是长 远和美好的. FireWorkflow的源代码主要 包含两个部分:FireflowEngine和FireflowModel,其中FireflowEngine 主要是一些工作流运行时的服务,如事件处理.条件判断.数据持久化.工作流委派等等服务和操作,另 外还预留了一些扩展接口.FireflowMo

Fire Workflow源码分析——(基本组成)(5)

最近一大堆乱七八糟的事情,今天把 org.fireflow.model.io这个包给介绍完,那么Fire Workflow的 Model项目算是完成了. 主要分两大块:序列化和解析. FPDLNames:这个类定义了FPDL的元素和规范.包括命名空间里面的基本元素,本类决定流程文件的格 式和规范,由于元素太多,这里不一一展示了.FPDL基本是对XPDL的扩展,详细内容可以参见 http://www.fireflow.org/viewthread.php?tid=68&extra=page%3D1

Fire Workflow源码分析——(基本组成)(4)

这次讲包org.fireflow.model.resource.首先看一下这个包的整体类图. 资源这块Fire Workflow主要定义了资源和资源管理两大块.其中对于资源的描述分为子流程.应用. 表单和参与者,这里本人对把子流程作为资源的定义不甚理解,而前面介绍的包org.fireflow.model中又 含有WorkflowProcess,个人觉得是不是应该统一比较好?资源管理方面只是简单的实现了一个解析资源 文件(XML格式)的类,这块还有进一步完善的空间.下面对每一部分进行介绍. IRe

Fire Workflow源码分析——(基本组成)(2)

这次把昨天没说的剩下几个类搞定,也比较简单. FormTask:和下面将要提到的SubflowTask和ToolTask一样,都是继承自Task类.表单类型的Task,即 人工任务--需要人工进行表单处理的任务. 表单类型: EDITFORM: 可编辑表单. VIEWFORM: 只读表单. LISTFORM: 列表表单. 任务分配策略: ALL: 任务分配给角色中的所有人,只有在所有工单结束的情况下,任务实例才结束. ANY: 任何一个操作角签收该任务的工单后,此任务结束,其他人的工单被取消掉.

TOMCAT源码分析——生命周期管理(一)

前言 从server.xml文件解析出来的各个对象都是容器,比如:Server.Service.Connector等.这些容器都具有新建.初始化完成.启动.停止.失败.销毁等状态.tomcat的实现提供了对这些容器的生命周期管理,本文将通过对Tomcat7.0的源码阅读,深入剖析这一过程. TOMCAT生命周期类接口设计 我们先阅读图1,从中了解Tomcat涉及生命周期管理的主要类. 图1 Tomcat生命周期类接口设计 这里对图1中涉及的主要类作个简单介绍: Lifecycle:定义了容器生命

Tomcat源码分析——server.xml文件的解析

前言 在<Tomcat源码分析--server.xml文件的加载>一文中我们介绍了server.xml的加载,本文基于Tomcat7.0的Java源码,接着对server.xml文件是如何解析的进行分析. 概要 规则 Tomcat将server.xml文件中的所有元素上的属性都抽象为Rule,以Server元素为例,在内存中对应Server实例,Server实例的属性值就来自于Server元素的属性值.通过对规则(Rule)的应用,最终改变Server实例的属性值. Rule是一个抽象类,其中

Backbone源码分析(三)

Backbone源码分析(一)Backbone源码分析(二) Backbone中主要的业务逻辑位于Model和Collection,上一篇介绍了Backbone中的Model,这篇文章中将主要探讨Collection的源码. 让我们先来看一下Collection的构造函数: // Create a new **Collection**, perhaps to contain a specific type of `model`. // If a `comparator` is specified

jQuery 1.9.1源码分析系列(十四)之常用jQuery工具_jquery

为了给下一章分析动画处理做准备,先来看一下一些工具.其中队列工具在动画处理中被经常使用. jQuery.fn. queue(([ queueName ] [, newQueue ]) || ([ queueName ,] callback ))(获取或设置当前匹配元素上待执行的函数队列. 如果当前jQuery对象匹配多个元素:获取队列时,只获取第一个匹配元素上的队列:设置队列(替换队列.追加函数)时,则为每个匹配元素都分别进行设置.如果需要移除并执行队列中的第一个函数,请使用dequeue()函

Yarn源码分析之MRAppMaster上MapReduce作业处理总流程(二)

        本文继<Yarn源码分析之MRAppMaster上MapReduce作业处理总流程(一)>,接着讲述MapReduce作业在MRAppMaster上处理总流程,继上篇讲到作业初始化之后的作业启动,关于作业初始化主体流程的详细介绍,请参见<Yarn源码分析之MRAppMaster上MapReduce作业初始化解析>一文.         (三)启动         作业的启动是通过MRAppMaster的startJobs()方法实现的,其代码如下: /** * Th