工作流引擎是 BOS 系统的一个重要组件。 它可以根据客户具体的业务逻辑,来定义工作流模型。 整个应用程序就根据所定义的流程来运行。 它把应用系统模块和工作流程分开。 当流程发生变化,只需修改流程模型, 具体的应用程序无需修改。
参考wfmc 标准,我们把工作流分成几个模块。
· 流程定义模型
· 用户端
· 工作流引擎
· 建模工具
· 组织架构
在虚线框中代表工作流的服务器端。 它对于用户是透明的。 用户通过工作流引擎所提供的客户端来对工作流引擎进行操做。 客户端包括建模工具,管理工具和任务列表。 各模块之间的关系如下图
工作流的操作可以分为,建模阶段(Process Design&Definition)和运行阶段(Run Time). 运行阶段又可分为工作流引擎端和客户端。
客户首先通过建模工具,建立一套工作流的模型定义(Process definition)。 工作流引擎(Workflow Enactment Service)根据模型所提供的信息,把具体任务交给用户来完成。 用户在登入后,会发现有一项新的任务在他的任务列表中。在他选择执行后,预先设定的应用程序将被激活。在执行应用程序的过程中,所调用的应用程序会和工作流引擎交换数据。告诉工作流引擎目前运行的状态。当他完成任务后,工作流引擎得到反馈,将按流程把任务交给下一个人,直到完成整项工作。
我们将通过一个简单的例子,来解释工作流引擎的作用
上面是一个假想的销售流程图。任何工作流程图都包含起始节点和结束节点。 起始节点可以是单独的一个节点,也可以隐含在一个任务节点中。 在上图中,线索就是一个起始节点。用户得到一个线索后,第一步是输入线索。 因为下一步是和客户联系(contact customer),需要由销售代表来完成, 而销售代表(sales rep)有多个,工作流引擎将把任务分配给销售部的经理。 由销售部经理把任务分配给某个销售代表。 这个销售代表就会在他的任务列表中看到这个任务。 当他联系了客户后,发现这个客户有可能买我们的产品,就把相关信息输入到数据库重。结束了这个环结的工作。 工作流引擎就会把任务传给下一个环节。 如果客户不感兴趣,就转移到结束节点。 此工作流程就结束。
下一个环节是建立销售计划(sales plan),需要市场部经理来做。 因为市场部经理只有一个,就把任务直接分配给市场部经理(marketing manager)。 Marketing manager 做出销售计划后,需要公司的CEO 和CFO来审批。 当两位经理都对此做出审批后,将把信息反馈到 sales manager. 假设CEO 的评审没有通过,销售经理需要修改 sales plan, 再进行审批,直到通过为止。 下一个环节是拜访客户。 如果一切顺利,就可得到定单,整个流程结束。 以上的例子是一个假想的例子, 但它反映了工作流引擎的一些重要功能
1. 用户看到的只是自己的任务列表。 当他完成了这项任务后,由工作流引擎根据流程,把任务分配给下一个环节的负责人。
2. 每一个任务都由一个角色来完成,由工作流引擎,根据组织架构,决定具体由谁来做。
3. 有些过程(审批)需要重复进行,直到通过。
4. 有些过程 (审批)需要所有的前置任务(CEO review, CFO review)都完成,才进入下一个阶段。
5. 有些过程不需要人来操作,比如,审批节点自动等待 CEO和CFO 都审批完后,把结果反馈到市场部经理。
工作流引擎对于用户来说是透明的,用户通过它的客户端来对它进行操作。 客户通过建模工具来建立模型,通过任务列表来知道自己当前的任务。通过管理工具来对工作流程进行维护。