-
2015-11-26 10:31:33
随着需求的不断延伸以及人们对企业信息化思想的不断普及,工作流越来越受到企业内部的使用推广,虽然工作流主要功能国内比较知名的工作流软件基本上都具备,但功能的侧重点各不相同,增加了企业对工作流或BPM选型难度,本人选用目前国内市场主流专业的工作流软件,从概念、工作流引擎、工作流过程建模工具、流程操作、工作流客户端架构、流程监控、表单设计器以及与应用程序的集成等方面进行分析和比较,帮助企业对工作流或BPM产品的选型。
一、概述:
工作流的思想最先起源于西方国家,一开始的目的主要是为了简化工作流程,为繁琐的工作提供依据。随着需求的不断延伸以及人们对企业信息化思想的不断普及,工作流越来越受到企业内部的使用推广,当然,工作流能满足的需求也在不断的优化。
工作流概念起源于生产组织和办公自动化领域,是针对日常工作中具有固定程序活动而提出的一个概念,目的是通过将工作分解成定义良好的任务或角色,按照一定的规则和过程来执行这些任务并对其进行监控,达到提高工作效率、更好的控制过程、 增强对客户的服务、有效管理业务流程等目的。尽管工作流已经取得了相当的成就,但对工作流的定义还没有能够统一和明确,不同学者从不同角度对工作流做出了不同的定义。
Georgakopoulos给出的工作流定义是:工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成。
IBM Almaden Research Center将工作流定义为:工作流是经营过程的一种计算机化的表示模式,定义了完成整个过程需要的所有参数;这些参数包括对过程中每一个步骤的定义、步骤的执行顺序和条件、步骤由谁负责以及每个活动所需要的应用程序等。
1993年工作流管理联盟(Workflow Management Coalition,WfMC)作为工作流管理的标准化组织而成立,标志着工作流技术逐步走向成熟。WfMC对工作流给出定义为:工作流是指一类能够完全自动执行的经营过程,根据一系列过程规则,将文档、信息或任务在不同的执行者之间进行传递与执行。
工作流从英文单词workflow而来,是工作work和流动flow的组合,是一种能够被计算机解释和执行的反映经营过程业务流动的计算机化模型。二、BPM与工作流的区别
简单地说,BPM关注的业务流,工作流关注的是审批流,它们的区别如下:
1、业务流往往会跨多个业务系统,而审批流往往主要涉及到一个系统。
2、业务流往往会涉及到多个业务功能,多个业务对象,而审批流往往只涉及到一个关键业务对象。
3、业务流涉及到的是不同业务单据之间的流转,而审批流往往是同一业务单据状态的变化。
4、业务流中的活动既包括了人工活动也包括了自动的业务活动,而审批流一般为人工审批活动。
对于流程建模,BPM关注的是业务流程建模,而工作流关注的是审批流建模。BPM建模需要考虑业务人员对建模需求和可用性,但是不可避免又导致建模的内容无法很好的落地。而工作流建模本身已经细化到一个功能模块中的审批流,相对来说简单很多而容易实施执行。
BPM业务流程往往跨越了业务系统,跨越了多个业务单据,需要处理不同的业务规则和逻辑。而工作流活动节点往往仅仅处理审批和会签任务,和外界交互相对较少。
BPM业务流程建模中会出现业务规则,而常规的工作流处理方式一般支持脚本代码进行简单业务规则的处理,BPM为了保证规则本身的复用性和独立维护性,引入了规则引擎,规则引擎形成统一的规则创建和维护库,BPM本身不再负责规则的创建和维护,而仅仅是按需消费.
BPM重点是流程整合,而流程整合是多个业务系统中多个业务功能模块之间的协同,如果一开始想用BPM去实现这些业务功能,那么往往是适得其反,BPM切入的第一步仍然是在于跨业务系统的流程集成,而流程集成重点又在于流程间的数据传递。知道这个重点后BPM的关注点应该放到流程协同和监控上,而子流程或某个独立的业务模块实现仍然在原有的业务系统中,通过端到端流程整合实现了业务模块之间的系统,这个一方面最大限度的利用了已有的IT资产,又实现了流程整合的需求。
三、工作流平台及厂商的层次分类
工作流平台分为两种:一种是快速开发平台,一种是业务平台(或者提供相关的业务套件)。
快速开发平台主要包括了电子表单、一套开发框架还有为宣传所需要的ESB和SOA设施。
业务平台则包括了文件管理、在线编辑、即时通讯、电子印章、门户、内容管理、人力资源、客户服务、行政管理等套件/模块。 与单纯的快速开发平台相比,业务平台显然站在了一个更高的层次上。在软件开发中,最大的浪费往往并不在于技术本身,而是在于对业务的不熟悉,在于核心领域模型的频繁变动。对用户而言,根据需要选择合适业务平台和相关服务无疑能够产生最大的价值。
为什么有的厂商提供快速开发平台,而有的厂商提供业务平台呢?这取决于两个方面,一是厂商切入工作流市场的年限,年限越长,越积累有丰富的项目经验,这些经验很容易转化成业务套件;二是厂商的客户定位。
根据上面的讨论,我们不难将工作流厂商分为3类:
1、只提供工作流产品。这类厂商产品单一,尽管产品质量能够得到保证,但是发展最为困难。
2、提供工作流产品和快速开发平台。这类厂商在工作流的基础上提供开发框架进一步简化编程,相比第一类厂商会更有竞争力,但是其发展受到系统集成商的限制。同时需要注意的是,部分厂商着力点在于开发平台,工作流产品水平非常一般甚至初级。
3、提供工作流产品和业务套件/平台,同时自己接项目。这是目前生存状态比较好的厂商,多是老牌厂商或是有充足的资金。业务套件/平台能够给用户提供最大的价值。在任何时候,直接面对最终用户都是王道。
选择提供工作流相关业务套件(如同时提供门户、协同OA产品的)的厂商一般来说实施的风险相对较小!
四、主流工作流厂商分析比较
本人选用了国内市场主流的工作流软件厂商:博汇数码、上海携创软件、东方易维、西安协同、炎黄动力、北京博皓科技等进行对比分析,从是否符合工作流标准,快速开发能力,集成能力,自动化测试能力,开放性,负载均衡能力,是否支持移动审批七个维度进行对比分析,帮助企业对工作流或BPM产品的选型提供参考。
厂商名称
符合工作流标准
快速开发能力
集成能力
自动化测试
开放性
负载均衡
支持移动审批
博汇数码
符合
良
弱
不支持
一般
不支持
不支持
上海携创软件
符合
一般
弱
不支持
一般
支持
不支持
东方易维
符合
良
良
不支持
一般
不支持
支持
西安协同
符合
优
弱
不支持
一般
支持
不支持
炎黄动力
符合
良
良
不支持
良
不支持
支持
符合
优
优
支持
良
支持
支持
总结:
1、通过以上分析,国内工作流产品基本遵循WFMC标准或其它工作流标准,但各个厂商的功能侧重点不一样。
2、快速开发能力主要从可视化流程模型设计、可视化表单设计、表单控件的丰富程度、逻辑封装能力、用户操作的便利性等方面进行比较分析,在这个维度上,西安协同和北京博皓科技表现突出,它们对流程元素进行了比较深度的封装、支持多种表单设计、控件丰富程度较高。
3、集成能力主要从与OA系统、SAP系统、ERP系统、CRM系统等业务系统的集成能力以及集成架构、业务对象组合、高可用性和高复用性等方面进行对比分析。国内厂商普通集成能力较弱,北京博皓科技在集成能力上表现突出,封装了对SAP、SharePoint等业务集成,支持业务对象重新组合,在高可用性和高复用性方面表现较好,其它厂商大多还停留在WebService的调用层面。
4、自动化测试,如果人工对流程进行测试是非常费时费力,而且流程一旦改动,又得从头做一遍,工作量巨大,是否有流程仿真功能是工作流软件选型的一个重要标准,在这个维度上,只有北京博皓科技一家符合。
5、在开放性方面,是否提供丰富和友好的二次开发接口、数据库及WEB程序的开放程度会直接影响到用户将来的IT投资回报,否则一有改动就必须严重依赖厂商,是工作流软件选型的一个重要标准。这方面,炎黄动力和北京博皓科技表现较好。
6、系统的性能毋庸置疑是影响到系统是否能够成功实施的一个重要因素,本人主要从是否支持负载均衡、是否能够归档、剥离时间较长的业务数据、架构的清晰程度等方面进行了对比分析。
7、移动办公是将来的一个大趋势,是否支持移动审批,既显示了厂商的技术前瞻性,也彰显了厂商的技术实力,即使用户暂时用不到移动审批,但也是考量工作流厂商的一个隐性维度。
五、工作流应用范围
工作流管理软件应用到实际工作中的应用广泛,具体有:
- 在关键业务流程中,可以负责订单处理、报价处理、采购处理、合同审核、客户电话处理、供应链管理等工作;
- 在行政管理上,可以提供出差申请、加班申请、请假申请、用车申请、各种办公用品申请、购买申请、日报周报等凡是原来手工流转处理的行政表单;
- 在人事管理上,可以对员工培训安排、绩效考评、职位变动处理、员工档案信息等进行有效处理;
- 在与财务相关方面,它能够处理付款请求、应收款、日常报销、出差报销、预算和计划申请等;
- 在客户服务方面,它可以提供客户信息管理、客户投诉、请求处理、售后服务管理等方面的管理;
- 在特殊服务方面,可以实施ISO系列对应流程、质量管理对应流程、产品数据信息管理、贸易公司报关处理、物流公司货物跟踪处理等各种通过表单逐步手工流转完成的任务。
更多相关内容 -
表单式工作流功能模块设计方案
2021-08-26 13:48:41最近一个项目中需要独自设计一个表单式工作流功能模块,在此将整个功能模块的设计思路分享出来。最近一个项目中需要独自设计一个表单式工作流功能模块,在此将整个功能模块的设计思路分享出来。
文章目录
1. 需求及分析
此处所有的需求是建立在医院临床信息管理系统之上的。这里只分析关于表单式工作流功能模块的需求。
关于表单式工作流功能模块的需求全部整理如下:
- 1.一个患者在不同时期要填写的表单不同。
- 2.每个患者的手术类型不同,也就意味着,每个患者的各个时期可能都不相同。
- 3.每个时期需要单独填写多张表单,相同时期要填写表单的相同。
- 4.在每个时期要填写的其中一张表单中,可能一条患者信息对应一条记录,也可能一条患者信息对应多条记录。比如在手术期的一张检查表单中,一条患者信息只对应一条记录,但是术后期的一张检查表单中,可能会有手术后30天的情况,也会有手术后60天的情况,也就是一条患者信息对应多条记录。
- 5.对于某一个患者,要能单独的处理它的工作流(也就是不同时期的表单)。
- 6.对于某一个时期,要能单独处理在这个时期的所有患者信息。
- 7.对每张表单要有增删改查操作,在每个时期,都要能通过各种方式查询患者的信息。
针对这些需求,对整个工作流功能模块初步的想法大概是这个样子:
- 1.每位患者可以绑定一个工作流程,称为表单式的工作流。
- 2.每个流程由若干个节点组成。
- 3.医生在一个时期处理完所有的表单后,点击完成该流程节点即可进入下一流程节点。
- 4.医生还可以修改一个患者已经完成的流程节点的数据,但是无法查看还未达到的流程节点的数据。
2. 功能实现分析
上述要实现的表单式的工作流跟oa系统中的工作流不大一样,oa系统中的工作流一般是这样几个步骤:
- 1.设计流程。上级设计一种办事的流程,其中包含若干个节点,一个节点代表着一个审批人,所有节点审批都通过后才算完成,一个节点不通过,就会被打回。
- 2.发起流程。由普通员工发起一个流程申请,发起后,员工无法修改这张表单,随后这张表单会跟随流程一级一级审批。
- 3.流程审批。有若干上级审批流程,点击审批通过,该表单就会进入下以流程节点,点审批失败,流程会终止或者打回。
- 4.流程通过。所有流程通过之后,会得到流程通过的凭证,就可以拿着这个凭证去处理相关的事情。
整个oa系统的工作流功能的核心就是多级审批机制,但我们需求中的表单式的工作流,并不设计审批机制,整个工作流的功能可以简单理解为:一条患者信息选择流程后会在各个时期不停流动,在一个时期需要填写非常多的表单,这些表单填写完成后,医生点击进入下一流程,患者信息即可进入下一流程,但是这条患者信息已经留在了每个时期的表单中,医生仍然可以查看和修改这条信息。
oa式的工作流的实现非常复杂,市面上也有商业化和开源的工作流框架和引擎,但是针对我们这个需求来看,如果硬加使用,只会使整个业务更加复杂,因此,最好的办法就是自己设计一种简单工作流机制,实现上述全部的需求。
3. 工作流结构设计
根据上面的需求分析和功能实现的分析,设计的整个工作流结构如下:
- 每个工作流包含若干个节点。
- 每个节点包含基本信息和若干个表单。
- 每个患者绑定一个工作流,患者在每个工作流节点需要处理多张表单。
4. 数据库设计
4.1 总设计思路
根据上面的分析,总的设计思路如下:
- 每个不同的时期有一张主表,主要记载患者的id,每当有患者信息到达该节点时,记录患者的id,一共有两种方式记载。两种方式各有好处。综合考虑还是第1种方式最好。
- 1.只记载患者信息的id。
- 2.记载同步记载所有患者信息。
- 不管使用哪种方法,都需要将患者的id作为主表的主键,这样方便查询子表中的信息。
- 如果使用第1种方法,那么每张主表中其实主要就是吧包含主键。但在每个时期,都需要联合患者表一起查询数据。
- 如果使用第2种方法,那么每张主表需要同步患者的所有信息,且不管在哪修改了患者信息,都需要在所有主表同步患者的消息。
- 每个时期的若干小表都是主表的子表,包含该小表需要填写的所有数据字段,外键是主表的id。
- 流程节点表中绑定一张主表。
- 这样设计的好处就是,在每一个流程节点处,还能看到许多该流程节点的其它信息。
- 工作流表绑定若干个流程节点。
- 一个患者绑定一个工作流,并且存储当前节点,下一节点。
4.1 各时期主表设计
各时期的主表主要干的事情就是存储患者信息的id,代表着患者正处于当前流程节点或者已经完成该流程节点。
患者id模式
- 这种模式很简单,基本上不需要什么字段。
字段 说明 id 患者id … 权限管理需要的其它字段 同步所有患者信息模式
- 这种方式需要同步主表的所有字段。
字段 说明 id 患者id … 患者表所有字段 4.2 每个时期的若干小表
存储基本信息,关键是外键是主表的id。
字段 说明 id 唯一id … 所有数据字段 4.3 流程节点表
主要是绑定主表,还可以添加一个时期的额外数据,比如一个时期的表单填写提示。
字段 说明 id 唯一id master_table 主表名称 … 权限控制相关字段 … 该时期的其它数据字段 4.4 工作流表
在工作流表中绑定多个工作节点有两种方式:
- 1.根据最多节点数目设置若干个节点字段,存储流程节点的id。
- 2.设置一个字段,字符串拼接的形式,存储所有流程节点id。
同样,两种方式各有好处:
- 使用第1种方式,需要需求中最多节点个数完全确定,才方便设计合适的字段。
- 使用第2种方式,可以存储任意个节点,但在拿出处理的时候有些麻烦。
一个字段模式
字段 说明 id 唯一id process_name 工作流名称 process_des 工作流描述 process_ndoes 所有节点id … 权限控制相关的其它字段 多个字段模式
- 其中哈希值主要用来工作流判重。
字段 说明 id 唯一id process_name 工作流名称 process_des 工作流描述 node_num 节点数目 process_hash 工作流哈希值 node1 节点1 node2 节点2 node3 节点3 … 若干节点 … 权限控制相关的其它字段 4.5 患者表
患者表中和流程相关的一共三个字段:工作流id,当前节点id,下一节点id。其中存储下一节点id的做法类似单链表。
字段 说明 id 唯一id process_id 工作流id current_node_id 当前节点id next_node_id 下一节点id … 所有数据字段 5.接口设计
5.1 针对工作流节点的接口
-
1.新增工作流节点。
- 需要保证工作流节点所绑定的主表id和名称是唯一的。
-
2.修改工作流节点。
- 如果修改了工作流绑定的主表,先要判断这个节点所在工作流是否被患者绑定,如果绑定了,那么将无法修改主表。
-
3.删除工作流节点。
- 需要保证该节点未绑定任何工作流。
-
4.查询工作流节点。
- 查询该节点的所有数据。
5.2 针对工作流的接口
-
1.新增工作流。
- 需要保证工作流节点不重复,重复就会出错。
- 需要保证节点数大于0.
- 需要保证整条节点链表不重复。
- 如果是多字段模式的,还需要检验是否依次填写节点。
-
2.修改工作流。
- 如果已经有患者绑定了工作流,那么将不能修改工作流的节点。
-
3.删除工作流。
- 如果已经有患者绑定了工作流,那么将不能删除工作流的节点。
-
4.查询工作流。
- 查询工作流的所有字段。
5.3 针对患者的接口
-
CRUD操作略。
-
查询患者流程信息。
- 需要获取患者所处流程的所有节点信息。
- 需要判断哪些节点已经完成,正处于哪个节点,哪些节点还未到达。
-
患者流程通过。
- 患者的信息将会插入下一节点对应的主表。
- 修改患者当前节点,下一节点。
6. 前端页面设计
6.1 针对化患者信息处
- 在操作一栏中能够处理患者的流程。
6.2 患者流程处理处
6.3 具体时期处
7.其它
这种表单式工作流的设计,理论上是可以抽取出来成为一个独立的框架,待日后有时间精力再去尝试。
ATFWUS 2021-08-26
-
C#完整工作流系统源码(vs2005)
2009-09-03 16:07:13一个基于WEB技术的工作流管理系统的设计与实现,提出了一种将工作流技术应用于企业的工作流管理系统的通用架构,阐述了经典petri网调度算法在工作流引擎中的应用与实现,分析并实现了工作流引擎对三种常见的流程模型... -
工作流系统开发之二十二 dotnet版工作流引擎
2016-10-14 19:25:44工作流管理系统为实现流程的自动化,必须包含一个工作流引擎,工作流引擎负责流程的定义,解释和运转。流程引擎是对业务流程的一个抽象,因此工作流引擎的设计模型是决定流程功能的重中之重,将直接影像流程的各个...工作流管理系统为实现流程的自动化,必须包含一个工作流引擎,工作流引擎负责流程的定义,解释和运转。流程引擎是对业务流程的一个抽象,因此工作流引擎的设计模型是决定流程功能的重中之重,将直接影像流程的各个环节。
一套工作流管理系统还包含很多个必须要实现的部分,如:事件处理,任务处理,组织机构的适配,自定义表单等等。以及很多中国式的“动态会签,回退,自由流”等等变态需求。但抛开这些,只关注每个流程的最基本的部分,即解决一个过程运转的问题,从一个环节到另一个环节,使得流程能够运转起来。这应该就是流程引擎要实现要关注的基本问题,即流程引擎的抽象。
工作流引擎模型有很多种,FSM、PetriNet、EPC、Activity Diagram等等,不论采用那种流程引擎模型,最终都需要能将业务流程用流程引擎的符号或元素表述出来。
我们公司的eworkflow自定义工作流系统dotnet版,流程引擎采用C#语言实现了FSM有限状态机的流程引擎模型。有限状态机是一种数学模型,广泛应用于流程引擎,rpg游戏等领域。是表示有限个状态以及通过执行动作使得状态发生转移的数学模型。
状态转换图:
工作流引擎的模型正是利用这种定义的有限个状态和动作,动作的结果导向另外一个状态来达到流程的流转。
工作流引擎的每一个状态 = 一个业务环节 + 业务环节的状态
业务环节:即为一个虚拟的业务操作场所
业务环节的状态:即为一个具体的流程运转到此业务环节的实际状态。流程引擎对流程的描述通常是采用xml格式的文档来描述,xml文档中的每个节点都赋予了一定意义,各节点作为流程定义的基本元素,流程引擎能够定义、解释和应用它们来描述尽可能多的业务流程。
一个简单的流程描述xml文件:
上图xml流程的图解状态过程如下:
开始节点-》初始化动作--》步骤节点-》动作节点--》结束
xml文件中基本元素即工作流引擎的基本元素:
步骤(step)
一个step描述的是工作流所处的位置。可能从一个step transtion到另外一个step,或者也可以在同一个step内流转(因为step可以通Status来细分,形成多个state)。一个流程里面可以有多个step。
状态(status)
状态status 是用来描述工作流程中具体step(步骤)状态的字符串。eWorkFlow中预置了三种步骤的状态 Underway(进行中)、Queued(等候处理中)、Finished(完成),用户可以任意扩展自己的状态。而工作流的状态state则是由step(步骤)+status(步骤的状态)组成的。工作流状态state的升迁来达到工作流实例的推进。
流转(transtion)
一个工作流实例状态state到另一个状态state的转移。
动作(action)
action 触发了发生在 step 内或 step 间的流转,或者说是基于 state 的流转。一个 step 里面可以有多个action。action 和step 之间的关系是,step 说明“在哪里”,action 说明“去哪里”。 一个 action 典型地由两部分组成:可以执行此action(动作)的condition(条件),以及执行此动作后的 result(结果)。
任务(task)
任务是当工作流状态发生转移的时候,产生的任务。任务可以指定为一个具体的角色,人,或者群组。任务具体,待办,已办,竞争办理,代理待办等多种功能。
条件(condition)
类似于逻辑判断,可包含“AND”和“OR”逻辑。比如一个请假流程中的“本部门审批阶段”,该阶段利用“AND”逻辑,判断流程状态是否为等候处理中,以及审批者是否为本部门主管。
结果(result)
Result 代表执行action(动作)后的结果,指向新的 step 及其 step status,也可能进入 split 或者 join。result 分为两种, contidional-result (有条件结果),只有条件为真时才使用该结果,和 unconditional-result(无条件结果),当条件不满足或没有条件时使用该结果。
分支/合并(split/join)
流程的分支和合并。分支是指流程下一步可以同时分发给多个步骤,分支split 提供多个unconditional-result(无条件结果);join 则判断多个current step 的状态提供一个 result(结果)。
子流程(subflow)
子流程,动作的结果可以指向一个子流程,子流程是一个独立的流程,可以单独启动也可以嵌套在另外的流程中启动,和主流程有同步或异步衔接的属性。工作流程引擎利用这些基本的元素,能够实现各种类型的路由。
1、串行:就是一个步骤流向下一个步骤的基本路由方式。
2、并行:一个步骤下可以执行多个动作,动作的结果可以流向不同的步骤,这是并行路由的一种方式。
3、条件:步骤的动作结果可以设置条件,满足条件的则流向条件结果。
4、分支:动作结果可以流向一个分支,分支可以同时流向多个不同的结果步骤,这也是并行路由的一种方式。
5、合并:多个结果流向一个合并节点,合并节点满足一定条件后,就可以流向下一步骤。
6、循环:动作的结果指向本步骤或上一步骤,形成循环路由。
7、子流程嵌套:在工作流中嵌套执行另一工作流,叫子流程嵌套路由,子流程可以是同步执行和异步执行两种属性,主子流程可设置输入输出参数来达到信息的传递。
8、自由跳转:流程实例运行当中,正常的流程是按照流程定义的节点往下执行,自由跳转就是可以跳转到任意的步骤,执行过和未执行过的步骤。
9、回退:回退是指当流程实例运行过程中,由于某些原因回退到已经执行过的某个步骤,并辅助执行业务补偿,使得业务数据也回退到已经执行过的步骤状态。
要了解一个工作流系统,必须要先理解流程引擎的模型,理解了流程引擎的原理,模型,就如同掌握这套工作流系统的灵魂,然后再去理解它的全部。否则,一套工作流系统对你来说,可能只是一些复杂的结构,丰富多彩的示例,眼花缭乱的功能 等等。
-
89. 基于Notes/Domino的文档工作流系统(一)
2015-01-08 10:49:00这些特点使得它适于开发某些类型的应用系统(同时就不是开发其他一些类型系统的适宜平台),这其中就包括工作流。这里指的并不是如工作流管理联盟(Workflow Management Coalition, WfMC)制定的工作流标准...介绍Notes/Domino作为一个数据库系统和开发平台,具有许多与众不同的特点。这些特点使得它适于开发某些类型的应用系统(同时就不是开发其他一些类型系统的适宜平台),这其中就包括工作流。这里指的并不是如工作流管理联盟(Workflow Management Coalition, WfMC)制定的工作流标准(Workflow Reference Model)那样通用的工作流,而是一类以文档为中心的主要活动为用户审批的工作流。Notes的文档型数据库、客户端与服务器架构、自带的用户目录和登录校验、与邮件系统的集成以及快速开发模型等设施和特性都为政府办公和企业管理涉及到的各种流程的电子化的开发提供了巨大的便利。在Notes平台上开发的工作流系统司空见惯,以至于很多有经验的开发人员都有自己的作品。我在长期的工作中,也开发了自己的系统。在接下来的几篇文章中,就将介绍这个系统的功能、特色、使用方法以及设计结构。最后会提供整个数据库的下载供大家学习使用。
需要指出的是,用Notes开发工作流的优势和名声主要是建立在本世纪初,那时R5已具备上述的所有功能,而使用其他语言从头开发一个功能完备、安全可靠的客户端难度和工作量都很大,而且还有客户端应用程序更新的麻烦。Web应用程序距诞生不久,不够完善和成熟。J2EE、PHP、ASP、JavaScript等当时主流的Web开发语言远未达到今天对应技术这样发达的程度。时至今日,Notes平台的上述优势在与其他开发语言和数据库比较时,都已不明显,甚至落后。采用主流技术开发的工作流在功能和适用范围上都已赶上和超过Notes平台上的系统。Notes的缺点和局限决定了使用它很难开发出符合WorkflowReference Model标准那样的通用工作流。尽管如此,由于Notes的用户基础以及XPages技术的推出,基于Notes平台的工作流仍然可以继续满足特定的用户群。
这里介绍的工作流基本情况为:工作流的名称、节点和操作等配置保存在一组文档中,方便在运行时创建和修改。工作流可运行于Notes客户端或浏览器(需XPages支持)。客户端版本有长期的应用实践可证明可靠性,XPages版本也实施若干年。
功能(features)包括:
- 工作流的节点和操作可灵活自定义,包括每个节点具体有什么操作,没有任何预设的名称或数量上的限制。每个节点的用户、特权用户、每个操作的目标节点、操作的访问权限等等都可以自定义设置。
- 操作的配置中包含字段校验和邮件内容以尽量减少额外编写代码的需要。
- 许多配置可写入公式。
- 支持两种模式的单节点多人审批:“与”模式下某个节点的多名用户都审批完才进入下一节点;“或”模式下某个节点的多名用户只要有一名审批完即转到下一节点。
- 客户端和浏览器上运行的工作流共享配置数据,操作风格也完全一致。
- 具体工作流可通过扩展基类添加复杂的业务逻辑。
- 默认状态下每个流程文档的当前用户以用户名形式保存,因而可以在My Work视图下看到需要自己处理的工作流。
- 定时发送HTML的汇总提醒邮件。
演示
作为演示的是一个采购工作流。总体界面如下。左边的导航分为两类:Purchase Order下所列是普通用户能访问的,包括我创建的采购单My Purchase Order,等待我处理的采购单My Work,为流程中的一个特殊节点设置的Final Review,按状态分类显示所有采购单的Purchase Order,为导出到CSV设置好列的Exporting PO以及查看流程图的View Flow Chart。Setting下所列是系统管理员和开发人员需要访问的视图,具体能看到哪些可根据权限设置,包括设置一般关键字参数的Settings,计算采购单号所用的Flow Number,配置流程参数的Flow Settings,保存各种运行日志的Log,显示冲突文档的Conflicts,显示所有文档的All Documents。
采购单主界面如下。表单上面两个折叠小节都是只有开发人员才能看见的与文档流程和权限有关的信息。标题下面的一行分别显示当前采购单所处的状态、处理人以及单号。
采购单的具体信息依据负责人和权限分布于多标签页表格的不同页里。
最后一个标签页里显示的是流程记录。
所有的流程审批操作都是从工具栏的Action…按钮触发的,只有采购单的当前处理人或者管理员能看见该按钮,点击后会在弹出的对话框中看见为该节点设置的可用操作,也可以输入意见。
定时代理按照设定的频率向采购单各个节点的处理人发送汇总邮件。例如,用户甲是IT经理,有三张采购单处于WaitingFor IT Approval的状态,他就会收到一封邮件,正文中以表格形式列出三张采购单的基本信息。这样可以免去通知邮件太多和太频繁的问题。因为是演示,下图中所有的通知邮件都发到同一个人的邮箱中。
如果以客户端操作工作流,邮件中每一行的采购单信息使用notes://relativePath/dbReplicaID/docUNID格式的Notes链接,用户单击可直接在客户端内打开该采购单。如果是采用XPages的工作流,链接就指向该采购单对应的Web页面。
下一篇文章继续演示XPages工作流的操作界面和配置。
-
工作流系统之三十三 撤回的实现
2016-10-14 19:38:37工作流系统的回退流,是指流程实例运行到一定阶段后,可以主动的选择回退到曾经运行过的任意轨迹上。回退流的发起方是当前步骤的任务执行人,选择主动的回退,上面有一篇 回退流的实现,主要说明了回退流的实现过程... -
C#完整工作流系统源码(vs2005).rar
2010-12-15 17:41:28工作流管理系统是一个软件系统,它完成工作流的定义和管理,并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行。一个完整的工作流管理系统是由工作流执行部件、工作流功能部件和外部应用系统构成的。工作... -
activiti工作流简介
2019-02-01 12:45:50工作流简介 工作流定义 工作流: 就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的... 工作流管理系统是一个软件系统,它完成工作量的定义... -
工作流引擎
2015-07-24 14:24:53工作流的概念起源于生产组织和办公自动化领域。它是针对日常工作中具有固定程序的活动而提出得一个概念。它的主要特点是使处理过程自动化,通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些... -
90. 基于Notes/Domino的文档工作流系统(二)
2015-01-09 12:13:09XPages下的工作流演示网页外观的可能性在技术上超过Notes客户端里的表单,Web应用程序在页面设计上花费的精力和取得的效果也远远超过基本保持传统客户端应用程序界面风格的Notes。我是程序员,不是设计师。在下面的... -
工作流系统之四十 抄送功能的实现
2016-10-14 19:43:44在工作流软件产品中,产生一条任务信息,任务有参与人,执行人,任务完成后,还有任务的完成人,这些是任务的基本信息。当任务需要抄送给相关人员时候,还需要给任务设置抄送人。被抄送的人,能全程关注任务的执行与... -
JAVA工作流
2018-05-03 10:25:25现在大多数公司的请假流程是这样的员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请假录入电脑采用工作流技术的公司的请假流程是这样的员工... -
95. 基于Notes/Domino的文档工作流系统(七)
2015-03-06 17:39:49本文继续剖析基于Notes/Domino的文档工作流系统的设计和代码,以方便用户能应用和创建自己的工作流。 -
工作流系统之二十五 .net工作流系统开发体会
2016-10-14 19:30:24.net工作流系统开发体会 公司的eworkflow自定义工作流系统,最初是开发了java版的。待java版的功能稳定后,就开始开发.net版的。 java版的eworkflow工作流系统,我们没有依赖于任何框架,如struts,spring等,也... -
工作流管理系统开发实录:基于JBoss jBPM实现,扫描版
2013-11-02 19:35:53《工作流管理系统开发实录:基于JBoss jBPM实现》依据工作流管理联盟参考模型的结构,贯彻基于业务流程开发的思想和方法,重点讲解工作流管理系统的开发技能和技巧,可使读者快速、高效、全面地掌握工作流管理技术的... -
asp.net+silverlight+AJAX 的OA+工作流系统源代码
2009-12-23 11:28:35作为本OA系统的核心,该工作流(定义及引擎)采用了微软最新的silverlight技术和符合国际工作流联盟规范引擎: 1).支持图形化的定义和监控 2).支持并发流和条件流 3).支持子流程 4).支持按参与者比率设定来... -
后台系统设计:工作流设计剖析
2017-11-28 00:00:00一般在稍微复杂一些的后台系统中,工作流的设计是不可避免的一个重要部分。 设计好一个后台工作流,不仅可以使得后期使用系统的时候更加高效,同时也是十分考验产品经理的。 刚好最近自己在做这方面的工作... -
91. 基于Notes/Domino的文档工作流系统(三)
2015-01-13 15:21:20如前文所说,基于Notes的工作流系统之所以在Notes应用程序里长盛不衰,就是因为Notes平台适合开发此类系统。无论是政府和企业日常办公中的请假、用车、办公用品领用、人事招聘,还是企业生产经营过程中的采购、报销... -
基于独立工作流引擎实现的SuperFlow工作流平台设计方案
2018-06-18 11:48:14现在的大型信息化系统,尤其是基于GIS的综合电子政务应用系统,比如,对于国土,交通,公安,城市规划,水利等业务领域的应用,业务应用办公系统对办公地点的不定性以及信息资源的整合,SuperFlow工作流平台提供基于... -
BPM之工作流
2017-07-26 14:17:41目前公司在进行网站重构,需要将工作流系统整合到新开发的系统中,在项目的开始阶段,宏天的BPMX3和普元的BPS业务流程管理系统在评估计划中,因此我对这两个系统有了一个浅显的研究,在这里做一个小小的总结。... -
工作流系统-业务流程模块的详细设计
2013-01-11 13:49:39这部分是我工作流设计论文里的核心,摘出来分享给大家。 业务流程管理模块是本平台的重要组成部分,要实现将已经发布的标准中规范化的流程转化为具体计算机中的流程从而实现流程的自动运转,将标准化成果与... -
配置企业管理系统,什么样的工作流才有用
2020-11-05 14:08:32工作流是企业应用开发过程中非常重要的一部分,几乎常见的管理、业务类系统都与工作流有千丝万缕的联系。 工作流作为应用系统的一部分,根据角色、分工和条件的不同,来解决信息传递路由、内容等级问题的核心解决... -
Activiti工作流示例Activiti Demo(带完整源码)非常实用
2017-02-16 20:13:33Activiti工作流示例ActivitiDemo 本示例带有全部源码,详细使用Canvas动画演示了Activiti工作流引擎的使用。非常实用,非常先进和完整。希望您会喜欢。 -
2019最新activiti6.0工作流搭建平台
2019-01-09 15:20:44基于Spring Boot2与Activiti6.0搭建通用的工作流引擎平台 支持流程定义文件在线设计及部署和维护 支持自定义表单与流程定义的集成 满足流程运行的用户及权限管理功能 管理角度的监控流程运行过程和历史... -
实际项目中的工作流工作原理
2017-02-06 17:19:02java实际项目中的工作流(workflow)解读 -
为什么使用工作流引擎,什么是工作流引擎,工作流引擎选型以及如何使用
2021-08-12 10:25:41不使用工作流存在以下问题工作流优缺点什么是工作流引擎尝试自己构建工作流引擎有哪些选型方案呢基于bpmn标准进行流程定义国产自定义如何使用SnakerFlow工作流以请假流程来看下数据库中数据流转情况初始状态员工发起... -
94. 基于Notes/Domino的文档工作流系统(六)
2015-02-04 11:58:35上文分析了我们的流程配置使用三类对象,分别对应三类文档:工作流配置文档、节点配置文档和操作配置文档。本文介绍三类配置文档的内容,也可以看作本流程系统的设置教程。这些配置文档的共同点包括:处于编辑状态时... -
92. 基于Notes/Domino的文档工作流系统(四)
2015-01-17 10:15:06现在我们以演示的采购工作流来研究工作流系统的设计。本文将讨论一个通用的工作流“引擎”包含哪些功能。通过需求分析和梳理,我们已经获得如下的流程图。由此可知该流程由一组状态、与状态对应的一组用户和流程处于... -
93. 基于Notes/Domino的文档工作流系统(五)
2015-01-20 10:20:11因为工作流实例和业务对象关系紧密,而且工作流对象记录的权限信息(如业务对象的读者作者)在Notes里只有保存在对应业务对象的文档里才有效,因此工作流和业务对象的数据保存在同一个文档里,以后我们就称之为流程... -
工作流引擎的设计与实现
2016-02-25 11:24:57第四章 工作流引擎的设计与实现(一) (2009-03-24 17:26:26) 转载▼ ...分类: 基于工作流的政务系统--设计 工作流引擎的作用是解释流程定义,创建、执行和控制流程实例。对于