WorkFlow入门Step.1—My Frist WorkFlow Trip! 自从上次书写的关于《AgileEAS.NET平台开发Step By Step系列-药店系统-索引》使用AgileEAS.NET 敏捷软件开发平台之后封笔了一段时间一是最近比较忙给客户指导培训通过近20多天的时间也是开发了一个建议的ERP系统对我来说已经是比较满意的成绩了我们会再接再厉继续前行。首先、我不是WF的老手只是将我学习的过程记录下来当然由于小弟不才可能存在理解错误或者印象中有问题的地方还望大家批评指正才是。本文也是先写个简单的示例来说明WF的使用。摘要WorkFlow是最近比较流行的一门技术其实WF起源于20世纪70年代中期的办公化自动领域自1993年8月WFMC工作流管理联盟成立1994年制定了一系列的关于工作流的标准。进入21世纪工作流被越来越多的学者关注该项技术越发走向成熟。当然我也是必须跟上时代的步伐所以也加入工作流的大军希望能够跟上前人的脚步。当然也希望感兴趣的朋友加入工作流的讨论群中来。具体群号120661978。大纲一、工作流简介二、工作流的参考模型三、工作流管理系统四、工作流管理系统架构五、工作流目前的现状六、第一个工作流实例工作流简介工作流的英文单词是workflow犹如大多数计算机领域的术语一样也是个合成词是英文单词work和英文单词flow的组合。Work翻译为任务、工作等flow则 翻译为流程、流动等。Flow反映的是一种事物的动态属性或变化过程例如水的流动被称为水流空气的流动被称为气流还有物料流、资金流等在抽象领域还有信息流、控制流等因此使用任务、活动以及活动之间的变化过程表示业务流程就被称为工作流。工作流尚没有一个统一的、明确的定义不同的组织和研究人员对工作流给出了各自的定义定义1工作流是一类能够完全或者部分自动执行的经营过程它根据一系列过程规则文档、信息或任务能够在不同的执行者之间进行传递与执行。定义2工作流是将一组任务组织起来完成某个经营过程。在工作流中定义了任务的触发顺序和触发条件。每个任务可以由一个或多个软件系统完成也可以由一个或一组人完成还可以是由一个或多个人与软件系统协作完成。任务的触发顺序和触发条件用来定义并实现任务的触发、任务的同步和信息流数据流的传递。定义3工作流是一个用来实施经营过程实践的机制。定义4工作流是经营过程的一种计算机化的表示模型定义了完成整个过程所需要的各种参数。这些参数包括对过程中每一个步骤的定义、步骤间的执行顺序、条件以及数据流的建立、每一步骤由谁负责以及每个活动所需要的应用程序。以上这些工作流的定义虽然在表述方式上有所不同但是基本上说明了这样一个问题即工作流是经营过程的一个计算机实现。使用工作流作为经营过程的实现技术首先要求工作流系统能够反映经营过程的如下几个方面问题1. 经营过程是什么即由哪些活动、任务组成也就是结构上的定义2. 怎么做即活动间的执行条件、规则以及所交互的信息也就是控制流与信息流的定义3. 由谁来做即人或者计算机应用程序也就是组织角色的定义4. 做得怎样即通过工作流管理系统对执行过程进行监控。工作流参考模型WFMC在工作流的相关规范和标准方面做出的主要贡献之一就是提出了一个工作流参考模型Workflow Reference Model。工作流参考模型来源于对普通工作流程序结构的分析确定结构中的接口这些接口可以使不同产品在不同的结构层次上协同工作。所有工作流系统都包含一系列的公共组件组件间采用一套被定义好的方法进行协作不同的产品在这些公共的组件中会表现出不同的处理能力。为了实现不同工作流产品间的协同工作需要在这些组件间制定一套标准的接口和数据交换格式。通过实现这些标准接口可以达到产品间的协同工作。我们先来看看下图看看WFMC的参考模型下面我们来挨个解释下每个接口的具体作用吧1、接口1在建模或定义工具与运行时期工作流管理软件间的接口。2、接口2该接口提供客户端应用程序与工作流引擎之间的通信API 。3、接口3该接口是工作流引擎与其他应用程序之间通信的API。4、接口4通过工作流与工作流之间的通信API是实现分布式工作流管理系统的核心API。5、接口5该工具提供了对工作流引擎的当前状态及运行在该引擎下的实例的监管和管理的接口。我们再来看看上面相关工具的作用吧流程定义工具 就是提供一种方便的使用的并且能够被计算机识别的过程定义目前我们使用较广泛的是通过图形化的工具来完成WF的过程定义。最后输出一个XPDL文件。XPDLXML Process Definition Language是由Workflow Management Coalition所提出的一个标准化规格使用XML文件让不同的工作流程软件能够交换商业流程定义。管理监控工具对工作流在整个组织内的流程情况进行监控并提供一系列管理功能实现安全性、过程控制、授权等操作。典型的功能范围包括用户管理、角色管理、监控管理、资源管理、过程监控管理。具体如过程模型的实例化启动、挂起、恢复、终止过程实例管理正在执行的过程实例等。工作流执行服务由一个或多个工作流引擎组成提供过程实例的执行为活动进行导航与外界资源交互完成各项活动维护控制数据和相关数据等功能。下图是工作流服务的整个流程工作流管理系统工作流管理系统——Workflow Management System简称WFMS在工作流定义基础上具有如下定义。定义1工作流管理系统是一个软件系统它完成工作流的定义和管理并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行。定义2工作流管理系统是支持企业经营过程高效执行并监控其执行过程的计算机软件系统。根据工作流管理系统的定义一个工作流管理系统应该提供如下的功能1. 定义、实现和管理工作流的运行2. 与工作流执行者即人或应用系统进行交互3. 推进工作流实例的执行4.监控工作流的运行状态。需要指出的是工作流管理系统不是企业的业务系统。在很大程度上工作流管理系统为企业的业务系统运行提供了一个软件支撑环境非常类似于在单个计算机上的操作系统。只不过工作流管理系统支撑的范围比较大、环境比较复杂而以所以也有人称工作流管理系统是业务操作系统。工作流管理系统架构WFMC提出的工作流管理系统产品架构。这个架构给出了抽象的工作流管理系统的功能组成部件和接口它能够满足工作流管理系统和产品应该具有的主要功能可为实现工作流产品之间的互操作提供公共的基础。从图中可以看出工作流管理系统主要由三部分组成上图也是WFMC提出的工作流管理系统的架构设计图。我们这里来解释下几个重要组件的作用吧软件构件完成工作流管理系统不同组成部分功能的实现包括过程建模工具工作流引擎任务表管理器和用户界面系统控制数据工作流管理系统中的一个或多个软件构件使用的数据包括过程定义组织/角色模型数据工作流控制数据工作流相关数据任务表应用与应用数据对于工作流管理系统来说它们不是工作流管理系统的组成部分而是属于外部系统和数据它们被工作流管理系统调用来完成整个或部分工作流管理的功能如被工作流管理系统调用的外部应用以及这些应用操作的数据。工作流的目前现状我们先来看看目前很多的自动化办公的流程通过上面的图片可能看不太清楚我也没有从新画一张清晰的所以大家先凑合着看下然后后面我再补上上面可以看到不同角色的人负责在工作流中的状态及行为是不同的。上面中强调说明了工作职责的分配性问题。工作流的概念起源于生产组织和办公自动化领域提出的目的是通过将工作分解成定义良好的任务、角色按照一定的规则和过程来执行这些任务并对它们进行监控达到提高工作效率、降低生产成本、提高企业生产经营管理水平和企业竞争力的目标。众多的企业应用系统按照功能从大的范围来划分无非两种一种是以公文流转、日常办公为主体的办公自动化系统另一种则是以企业经营过程的业务流程为主要辅助对象的具体业务系统。无论是办公自动化系统还是具体业务系统都是为企业提供软件服务的都是本着服务于企业需求为目标的然而现实世界中的各个企业的经营过程是无时无刻不在变化和调整中的以便适应瞬息万变的市场。这种变更带给信息化系统软件的最大的问题在于企业经营过程的调整往往使得原有的信息化系统软件要推倒重新设计开发使开发成本非常的高寻找到一种能够相对灵活的架构和管理方式以使得信息化系统能够快速的适应企业经营过程的变更成为了为企业构造信息化系统的软件设计人员的头等课题。工作流及工作流管理系统之所以能为企业信息化系统所使用究其原因也在于此。虽然工作流技术已经开始在企业应用中拥有了一片天空然而同已经应用于企业的其他技术相比工作流技术仍然处于其技术发展的初期。下图显示了工作流与RDBMS系统之间的发展曲线对比图当然从上图中我们看到WF处于提出并初始发展阶段而数据库管理系统已经非常的成熟并产品化。My WorkFlow Trip下面我们开始进入WF的开发之旅吧好像废话的篇幅比较多希望大家不要不喜欢看呵呵下面我们就来开始开发吧来完成我们的WF开发之旅的第一个程序demo。1、新建一个状态机工作流或者顺序工作流控制台应用程序2、输入项目名称后3、设计WorkFlow中的相关状态节点。主设计页面如下4、新建State节点在左侧的工具栏中找到如下节点然后拖拽到设计器中选择State节点,拖拽到设计器中,出现如下效果图