转贴:工作流的现状

本文探讨了工作流管理系统的现状,包括定义、目标领域、业务流程管理和市场混乱的原因。作者强调工作流系统在软件开发和业务流程管理中的价值,并分析了流程定义的四个层次。文章还列举了开源项目和商业软件提供商,指出选择工作流系统的挑战,并提供了相关规范和工具的资源。
摘要由CSDN通过智能技术生成

前言

    如果数据库系统( database systems)像受人尊敬的智者讲述的条理清晰的故事,那么工作流workflow)就像一群乳臭未干的小子在大谈各自的“哲理”。之所以这样讲,我是想指出,工作流系统 (workflow management systems)还处于技术发展曲线( technology hype curve)上的初级阶段。在这个领域我们将面临一个激动人心的阶段。 为了描述这一点,可以将工作流和关系数据库系统(RDBMS)做一个对比。当在软件开发团队中谈论RDBMS时,大部分人会有一个清晰的概念,在你和他们交流的时候,人们会通过轻微的点头表示认可或理解你所说的。可当使用工作流术语讨论工作流时,他们会摇头表示不同意,因为每个人对工作流术语都有不同的理解。

 

the technology hype graph
Figure 1: Workflow vs. RDBMS positioned in the hype-curve

 

    导致形成这种状况的原因之一,是在工作流中使用了过多的概念。在这个领域中的大量规范和工具没有一个是相似的。当然,它们相互之间有重叠并且会相互参考引证。
    在介绍工作流时有一个话题必须包括,那就是工作流业务流程管理(BPM)的关系。术语“工作流”通常描述人与计算机系统的一系列相关交互。在开发人员中,工作流经常被提及。有时,工作流的意思是指一些不同的UI界面。业务流程管理的范围比较广,相比之下工作流多半局限于技术领域。业务流程管理还从管理人员的角度涉及了非技术问题,比如分析、组织的效率。

    在本文中,我首先解释什么是工作流管理系统,然后介绍业务流程管理的优点。接下来描述一下为什么工作流市场乍看起来如此混乱。本文给出的主要结论是:选择工作流系统是想用工作流系统的公司,将要面对的最困难的事情。为此,本文的核心部分描述了一个流程定义(process definition)的四个层次,为你选择工作流提供一个基础。本文还用中立的语言描述了工作流和BPM的通用概念。最后,给出了一些规范和工具的指导性描述。

什么是工作流管理系统(WFMS)

定义

    工作流系统是以规格化的流程描述作为输入的软件组件,它维护流程的运行状态,并在人和应用之间分派活动。

    为了后面的描述,我们先定义一些基本的术语:流程定义(process definition)和流程实例(process instance). 一个流程定义是一个业务流程或过程的规格化描述。一个流程实例是流程定义的一个运行实体。 都目前为止,概念还比较清晰是不是?但当再深入一步时,我们就要小心使用文字了。如何阐述流程中的步骤,现在还没有一个统一的方式。这是各种工作流规范和工具之间主要的分歧。

为什么应当禁止使用术语“活动(activity)”...
    流程定义通常用一些活动表述。我认为这是导致工作流领域所有混乱的主要原因。我告诉你为什么:因为术语“活动”混淆了状态(state)和动作(action)之间的差异。在流程中,状态 (或者说等待状态)代表了一种对外部参与者(actor)的依赖。在流程运行时,这意味着流程引擎必须等待,直到外部参与者通知工作流管理系统指定的状态完成了。比如,等待可进一步运行的认可。动作是在流程运行过程中,工作流系统为响应指定事件(event)运行的一段程序逻辑(programming logic)。当流程运行过程中指定的事件发生时,工作流系统启动并执行这些动作。比如,当状态分配给一个参与者时,发一封Email。你也能看出,状态和动作是如此不同,因此使用同样的术语去描述这些概念是一个坏习惯。我的建议是避免使用术语“活动”,使用“状态”或者“动作”代替它。

    工作流系统另一个重要的职责是维护每一个流程运行的上下文信息。 流程上下文变量(process context variable) ,或简称变量,是与流程实例相关的变量。如,休假申请的开始日期、数据库中一条记录的键值、文档管理系统中一篇文档的索引等。通常在流程定义中声明这些变量,然后在流程实例生成时,这些流程变量被实例化。所有成熟的工作流管理系统都支持定制的变量类型。

目标领域(Target usage)

    使用工作流管理系统的目的之一是作为企业应用系统集成(EAI)的平台。在当前大部分企业级IT架构中,各种各样的异构(heterogeneous)应用和数据库运行在企业内网中。在这些系统被应用到组织时,都有一个清晰的目标。例如,客户管理、文档管理、供应链、订单、支付、资源计划等等。让我们称这些系统为专门应用( dedicated applications)。每一个专门应用都包含它们所支持业务流程的领域知识。这些专门应用中的自动化流程,被拼装到企业中更大的非自动化流程中。每当一个这样的专门应用安装并投入使用,都会带来涉及其他多个应用的新功能需求。企业应用系统集成(EAI)就是通过使用多个专门应用满足软件新需求的方法。有时,这只需要在两个应用之间提供数据通讯的通道。专门应用将很多业务流程硬编码在软件中。可以这么说,在你购买专门应用时,你是购买了一组固定的自动化业务流程。而工作流管理系统是不必事先知道问题域的相关信息的。工作流系统将业务流程描述作为输入并管理流程实例的执行,这使得它比专门应用更灵活(当然你也要花精力编写业务流程的规格化描述)。这就是为什么说工作流系统和专门系统是相互补充的。工作流系统可以用来管理全局的业务流程。如果专门应用支持你所需要的业务流程,那么使用专门应用。在此讨论的工作流系统的第一种使用方式就是:结合所有的专门应用,使用工作流系统构建一个EAI平台。

    工作流系统能够发挥很大价值的第二个使用方式是:协助涉及多人相关任务工作流软件的开发。为了达到这个目的,大部分工作流系统都有一个方便的机制,来生成执行任务的表单。对于专注于ISO 或者CMM认证的组织,采用这种方式使用工作流系统能够显著提高生产率。 不用将过程用文字的形式写在纸上,工作流系统使你通过流程定义建模实现过程的自动化(如使用基于Web的应用)。

    工作流系统的第三种使用方式是:将工作流引擎嵌入到其他应用中。在前面我们谈到,专门应用将指定问题域相关的业务流程固化在软件中。开发专门应用的公司也可以将工作流引擎嵌入到他们的软件中。在这里,工作流引擎只是作为一个软件组件,对于应用的最终用户是不可见的。将工作流引擎嵌入到应用中的主要原因是为了重用(不重复发明轮子)和应用软件的可维护性。

The case for workflow

    对于引入工作流的组织,能够在软件开发和业务两个层次受益。

方便开发

    工作流管理系统能够简化企业级软件开发甚至维护。

  • 降低开发风险 - 通过使用状态和动作这样的术语,业务分析师和开发人员使用同一种语言交谈。这样开发人员就不必将用户需求转化成软件设计了。
  • 实现的集中统一 -业务流程经常变化,使用工作流系统的最大好处是:业务流程的实现代码,不再是散落在各种各样的系统中 。
  • 加快应用开发 - 你的软件不用再关注流程的参与者,开发起来更快,代码更容易维护。

业务流程管理 (BPM)

    在自动化业务流程之前,分析并将它们规格化是一件艰苦但会有很好回报的工作。e-workflow.org对于分析流程能够带了的益处有不错的阐述:

  • 提高效率 - 许多流程在自动化过程中会去除一些不必要的步骤
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值