曾经在2001年做CRM产品的时候,因为CRM产品的客户状态升迁,每个具体用户的升迁规则可能会不一样,技术主管说要集成一个工作流软件工具......,那是我第一次听说工作流。当时很不理解,这工作流软件如何能做到将业务流程定义进去呢?当然,那时候工作流软件工具还不成熟和完善,也或者我们也没有达到那个层次,后来终究还是没有用上工作流。
工作流软件,顾名思义,就是业务信息数据在多个环节模块之间的流转。按照工作流管理联盟的定义,工作流指的是“业务过程的部分或全部在计算机应用环境下的自动化”。在实际应用过程中,为了实现对业务过程的工作流管理,需要对业务流程及其各个步骤之间业务规则的抽象,概括,做成一个统一通用的流程管理软件系统,这种软件系统就是工作流管理系统。
工作流管理系统的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程工作之间以及群体成员之间的信息交互。工作流管理系统将业务流程中工作如何组织协调在一起的规则抽象出来,从而分离了具体工作的逻辑和流程组织的逻辑。实现对业务过程的抽象建模、业务过程仿真分析、业务过程优化、业务过程管理与集成。从而最终实现业务过程的流程自动化管理。
开发人员或者流程的应用人员遵从工作流管理系统的规则或约定,设计和实现具体的业务流程。
工作流系统结构图:
天蓝色蓝色:软件构件,完成工作流管理系统不同组成部分功能的实现;
黄色:系统控制数据,工作流管理系统中的一个或多个软件构件使用的数据;
棕色:应用与应用数据,对于工作流管理系统来说,它们不是工作流管理系统的组成部分,而是属于外部系统和数据,它们被工作流系统调用来完成整个和部分工作流管理的功能。
web工作流管理系统主要功能:
业务流程建模;
参与的用户,权限,角色设计;
工作流测试运行;
业务表单模块的建立;
流程发布运行;
流程管理和监控;
流程出错后的修复。
通常开发一个工作流管理系统主要包含如下几个部分:
工作流引擎开发
工作流定义工具
自定义表单模块
流程管理和监控
工作流引擎: 主要是实现业务流程的规则抽象,模型的建立,解释,以及为流程实例提供运行环境,并解释执行流程实例。
工作流定义工具:主要是实现工作流的描述文件的定义和建立,通过可视化的方式把复杂的流程定义以图形化的方式显示出来,并加以操作。
自定义模块:主要指自定义表单,实现业务模块的工具。
流程管理和监控:主要指组织机构、角色,流程实例等数据的维护管理和流程执行情况的监控;
工作流引擎,主要是实现业务流程的规则抽象,模型的建立,解释,以及为流程实例提供运行环境,并解释执行流程实例。
工作流引擎必须要包含一个工作流模型的设计,工作流模型就是对业务流程抽象的一个模型,是整个工作流引擎的基础。所以模型设计的好坏决定引擎的功能是否灵活,也决定了工作流管理系统从设计实现到运行实施等诸多环节。
在信息管理自动化的环境下,工作流模型必须采用简单、直观、又具有较强描述能力的模型。我们公司的自定义工作流系统采用了有限状态机的数学模型来实现工作流模型,有限状态机(FSM)又称为有限状态自动机或简称状态机,是表示有限个状态以及这些状态之间的转移和动作等行为的数学模型。
状态转换图:
上图左数第一个图:为初始状态,用粗线圈表示;
SX,S0,S01,S011,S0110 为状态名称
U=0表示处于该状态的输入
连线箭头上的0或1表示导入状态转换时的输入
工作流模型正是利用这种状态和动作,动作的结果导致状态的转移来达到流程的流转。
工作流引擎的每一种状态(state)被描述成为一个步骤(step)和步骤的状态(status)。工作流实例从一种状态(state)升迁到另外一种状态是通过执行动作(action)来达到的,动作的结果(result)导向另外一种状态(state),这样达到流程的流转。在一个工作流实例的生命周期内通常有一个或者多个活动的状态(state)。这些简单的思想表现在工作流引擎的核心包里面,并且通过一个简单的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)
子流程,动作的结果可以指向一个子流程,子流程是一个独立的流程,可以单独启动也可以嵌套在另外的流程中启动,和主流程有同步或异步衔接的属性。
自由流 (free transtion)
自由流是指当一个步骤的动作执行完成后,需要跳转到任务的步骤。任意步骤,是指整个流程范围内的任意步骤,包含执行过的或未执行过的。
回退流(return transtion)
回退指当流程实例运行到某个步骤的时候,由于某些特殊原因需要回退到已经执行过的某个步骤上。回退是一种特殊的过程,只有在运行过程中才会明确指导要回退到那个步骤,回退往往需要执行业务补偿。回退和自由流不一样,回退会摸掉当前步骤到回退步骤之间的运行轨迹,就像初次运行到回退的步骤一样,同时需要辅助业务补偿来到达业务数据的回退。
工作流引擎核心包内,对这些基本元素做解释,并提供流程实例启动,动作执行,任务完成等等API,达到对业务流程的抽象。业务系统集成工作流后,做好业务流程建模,然后利用自定义表单做好相应业务数据的处理,将表单挂接到流程上。启动工作流系统,就可以实现业务系统了。
相关推荐
在C#中编写工作流引擎,可以利用.NET Framework或.NET Core提供的丰富的类库和工具,实现高度灵活和可扩展的流程控制。本文将深入探讨C#实现工作流引擎的关键技术和相关概念。 首先,我们需要理解工作流的基本概念...
工作流引擎的设计与实现是IT领域中的一个重要主题,尤其在企业级应用中,工作流引擎作为协调业务流程、提升工作效率的关键组件,其设计与实现显得尤为重要。本文将深入探讨工作流引擎的核心概念、EOS工作流引擎的...
工作流管理系统(Workflow Management System, WfMS)是实现工作流的关键,它通常包括工作流引擎,用于解析和执行工作流定义,以及用户界面,供用户交互和管理流程。工作流引擎是工作流系统的心脏,它根据预定义的...
工作流引擎是软件系统中用于自动化业务流程的关键组件,它允许开发者定义、执行和管理复杂的业务逻辑。在C#中,工作流引擎可以利用.NET Framework的工作流服务(Windows Workflow Foundation,WF)来实现。本实例...
通过以上详细分析,《工作流引擎设计说明书》不仅明确了工作流引擎的关键概念和技术架构,还提供了实现灵活、高效流程管理所需的组件和服务接口。这为开发人员构建复杂业务流程应用提供了坚实的基础。
工作流引擎是软件系统中用于自动化业务流程的关键组件,它能够根据预定义的规则和步骤协调应用程序中的任务和活动。在C#编程语言中,工作流引擎提供了强大的工具和技术来设计、执行和管理复杂的业务流程。本文将深入...
通过深入理解上述概念,并结合提供的"java 工作流引擎设计实现解析流程定义文件.txt",开发者可以设计出高效、灵活的工作流解决方案,实现企业级业务流程的自动化管理。在实际开发中,还需要考虑性能优化、并发控制...
### 基于关系数据库的工作流引擎设计与实现 #### 引言 随着信息技术的发展,工作流管理系统(Workflow Management System, WfMS)已经成为优化业务流程的重要工具之一。工作流是指一系列相互关联的活动,这些活动...
在这个"js工作流引擎代码实例"中,我们可以看到一个具体的工作流引擎实现,尽管描述中提到还没有详细研究,但我们可以探讨一下工作流引擎的基本概念和JavaScript实现的关键点。 工作流引擎的核心功能包括: 1. **...
2. **流程引擎**:负责解释流程定义并执行流程实例,是工作流引擎的核心。 3. **任务服务**:管理任务的分配、执行和监控,支持任务的优先级和截止日期设置。 4. **数据存储**:保存流程定义、实例数据和任务状态,...
工作流(Workflow)和业务流程管理(Business Process Management, BPM)是现代企业信息化建设中不可或缺的部分,它们旨在优化企业的业务流程,提高效率并确保合规性。"流程的永恒之道"一书深入探讨了这两个领域的...
工作流引擎的详细设计不仅涵盖了技术实现的方方面面,还深入到了业务流程的管理层面。通过对《工作流引擎详细设计说明书》的解读,我们能够清晰地理解工作流引擎如何组织和执行业务流程,以及它如何通过不同的组件和...
Java开源工作流引擎是指使用Java语言开发的开源工作流引擎系统,这些系统可以帮助企业或组织自动化业务流程,提高工作效率和效率。以下是多种Java开源工作流引擎的简介: 1. Willow:Willow是一个Java开源工作流...
1. 工作流引擎的概念:工作流引擎是一种能够定义、执行和管理流程的软件系统。它在执行流程时,会根据预设的规则来传递流程中的任务,同时跟踪任务的执行状态。在OA系统中,工作流引擎承担了业务流程自动化的主要...
工作流引擎是软件系统中用于自动化业务流程的关键组件,它使得复杂的业务逻辑得以有序执行,降低了手动干预的需求。本文将深入探讨轻量级工作流引擎的设计与实现,重点关注其在Java环境下的应用。 首先,我们要理解...
本文将深入探讨工作流引擎的概念、功能、实现原理以及其在实际应用中的价值。 工作流引擎的工作流程通常包括以下几个关键步骤: 1. **流程定义**:工作流引擎首先需要理解业务流程,这通常通过工作流建模语言(如...
4. **工作流概念** - **状态(State)**:每个任务或活动在工作流中的当前阶段,可以是“新建”、“进行中”、“完成”等。 - **转换(Transition)**:工作流中从一个状态到另一个状态的改变,通常与特定条件或...
工作流引擎是一种软件系统,它实现了工作流程自动化,使得企业或组织可以定义、执行和管理业务流程。在本文中,我们将深入探讨工作流引擎的概念、重要性以及如何使用工具进行工作流管理。我们还将通过阅读名为"jbpm...