工作流 - 技术备忘录

几年前做个工作流相关的一些工作,感兴趣的也可参考一下,说明一下,这是几年前的,后期只是作为OpenExpressApp的参考。

本文档是工作流设计部分的关于技术选择和实现的一些过程的记录,以便说明选择的依据以及提供给后续设计的参考。以下内容主要涉及单据审核技术。

平台为什么要做工作流

因素
  • 用户需求
  • 技术考虑
分析

业务角度

满足用户的多级审核要求。实际业务中,不管是预算人员、材料人员、技术人员等所处的工作流程中都会涉及到工作流程,在越众的广州丽岛翠堤项目中对于一般材料出库的流程入下图所示:

121109_0631_1.jpg

此流程中涉及到多个岗位之间工作的审核步骤,这些流程实际发生,但不能在以前应用中体现,用户也提出过此类需求。

目前项目部一般都处在同一办公地点,交流比较方便,所以人工纸张审核仍有效,但如果以后涉及到项目组和公司之间审核的电子化则按现在实施方式将不能进行,所以实现流程化将有利于以后后续的业务需求。

技术角度

在底层提供一个工作流的平台将有利于抽象对流程的设计和处理,可以统一处理工作流程的设计、部署、执行、监督等步骤,而不需要对每个流程单独处理。另一方面,工作流的实现也可以适用在代码处理逻辑上的流程,对于定制规则和流程都有很大用处。通过图形化的流程设定可以更好的提供平台支持。

121109_0631_2.jpg

平台提供的工作流是什么

因素
  • 对平台的支持
  • 易用
  • 可扩展
分析
  • 不仅满足多级别审核需要,也可应用在商业流程自动化逻辑流程上
  • 提供图形化流程设计器的拖拽能够简单的定义工作流程,并可在任何时间查看流程执行当前的情况
  • 通过对流程提供的Activity扩充,可以扩展流程中可以提供的功能,第一阶段支持单人、多人、条件分支、邮件通知
  • 审核流程与业务单据低耦合,可以方便的和单据关联

工作流引擎产品的选择

因素
  • 审核流程实现的可行性
  • 开发的扩展性
  • 费用问题
解决方案

构建在微软的下一代开发平台的WinFX中的WWF技术上

分析
  • 微软WWF开发框架提供了工作流引擎、.Net-managed API、运行时服务以及与VS2005集成的可视化编辑器和调试工具,完全可以实现多级审核流程。
  • 可以通过其提供的设计时支持开发开发自己的流程设计器,获得更好的用户体验
  • WF不仅提供了以往的人力工作流引擎,还可以支持用户界面页面流和面向服务的应用程序、商业流程自动化以及系统管理流,可以在此基础上二次开发更多应用
  • 不需要自己开发引擎部分,减少了机会成本。目前在WF上进行开发不需要任何费用,个人预计正式发版后也不需要费用
考虑过的备选方案
  1. 自主开发

在还没有深入分析WWF之前考虑自主开发一套工作流子系统,但如果开发一个完整的工作流平台需要占用较多的人力资源和时间。WFW实现了我们希望做的所有功能,而且做的更好。

审核流程功能实现范围

因素
  • 需求
  • 易用性
  • 实现难易程度
  • 时间
解决方案

重点内容

工作说明

自定义Activity

通过工作流提供的Activity与系统组件进行交互

  提交

一旦接受到提交事件则启动流程执行到审核步骤

  单人审核

指定某个人对提交的单据进行审核

  多人审核

指定一群人对提交的单据进行审核,分为以下情况

     同时执行

每个人同时执行当前任务

     依次执行

依照指派顺序依次执行当前任务

  邮件通知

通过邮件通知收件人

  条件分支

可以通过条件表达式确定流程分支的走向

流程设计器

通过图形化界面拖拽生成流程定义

  流程设计控件

提供流程定义容器,可以加载流程定义和定义流程活动

  流程设计器

使用流程设计界面,提供用户流程设计界面

工作流服务

  

  持久化服务、跟踪服务、Web模块

采用WWF提供的默认服务

  业务和流程交互接口

通过提交、审核接口使得业务系统与工作流系统进行关联,通过触发接口方法使得流程运转到流程定义的下一步活动

Web服务

  

  流程触发

提供提交、审核通过、审核不通过方法

  流程状态图形

获取某一工作流程的执行情况的图形表现

数据库设计

持久化工作流子系统的数据

  流程表

记录一个工作流程的基本信息,包括启动结束时间、启动人、流程状态等

  工作任务表

记录工作流程每个审核步骤信息,包括启动、结束时间、活动状态等

与各子系统接口

重点内容

工作说明

组织机构

通过组织机构提供的API获取人员、组织选择,指定工作流程执行者

权限子系统

通过权限子系统限定流程创建者、提交者、审核人的权限

界面引擎

通过界面引擎显示流程中指定的单据

表达式引擎

通过表达式应用在流程中确定流程的运行分支

留待扩展实现

重点内容

工作说明

完善数据库设计以及提供工作流API

  

  WfWorkflow的实现

工作流状态信息表,由此提供当前单据提交者、单据审核状态等

  添加额外数据

  

自定义Activity

通过工作流提供的Activity与系统组件进行交互

  多人审核

指定一群人对提交的单据进行审核

     单人审核

指定某个人对提交的单据进行审核,内置邮件通知、审核不通过是否结束流程等

     一人独占执行

第一个处理的人处理完后其他人将不能再处理

  流程回转活动

根据条件可以从单前活动中跳转到以前执行的步骤

  手机短信通知

发送手机短信通知

流程设计器

通过图形化界面拖拽生成流程定义

  流程设计器

提供用户友好的流程设计界面

活动规则

流程运转中应该遵循的规则

  时间规则

  • 代表一个流程任务什么时候开始。比如,可以在流程发起后等待2小时再开始这个流程任务,或者当某个流程变量为真的情况下,再等待2小时开始流程任务。
  • 指定工作日

  过期规则

如果希望某些任务必须在一定时间内完成,比如8小时,如果超过8小时任务依然没有被执行,我们必须执行一定的操作(比如:发邮件催办,或者强制本任务过期并且将流程流转到某一个流程节点等)

  安全与权限规则

通过权限子系统限定流程创建者、提交者、审核人的权限

  执行人规则

  • 第一个打开文档的执行者获取执行权
  • 当前任务最少的人获取执行权

  多人审批后置规则

是一个逻辑表达式,当它为真时,某个流程节点才可以完成。换句话说就是:什么情况下流程节点才可以结束。比如:有一个审批任务,需要同时发给5个部门经理作审批,我们希望:只要他们中的一个不同意,流程就执行下一步操作(否决后的操作);至少有3个部门经理同意,流程就流转到下一步操作(同意后的操作)。

  单人审核时可动态添加审核活动

可以动态在已定义流程上添加审核步骤

报表支持

通过报表引擎建立与工作流相关的报表

其他工作流系统的需求

  

与各子系统关系

参见文档《工作流对平台各子系统的需求

流程图形化实现

因素
  • 易用、美观
  • 实现时间
解决方案

封装WWF本身提供的图形设计时支持,在C/S下进行流程设计(通过ClickOnce进行网络部署)或者通过ActiveX在网页中显示,监控流程图形可以通过图片形式展现

分析
  • 由于基于WWF开发,开发的图形存储也要基础WWF格式,自己实现一套图形化需要较长时间
  • WWF提供的图形化界面布局不能自己随意控制,但是足以清晰的表现流程,使用起来还是比较方便
  • WWF本身提供了设计时支持,包括一些序列化的API都已经提供
考虑过的备选方案
  1. 采用Netron开源图形项目进行图形处理:时间因素和在技术上需要实现很多内容
  2. 采用VML在网页形式下开发:在网页上可以操作浏览,但是界面表现能力不强

审核工作流程设计

解决方案
  • 实现提交、单人审核、多人审核、邮件通知Activity,支持条件分支,不支持流程回转。
  • 对于多人审核根据审核人列表和审核类型动态生成一系列单人审核活动

多人审核Activity设计

因素
  • 能方便的设计流程
  • 满足同时审核、依次审核、一人独占执行功能
解决方案
  • 封装一个多人审核的Activity,实现同时审核、依次审核功能,内部处理审核信息的存储和多人审核结果的合并工作
  • 动态生成多个单人审核活动(此步骤由工作流程完成),单人审核的审核结果同步到工作流程参数中,以便进行满足合并同时审核类型的审核结果
  • 如果审核人员列表为表达式,则由表达式引擎子系统确定审核人员列表
考虑过的备选方案
  1. 初期迭代本来还想实现一人独占执行类型,本来考虑采用ListenActivity,但是由于封装的单人审核不满足ListActivity子活动要求,如果需要实现以后可以考虑使用ConditionedActivityGroup,给每个人添加阈值达到满足哪些人提交审核通过就算通过的情况

分支Activity设计

解决方案
  • 采用IfElseActivity活动,使用CodeCondition进行分支条件处理。由工作流代码提供Code模板进行编译
  • 为了简便,使用活动的Description属性编写表达式。根据此来重新生成xoml文件
  • 表达式解析由表达式引擎负责
考虑过的备选方案

目前使用IronPython进行表达式解析,对于最终用户不够友好

动态更新设计

解决方案

在工作流程添加一个动态更新办法,由多人审核活动内部通过反射机制调用来达到动态更新效果

考虑过的备选方案

在多人审核Activity中自己处理动态流程,但是WWF本身为了简单升级后不允许更新自定义的复合Activity,导致不能按照预先的想法实现

流程监控界面效果

解决方案
  • 仍旧采用工作流程设计控件处理,添加DesignerGlyphProvider显示活动执行状态效果
  • 同时显示多人审核以及由多人审核动态生成的单人审核活动
考虑过的备选方案

显示每个审核步骤审核结果而不只是状态,不显示由多人审核动态更新的单人活动,但是由于实现起来需要时间,所以暂时先不实现

数据库设计

解决方案
  • Tracking服务和持久化服务采用WWF提供的数据库模板
  • 工作流子系统本身提供两张表,一张记录工作流状态信息,一张记录工作任务状态信息

WfWorkflow 工作流表:

字段

类型

说明

ProcessID

GUID(主键)

工作流实例标识

Status

工作流程实例状态

Completed = 2     完成
Idle = 3          空闲
Terminated = 10   中止
Changed = 12      动态变化  

CreateTime

Datatime

流程创建时间

CloseTime

Datatime

流程结束时间

WfTask 工作任务表:

字段

类型

说明

TaskID

整形(主键)

活动标识

ProcessID

GUID

流水号,与WfWokflow的ProcessID关联

ReviewInfo

XML

提交人

ReviewerID

字符串

审核人标识,由组织机构子系统确定具体格式

Status

整形

Executing = 1 进行中
Closed = 3    任务执行完毕

CreateTime

Datatime

任务创建时间

CloseTime

Datatime

任务结束时间

存储过程

字段

输出参数

说明

InsertWfTask

TaskID int OUTPUT

插入任务项记录

UpdateWfTask

  

更新任务项记录

ReviewInfo Schema:

元素

说明

SubmitInfo

提交信息,包括提交者、提交文档标识,由界面引擎决确定文档标识uri具体内容,目前uri设计是假定在界面引擎基于表确定界面

Items

审核信息,记录流程中每个审核步骤的结果。一个流程的后续审核步骤的Items信息包含前一活动此元素的所有信息,也就是说后续流程人员能够看到前续流程的所有审核记录

121109_0631_3.gif

工作流 - 架构描述

 

欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]

转载于:https://www.cnblogs.com/zhoujg/archive/2009/12/11/1621906.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
宏天BPM X3软件平台是一个易于部署和使用的新一代业务流程管理平台,能够以最快的速度帮助您梳理、设计、执行、监控分析和优化业务流程,从业务和IT相结合的完美视角为用户组建长期而久远的卓越BPM流程管 理架构。通过实施BPM方案让您的企业在运营效率、透明度、控制力和敏捷性方面迅速受益。 BPMX3是基于J2EE开源、轻量级的企业业务开发平台,基于代码重用、组件重用、业务逻辑重用、组装重用,结合快速开发平台中的工具,将开发人员从重复的代码编写中解放出来,把更多的精力集中解决客户的业务逻辑处理上。 BPMX3是支持流程管理、监控、优化、再造的全套IT管理开发平台,并且集单点登录、企业单位门户、业务流程管理、开发、整合、业务分析及重构等多重职能于一身的软件开发工具和企业IT架构平台。 BPMX3是企业管理业务的创新关键,可以帮忙用户更科学、更有效管理企业业务的各个环节,企业通过BPMX3可以明显实现业务的高效运营。同时,由于其架构的开放性,采用业界开放性的技术及流程标准,使其能够成为企业SOA架构的流程基础平台及开发平台,越来越多的企业更偏向采用开源的平台来解决其内部的信息化平台的要求,BPMX3却允许更多的平台系统接入及自身扩展更多的功能,以满足更多的企业不同的个性化的需求,以达到最大满足最终的客户使用要求。 【图一】工作流引擎中心 1.BPMX3的特点 1.是一个开放式、轻量级的开发平台 2.BPMX3多层系统架构 3.基于模板代码生成 4.丰富的报表展示 5.跨数据库的数据访问支持 6.简易的前端使用 7.参照最新的BPMN2标准设计 8.满足中国特色流程需求 9.在线的可视化流程设计、可视化的流程监控 10.完全独立的流程引擎服务,可与其他系统无缝集成 11.基于流行的JAVA 流程引擎Activiti 5.8扩展 12.灵活的在线流程定义 13.灵活的嵌入式部署、独立部署 14.灵活的在线表单定义及版本管理(支持按内表及外部表及视图生成表单) 15.灵活的第三方表单集成 16.开放式的流程体系 17.灵活的组织结构支持 18.流程的导入与导出 19.子流程支持 20.流程任务逐步回退处理(任务追回及多驳回 ) 21.流程自由跳转 22.流程跳转业务规则设置 23.多级分发任务与任务汇总 24.会签(并行与串行)、补签及投票处理 25.流程版本变更管理 26.流程催办(基于MQ短信及邮件设置) 27.流程任务的工作日设置(用于统计流程任务执行效率) 28.任务监控管理 29.流程委办、转办 2.BPMX3多层架构 系统采用多层的系统架构进行功能开发,有利于代码功能责任分开,同时有利于不同开发人员的分工及合作,也有利于代码的单元测试。系统总体结构如下图所示: 【图二】BPMX3多层架构 •数据访问层Dao: 负责与数据库交互 •业务处理层Service: 负责系统的所有业务逻辑处理 •数据控制层Controller: 负责系统的页面数据准备及跳转处理 •视图层View :负责数据的展示处理 整合的开源技术 1.Spring Core 3.0.4 2.Spring MVC 3.0 3.Spring Security 3.0.5 4.Spring AOP 3.0.4 5.Apache Active MQ 5.5 6.MyBatis 3 7.CKEditor 3.6 8.JQuery 1.8 9.CXF 2.0 10.Alfresco Activiti 5.8 11.Compass + Lucene 12.JasperReport 4.5 13.JavaMail 14.Other: Log4j,Velocity,Sitemesh,Jfreechart,Jforum,Solr 15.Maven 2 3.BPMX3的组件构建方式 BPMX3同时也是基于组件构构建,整个系统的构建如下所示: 【图三】BPMX3组件构建 系统提供在线流程设计器,在线表单设计器,代码生成器,结合BPMX3的基础组件,以实现复杂的流程业务应用。基础组件包括: Spring基础组件库,报表引擎,数据库访问模块,短信模块,后台定时任务调用组件,短信访问组件,搜索引擎组件,JMS消息组件,Activiti工作流组件,Cas统一用户认证组件,Spring安全认证组件。 4.BPMX3总体功能 1.多系统管理 BPMX3支持多个业务系统同时运行及切换处理,根据不同的用户授权允许用户进入不同的系统进行访问,而不同的业务系统的开发可以基于BPMX3平台上开发,也可以由其他开发框架开发再与BPMX3做整合。这种模式非常适合企业把BPMX3作为其内部的首先开发平台,以使后续的新应用系统都整合在一起进行管理及使用。 【图四】多系统管理 2.用户管理 BPMX3提供多种维度的用户人员管理,以支持各种类型的组织机构及人员的统一管理,目前可以支持内部组织、外部组织 、虚拟组织。而且还提供用户的属性自定义,允许对用户进行多种属性的扩展,以支持工作流中的任务节点的人员的复杂查找计算。 3.系统安全管理 系统的安全管理由Spring Security 3提供配置及管理,非常容易与第三方的用户或认证平台进行整合,如与CAS服务器作统一认证,只需要加上新的配置模块即可实现,不影响系统现有的功能模块。大大满足了各种不同系统的安全管理认证的需要。 同时系统可以支持URL访问权限、数据权限、列权限及页面按钮权限的统一配置管理。系统的安全认证机制如下所示: 【图五】系统安全拦截原理 4.动态表单管理 BPMX3提供了基于数据库内部表、外部表、视图等来生成在线的流程表单的功能,其生成是基于模板模板可由开发人员进行自定义,也可以采用BPMX3提供的默认模板。生成的表单后,系统管理员还可以对表单进行编辑管理以实现企业的业务要求,其中,还允许开发人员在表单上编写编写脚本,以实现更复杂的应用。 表单上支持系统中的大量组件,如角色选择,用户选择,角色选择,在线表单,套红在线Office表单,签章表单等。系统开发人员几乎不用作任何开发,可以设计出任何复杂的表单应用需求。 表单上支持系统中的大量组件,如角色选择,用户选择,角色选择,在线表单,套红在线Office表单,签章表单等。系统开发人员几乎不用作任何开发,可以设计出任何复杂的表单应用需求。 【图六】在线动态表单 5.流程管理 BPMX3提供了基于BPMN2标准的流程管理,包括流程版本变量,流程节点表单设置,表单的权限设置,流程任务通知,催办,代办,转化,并行会签、串行会签、补签,子流程,同步任务,多实例任务,人工任务、消息任务、邮件任务等,任务多级分发与汇总、任务追回、任务层层驳回,任务自由跳转等中国特色的流程需求。能满足企业复杂的流程应用需求。 BPMX3在流程管理上,不但能结合在线设计的复杂表单,还能结合本系统或其他系统其他模块的功能表单一起进行业务审批的工作。这大大方便了业务流程在所有的系统中进行流程开发的工作,简化了以往开发流程业务的代码固死的做法,把程序员或业务员真正从流程业务中解放出来。 【图七】在线流程管理 【图八】在线流程设计 6.报表管理 系统的报表管理是基于模板来进行设置管理的,目前支持FineReport及Jasper Report两种报表引擎,前者是商业报表,其功能非常强大,可以实现多样式数据呈现方式,支持HTML、PDF、EXCEL、Word、TXT、Flash样式呈,能完美解决中国式报表难题,无论数据库内原始数据是以何种样式的表结构存储,无论最终用户要求数据以何种表格样式显示,FineReport报表软件独创的多数据源关联查询、公式动态扩展计算等强大的功能,在无需改变表结构,无需改变用户的要求的基础上,完全按照用户的需求制作出报表模板。 【图九】报表管理 7.系统基础组件 系统的基础组件如用户模块一样,是系统的业务功能的基础,在其他业务模块中被大量使用。 ◦定时任务管理 通过配置以实现某时刻重复执行的系统任务,如配置每月最后一天进行库存清算任务,并且启动库存清算审批流程。 ◦系统日志管理 记录进入系统中的每个用户访问的每个功能 ◦数据源管理 可以设置多种数据源,为在线表单设计及展示提供数据来源 ◦资源管理 管理系统的所有资源,包括URL,业务方法等,提供给安全管理进行极限配置 ◦流水号管理 用于产生业务的一些处理流水单号 ◦数据字典管理 用于管理所有的业务中常用的数据字典的数据 ◦附件管理 管理系统中所有的上传附件。 ◦桌面管理 管理用户的桌面布局及常用的功能展示 ◦邮件、短信模板管理 用于配置系统的发送邮件、短信的模板 ◦工作日历管理 用于配置系统的工作流的待办事项的处理工作时间的计算处理 ◦动态脚本管理 用于为流程任务节点或事件中可被调用的逻辑计算代码 ◦短信收发管理 基于USB短信猫的短信模块或短信网关,以实现收发手机短信功能。 ◦外部邮件管理 支持POP3,IMap协议的邮件服务收发功能,允许用户设置多个外部邮箱。 ◦内部短消息收发管理 在系统中用户之间可以收发短消息,如工作流任务的通知也采用短消息进行实时提醒。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值