F2工作流体系架构概览图

为了能更好的了解F2工作流引擎的架构体系,花了些时间画了整个架构的体系图。F2工作流引擎遵循参考WFCM规范,目标是实现轻量级的工作流引擎,支持多种数据库及快速应用到任何基于.net管理系统,实现工作流审批、业务流(BPM)的智能性、灵活性、简单实用性,具有强大的扩张性、集成性、独立性、开放性和稳定性,实现了可视化的流程设计或优化,流程的定制完全是通过鼠标拖、拉、拽的方式来完成,常见的串行、并行、分支、聚合都可以非常方便快捷地实现,依托于工作流强大的自定义,管理员还可以随时根据企业的情况调整流程,真正做到企业流程的不断优化。图形化、可视化设计流程定义通过Web端纯JS流程设计器无需编程的“拖、拉”式图形用户流程设计环境,支持通用流程条件,多节点,多流向。

关于轻量级:易集成、真可嵌入式架构决定其是否为真正轻量级,所谓轻量级就是易用易集成,没有臃肿的第三方框架,大量使用第三方的框架会使使用者的门槛很高,大量的应用第三方框架不仅集成时非常困难,而且要解决各种版本冲突问题,最终导致自称轻量级的工作流却无法达到真正嵌入式集成或者要做嵌入式集成时要花费大量的时间和人力成本来解决种种版本冲突问题,百度搜索到的几乎都自称轻量级,但是决多数都是为了自称轻量级而叫轻量级,但实际应用还是依然是重型工作流,整合嵌入非常困难,各种DLL或Jar包冲突。

从我的理解,首先为什么要做到轻量级呢,原因就是你是要为别的系统服务的,做为工作流引擎是要面对各种业务系统,被业务系统集成整合进去的,由于这样的应用就决定了工作流引擎自身必须是一个非常纯净的代码环境。所以最极致轻量级的就是C#或Java的原生代码,整个引擎最多使用一种行业最常用的架构,比如Java的SpringMVC,.net的asp.net MVC,除此以外不使用任何第三个架构,这样你的引擎代码将十分纯洁,而且可以只编译成一个DLL或一个Jar包。这样不仅整合时没有任何冲突,而且也不会导致因为过多的引用使原来的业务系统环境就得更加杂锁复杂进而会导致将来的维护成本直线上升。

F2BPM工作流引擎的架构设计就是基于极致轻量级的设计,真正做到轻量级这个称呼。实务做好事情,比漂亮的宣传带来实实在在的成就。

上图:F2BPM工作流引擎微内核技术架构

上图:F2BPM流程引擎五大接口

引擎构件

Web建模工具:也叫“流程设计器” 即基于浏览器纯JS流程设计器无需编程的“拖、拉”式图形用户流程设计器工具。

流程引擎:调度,推进工作流过程和活动。

任务管理器:维护活动,为外部系统调用参与者任务列表提供数据

组织模型:流程任务最终是应用到人,达到人机交互的效果,为流程运转提供参与者。

支持多数据库的ORM工作流引擎需要应用到各个系统中去,需要有自己的ORM数据库访问层,同时支持多种数据库类型。

工作流数据

流程数据:即模型库数据,流程定义相关数据。

相关数据:即运动库数据,相关待办事项任务,活动实例等运动数据,流程上下文数据等。

流程实例:流程实例工单数据。

任务数据:待办工作项数据。

形参数据:外部Tools,Apps中规定的参数类型数据。

控制数据:迁移的前驱ID,后续活动ID,工作流对象状态等数据。

外部数据

业务表单数据:工作任务活动界面的数据,即表单展现

外部组织模型数据:外部系统的用户组织角色数据

外部应用数据:外部数据执行所需要的数据

术语约定

工作流:Workflow

工作流定义:WorkflowDefinition

活动Activity:活动即是步骤的意思。

参与者Actor:参与者是直接或间接参与执行工作的人、机器或组织单元。

任务Task:用户待办任务实例,是工作的最小单位,即工作项。

迁移:流转转向,即带剑头的线所表示。即Petri网中的变迁

SplitXOR:异或散发,即后续步骤只能选择一条分支。

SplitOR:或散发,即后续步骤可选择大于等于1的分支

JoinXOR:异或汇聚,即前继步骤只要有一条分支聚合就满足

JoinOR:聚合,根据规则需要聚合1条或多条分支

工作流执行服务

WorkFlowEnactmntService(工作流执行服务)这个组件就是我们平常说的工作流执行服务或工作流引擎包含了多个工作流机,主要功能是读取工作流定义、根据工作流定义驱动工作流的流转,分为三个阶段: 

1、模型建立阶段:利用工作流建模工具设计,并把XPDL文件解析导入到模型库。 

2、模型实例化阶段:模型库数据库导入到运动库,并做好状态初始化,并分配每个活动执行所需要的资源参数等。 

3、模型执行阶段:根据运行库的状态,条件判定,推动流程状态的迁移,并完成相关任务,同时提供注程实例运转过程的监控跟跟踪。

F2工作流引擎这工作流引擎体系架构(二)的更多相关文章

  1. GPU体系架构(二):GPU存储体系

    GPU是一个外围设备,本来是专门作为图形渲染使用的,但是随着其功能的越来越强大,GPU也逐渐成为继CPU之后的又一计算核心.但不同于CPU的架构设计,GPU的架构从一开始就更倾向于图形渲染和大规模数据 ...

  2. .net之工作流工程展示及代码分享(二)工作流引擎

    在介绍完表单类的时候,接下来介绍工作流引擎,主要由四个类组成,分别是流程.流程步骤.流程实例.流程步骤实例类. 流程类: [Serializable] public class Flow { [Xml ...

  3. InnoDB引擎体系架构

    InnoDB引擎架构介绍 innodb存储引擎的体系架构,可简单划分成三层: 数据文件 :磁盘上的数据文件 内存池:缓存磁盘上的数据,方便读取,同时在对磁盘文件数据修改之前在这里缓存,然后按一定规刷新 ...

  4. Java工作流引擎表单引擎之JS表单字段输入脚本验证

    关键字: 表单设计器, 字段验证. workflow,ccform, ccBPM. 工作流快速开发平台  工作流流设计  业务流程管理   asp.net 开源工作流bpm工作流系统  java工作流 ...

  5. MySQL InnoDB存储引擎体系架构 —— 索引高级

    转载地址:https://mp.weixin.qq.com/s/HNnzAgUtBoDhhJpsA0fjKQ 世界上只两件东西能震撼人们的心灵:一件是我们心中崇高的道德标准:另一件是我们头顶上灿烂的星 ...

  6. 逻辑引擎、工作流、CMDB小感

    工作流是啥? 在界面上画画点点就能生成代码,这是很吸引人的事情,也是很多自动化工具追求的目标.工作流就是这么一个东西,通过定义流程和输入,就能实现你想要的东西,不需要编写代码. 工作流的实现 通过解析 ...

  7. mysql的体系架构和存储引擎

    定义数据库和实例 数据库:物理操作系统的文件或其他形式文件类型的集合.在mysql数据库中,数据库文件可以是frm.MYD.MYI.ibd结尾的文件. 实例:MySQL数据库由后台线程以及一个共享内存 ...

  8. 《BI那点儿事》SQL Server 2008体系架构

    Microsoft SQL Server是一个提供了联机事务处理.数据仓库.电子商务应用的数据库和数据分析的平台.体系架构是描述系统组成要素和要素之间关系的方式.Microsoft SQL Serve ...

  9. 面向服务体系架构(SOA)和数据仓库(DW)的思考基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台

    面向服务体系架构(SOA)和数据仓库(DW)的思考 基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台 当前业界对面向服务体系架构(SOA)和数据仓库(Data Warehouse, ...

随机推荐

  1. thinkphp 查询当天 ,本周,本月,本季度,本年度,全部, 数据方法

    数据库字段是createtime 里面保存的是时间戳 <?php /* *按今天,本周,本月,本季度,本年,全部查询预约单数据 * $day 代表查询条件 $cid 代表 公司id *返回arr ...

  2. libevent源码分析:http-server例子

    http-server例子是libevent提供的一个简单web服务器,实现了对静态网页的处理功能. /* * gcc -g -o http-server http-server.c -levent ...

  3. MySql binlog恢复数据

    1. 直接导入数据库 mysqlbinlog --database=testdb mysql-bin. | mysql -uroot -f 2. 导出成SQL文 (1) 从binlog输出为SQL m ...

  4. js 操作数组封装

    function OperateArray(array) { this.array = array; } OperateArray.prototype.hasValue = function(val) ...

  5. NSUserDefaults的使用

    创建一个user defaults方法有多个,最简单得快速创建方法: NSUserDefaults *accountDefaults = [NSUserDefaultsstandardUserDefa ...

  6. Canvas 与 Paint 类的 使用

    使用canvas画布和paint画笔可以自定义view 案例:fastindexbar 基本用法 public class DrawView extends View{ private Rect mR ...

  7. 遗传算法在JobShop中的应用研究(part 6:结果显示)

    def FormatSolution(s, C, I): T = [0 for j in xrange(I.n)] S = [[0 for t in I[j]] for j in xrange(I.n ...

  8. div盒子中子元素(子元素可能是盒子, 图片) 中居中的三种方法

  9. iOS - WXPay 微信支付

    1.微信支付申请 微信支付官方集成指引 微信支付官方集成指导视频 微信 APP 支付开发者文档 微信公众平台 微信开放平台 微信商户平台 1.1 微信 APP 支付申请步骤 APP 支付:APP 支付 ...

  10. JQuery 添加节点

    Mark一段自己写的添加节点的代码 function reply2(){ $( "<div class=sec1-div5>"+"<div class= ...