`
iuottp
  • 浏览: 166528 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

工作流参与者和工作项模式分析

阅读更多

工作流参与者和工作项模式分析 收藏

原文地址:http://www.blogjava.net/RongHao/archive/2007/10/30/157009.html

对 于当前的工作流应用来说,人工节点无疑扮演着一个非常重要的角色。因为无论是传统的协同办公系统还是越来越多的企业应用,都需要有人参与到具体的流程中 来。这篇文章着重分析工作流应用中人工节点所涉及到的参与者模式以及与此关联的工作项模式,最后会提供部分的解决方案作为参考。

先简单说说什么是人工节点。

人 工节点的概念是与自动节点相对的。顾名思义,人工节点就是需要有人参与的节点,在实际流程中,它体现在产生由人完成的工作项以及由人决定一些决策变量,这 些决策变量会对流程的运行产生影响(例如分支的选择等等)。自动节点则是由工作流引擎自己调用完成,不需要人的参与,通常是执行定制的业务操作。相比较而 言,人工节点更多的应用在管理流程里,而自动节点更多的则是应用在企业业务流程里。

人工节点的职责有三个:第一是决定该节点的参与者;第二是根据参与者生成需要人来处理的工作项;最后是当工作项被参与者处理完毕时,它将继续触发流程的流转。参与者处理工作项时可以处理相应的业务和设置流程决策变量。

下面我们就按照这三个职责分别对人工节点所涉及到的参与者模式和工作项模式进行分析。

<!--[if !supportLists]-->1、  <!--[endif]-->决定参与者模式

换句话说就是决定该节点的参与者,这里有两种模式:引擎自动获取和最终用户指定。
 

1 1 引擎自动获取

所谓引擎自动获取就是由引擎在运行期计算实际的节点参与者,不需要最终用户的参与。这个计算基于流程定义时对该节点参与者的定义。

<!--[if !supportLists]-->(1)    <!--[endif]-->直接指定人员、部门或角色

这 种情况最简单,也最直接,用户定义节点时直接在组织用户树里选定人员、部门或角色,然后在运行期根据定义执行与或者是或的运算。大多数的工作流引擎都支持 这种模式。但很明显它也存在着很大的局限性,它是静态的,一旦流程定义完毕参与者也就跟着固定下来,运行期的任何变化都不会对参与者造成影响,一个很简单 的需求,请假流程,节点的参与者需要是当前申请者的部门领导,因为申请者在定义期是不确定的,所以根本无法指定节点的参与者,所以这种模式远远满足不了用 户稍微复杂一点的需求。

<!--[if !supportLists]-->(2)    <!--[endif]-->调用用户定制的计算参与者代码

这 种情况通常是由引擎提供一个接口或是父类,用户需要实现或是继承这个接口或父类,然后实现相应的方法。这个方法通常会传递进一个执行上下文的参数,用户代 码通过这个上下文可以访问到当前流程实例的信息,例如当前节点状态,工作流变量等等,然后用户可以根据实际业务和当前流程实例信息进行逻辑计算,最后返回 一个参与者的 ID 集合。对于上一个模式里提到的计算当前申请者部门领导的例子,这个模式实现起来非常简单,首先获得当前申请者 ID ,然后在根据这个 ID 找出该申请者部门再找出该部门领导即可。

实际流程运行到该节点就会调用用户自己定制的计算参与者的代码,方法返回的参与者 ID 即作为该节点的实际参与者。

这种模式对于工作流引擎的实现而言最为简单,因为它把最大的复杂性都抛给了用户,由用户代码来计算实际的参与者。实际上很多开源的工作流引擎采用的都是这种方式,例如 JBPM 。 但是这种方式给用户带来最大灵活性的同时也带来了复杂和烦琐。特别是当面对一个数量巨大的流程需求时,为每一个流程的每一个人工节点都定义一个参与者计算 类是让人头疼的。再加上现在强调业务的敏捷,业务里的改变要迅速反馈到流程的定义里,让最终用户来编写或修改这个参与者计算类不现实也不可能。补充一下, 这也是用户在考虑采用开源的工作流引擎还是商业工作流引擎时需要着重考虑的一个方面。

<!--[if !supportLists]-->(3)    <!--[endif]-->指定前续节点的参与者

实际上是用户在节点定义时指定参与者为前续某个节点的参与者,当流程运行到该节点,引擎会自动获取所指定的前续节点的参与者作为该节点的实际参与者。

这个模式实现起来并不困难,大多数商业工作流引擎都对该模式进行了支持。它能够满足用户的部分特定需求。

<!--[if !supportLists]-->(4)    <!--[endif]-->更为复杂的情况

用户的需求永远是复杂的,引擎所要做得就是尽量降低这种复杂性,流程的变化要能够迅速跟上业务的变化。考虑下面两种稍微复杂一点但是又很常见的需求。需求一:参与者为当前申请者的部门领导且职位为副总;需求二:参与者需要是测试部的所有女同事。这两种需求模式 1 3 都不能满足, 2 可以,但是正如提到的那样,模式 2 可能会非常的烦琐,不能适应业务的敏捷。其实这里的复杂性主要体现在: 1 、这里的参与者可能是运行期决定的; 2 、参与者的限制条件可能非常多,而这些条件不是简单的部门、角色或职位所能描述的。

对于一般的工作流引擎而言,它们都会选择模式 2 的实现,让用户自己实现逻辑。实际在后面的部分解决方案里,我们会看到更为好一点的实现方式。

 

1.2 最终用户指定

   运 行期由最终用户来决定节点的参与者。这也是中国国情所独有的特色。这种模式最为常见的就是用户提交工作项时的提交页面,用户在该页面上选定下一节点(多数 分支用户选定时)和下一节点的参与者。这种模式本身并不困难,问题在于在提交页面需要给用户提供一个参与者的选择范围,让用户进行选择。而关于这个选择范 围,则又回到前面所提到的引擎自动获取的模式,这个范围同样是需要引擎计算的。于是又回到了刚刚讨论过的四种模式。

 

2 、参与者执行模式

   现在,已经获得了节点的参与者。引擎下一步将会根据这个参与者生成工作项,注意,这里的参与者可能是一个人,也可能会是一个人员范围(即多个人)。于是就产生了参与者的执行模式,也可以理解为工作项的生成模式。

2.1 竞争参与

当有多个参与者参与这个节点时就会产生竞争参与这个模式。同样一个工作, A 可以完成, B 也可以完成,于是就产生竞争,谁先开始这项工作,就由谁负责完成该工作。

2.2 顺序参与

   多个参与者按照指定的顺序完成该工作项。 A 完成之后由 B 完成, B 完成之后再交给 C 完成。

2.3 同时参与

   多个参与者同时对工作进行处理,所有参与者均完成后,流程继续向后流转。这个模式其实比较复杂,因为这里同时涉及到一个完成规则:是所有参与者均完成工作项后流程流转,还是有其他规则?例如完成 2 个工作项即可流转,完成 80% 的工作项即可流转。稍候会讨论到。

2.4 负载均衡

   这也是一个常见的需求。这项工作 A B 都可以完成,但是 A 目前有 10 个待办工作项, B 只有 2 个待办工作项。于是用户期望该工作交由 B 来完成。这里需要实现一个简单的负载均衡。其实这种情况只是智能决策的一种最简单的情况,所谓智能决策是指系统能够根据一定的指标(由数据分析,例如人员的处理效率,工作负载等等)和规则来决定该节点的参与者。

<!--[if !supportLists]-->3、 <!--[endif]-->工作项完成模式

这 个模式在参与者执行模式为同时参与时有效。在说到这个模式之前,先简单说说工作项可能存在的几种特殊状态,这些状态包括挂起、人工终止和委派。挂起就是工 作项暂时停止执行,挂起会影响到流程的流转,会导致流程的挂起。人工终止则是人工手动改变该工作项的状态,使该工作项终止执行,这个人通常会是管理员。人 工终止也会对流程流转产生影响,当除去该工作项之外的所有工作项都完成时,人工终止该工作项会触发流程的流转。委派就是将该工作项委派给他人完成,同时该 工作项也就结束了。人工终止和委派是工作项结束的特殊状态。
 

3.1 全部完成

当所有工作项都结束时触发节点的结束和流程的流转。

3.2 完成规定的个数

节点定义时指定工作项必须完成的个数,当完成的工作项达到这个指定的个数时触发节点的结束和流程的流转。  

3.3 完成规定的百分比

节点定义时指定工作项必须完成的百分比,当完成的工作项占所有工作项的比例达到这个指定的百分比时触发节点的结束和流程的流转。
 

其实这里很明显的可以看出不管是所谓的参与者执行模式还是工作项完成模式不过都是一定的规则,既然是一定的规则那必然就限定了应用的灵活性,用户能否自定义规则?根据业务灵活地修改规则?规则引擎 +DSL 应该是一个不错的选择。

分享到:
评论

相关推荐

    工作流回退模式分析.docx

    用过工作流的都知道回退模式,为什么要回退? 参与者接受任务后,发现不应由自己办理此任务或以前的执行者办理有错误等情况后,需要将此接受的任务回退给以前某个节点的执行者重新办理。

    工作流回退模式分析

    回退(RollbackWorkItem)回退是工作流参与者对自己“待办任务”(实际是对工作项)的一种操作,即参与者主动回退待办任务列表中的任务到已经执行过的人工节点。为什么要回退?参与者接受任务后,发现不应由自己办理...

    小米的商业模式.doc

    商业模式是指一个完整的产品、服务和信息流体系,包括每一个参与者和其在其中起到的作用,以及每一个参与者的潜在利益和相应的收益来源和方式。在分析商业模式过程中,主要关注一类企业在市场中与用户、供应商、其他...

    BioHackathon-projects-2019:该存储库供2019年11月在巴黎举办的BioHackathon的参与者共享想法,创建问题,管理项目,发布材料,创建代码等

    :生物化学领域学术出版物的知识图项目14 :全功能:实时监控计算工作流项目15 :实施Orphanet和Orphadata的生物模式项目22 :RO形状轮廓,BrAPI和生物化学形状验证项目25 :根据ELIXIR准则设计软件管理计划

    二十三种设计模式【PDF版】

    所以很少存在简单重复的工作,加上Java 代码的精炼性和面向对象纯洁性(设计模式是 java 的灵魂),编程工作将变成一个让你时刻 体验创造快感的激动人心的过程. 为能和大家能共同探讨"设计模式",我将自己在学习中的心得...

    G_S模式下虚拟场景中的动态交互技术研究

    ,它能使参与者产生身临其境的感受,通过互动的方式使用户体验沉浸感。用 可以通过鼠标、键盘等手段自由地在虚拟场景中切换视点和视角进行漫游,点 按钮或菜单等,进行信息的获取和对场景的操作,从而给用户在视觉或...

    人工智能应用场景分析报告.pptx

    人脸识别、检测、比对 NVR 识别结果呈现 人脸检测、比对 人脸识别、检测、比对 码流传输 人脸识别抓拍 录像存储 视频流 人脸比对机 IPC 人脸识别、检测、比对主要在云端完成 市场参与者众多 智能安防市场由安防企业...

    云计算与数据中心自动化

    作者拥有与领先的云供应商和集成商合作的丰富经验,展示了详细的操作工作流示例,操作基于云的网络、计算和存储基础设施的成熟技术,完善的管理参考架构。以及一个演示快速、低成本解决方案设计的完整案例分析。对于...

    BPS开发指南.chm

    06.03.04 活动实例表、工作项表和参与者表 06.03.05 迁移线表和迁移控制表 06.03.06 表间关系 06.03.07 后续版本中保持兼容的表字段 06.04 关于示例代码 06.05 Java环境的请假流程示例 06.05.01 分析设计 ...

    人才招聘网站商业计划书范文.zip

    总之,我们的“人才招聘网站商业计划书”提供了一个全面的商业模型,旨在通过创新的在线招聘解决方案,连接大学生人才与寻求新鲜血液的企业,促进就业市场的高效运作,并为所有参与者创造价值。重新回答||

    软件工程-理论与实践(许家珆)习题答案

    (2) 模拟和分析需求 需求分析和模拟又包含三个层次的工作。首先是需求建模。需求模型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。需求概念模型的要求包括实现的独立性:不模拟数据...

    电子商务毕业设计论文

    本课题主要是通过了解电子商务的基本原理,操作流程及网络安全等多方面的知识,针对BtoC 电子商务流程的结构和功能设计网站,使其能充分完成BtoC电子商务的流程,对BtoC电子商务的参与者如用户、银行、商店等角色所...

    数据库结构设计及优化.pptx

    设 计 描 述 数 据 处 理 数据字典、全系统中数据项、 数据流、数据存储的描述 数据流图和判定表(判定树)、数据字典 中处理过程的描述 设计 阶段 概 念 结 构 设 计 需求 分析 逻 辑 结 构 设 计 概念模型(E-R图) ...

    流程优化管理培训资料.pdf

    评价点 TQM BPR 流程优化 改进程度 重点 频率 范围 参与者 风险与收益 类型 IT的角色 管理的角色 渐进式的逐步增长 改进现行过程 持续的 通常在部门内 自下而上 低到中等 工作设计 偶尔起作用 注重参与 革命性的、...

    数据库设计简答.doc

    答:数据字典的内容一般包括:数据项、数据结构、数据流、数据存储和加工过程。 其作用是对系统中数据做出详尽的描述,提供对数据库数据的集中管理。 10、对概念模型有些什么要求? 答:对概念模型一般有以下要求:...

    书店电子商务网站设计与实现(1).doc

    自此,消费者通过网络 无拘无束地完成了他的一次购物过程,整个过程都是消费者坐在自己的计算机前点击鼠标 和键盘,所需做的只是查看商品信息以及下单结帐,其它的工作就交给商户、银行与物 流机构去完成,整个过程都...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    1、 Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Servlet,JSP和custom tag library构建Web应用的一项非常有用的技术。由于Struts能充分满足应用开发...

    钉应用,微信OA,微信企业号,深度企业号

    22、进销存:轻松录入数据,放心等待结果,让产品的库存统计更加实时,准确,让日常工作的分工更加清晰和科学,减少企业的会计与业务员的人工投入,降低对工作人员的要求,加快会计工作速度,并及时、准确地提供更多...

    标准流程的生态:互联网标准化的教训-研究论文

    我们将这种方法应用于 Web 服务编排标准的历史,其中 500 多名参与者在 12 年的时间里穿越了九个机构。 我们通过分析标准化思想的运动模式来解释这段历史的关键方面。 我们表明标准制定机构通过利用反映机构价值观...

Global site tag (gtag.js) - Google Analytics