一、工作流系统的应用场景
在正式开始对工作流数据的讨论之前,首先对工作流系统的应用场景进行讨论是必要的,因为工作流数据脱离不开工作流系统这个大的上下文。目前,工作流系统的应用主要有两种方式:
1、 将工作流系统嵌入到业务系统中使用。此时工作流系统作为内部组件对业务系统进行流程逻辑的横切。试想一个需要多人处理的电力缴费流程,在引入工作流系统之前,我们需要为每个业务表单设置一个状态位,以此来进行业务处理状态的跟踪。如果流程固定,那么这样做并没有什么不好,例如财务软件、海关报关软件等,它们的流程虽然复杂但是不常改变,此时就没有必要引入工作流系统。但是对于另外一些情况,例如制造业的订单处理、库存管理、政府的协同办公等,流程经常需要定制修改,此时如果继续由业务系统自己处理流程逻辑那么成本将会很高。
2、 使用工作流系统进行业务系统的集成。在上规模的企业里,很多流程会涉及到不同的业务功能,例如报价、订单审核、资产核准、绩效评估等,这些流程经常会跨越不同的部门和业务系统。因为不同企业都有自己所采用的业务系统、组织机构以及最佳的业务协作方法,所以这些流程基本上也随企业而异。工作流系统此时扮演的就是集成角色,由其通过定制流程将这些业务系统撮合起来,实现企业内各部门、客户间的信息流动和协作。
在第一种应用场景下,工作流系统作为业务系统的内部横切组件出现,作为横切组件,工作流数据仅仅包括与流程逻辑相关的数据以及其他必需数据,这些数据包括工作流控制数据、工作流相关数据以及需要通过流程传递的业务数据。
在第二种应用场景下,由于不同业务系统之间的数据传递很大程度上依靠工作流系统,所以这些数据被封装为SDO在不同WEB服务间传递,需要注意的是,这些数据并不在工作流系统中存储。
在下面的工作流数据分类中,我们将详细分类这些工作流数据。
二、工作流数据的分类
提到工作流数据,就不得不提业务数据。作为最直接的区分,我们将存储于业务系统中的数据称为业务数据,将存储于工作流系统中的数据称为工作流数据。根据WFMC定义,我们将工作流数据分为工作流控制数据和工作流相关数据。
1、 工作流控制数据。指被工作流系统管理的系统数据,这些数据包括了与流程实例和任务实例相关的执行数据,例如流程实例的状态、执行时间等信息、任务实例的执行者、执行时间、状态、紧急程度等。
2、 工作流相关数据。指与业务流程相关的数据。工作流相关数据又具体分为3种:
· 影响流程实例执行的业务数据。在WFMC中,这个数据被描述为:工作流系统通过该数据来确定流程实例的流转条件,并选择下一个将执行的任务,这些数据可以被业务系统访问并修改。例如报销流程中的“报销金额”,这个数据会决定该流程的审批路径;再例如为任务设置的超时时间,这个数据会触发任务的取消。实质上这些数据就是工作流系统需要依赖于进行流程流转的业务数据。
· 契合业务的关联数据。指工作流系统与业务系统进行关联的数据,例如特定于WEB系统,工作流系统会在每个流程实例里保持有导航至对应业务表单的URL。
· 传递作用的业务数据。当流程跨越多个业务模块时,需要在模块间传递数据,此时会利用工作流系统进行传递,会在工作流系统里暂时存储这些业务数据。
那么,工作流数据有哪些应用场景呢?
三、工作流数据与业务上下文
工作流数据最重要的职责之一就是为业务系统的不同应用场景建立起与之对应的业务上下文。
什么是业务上下文?
我们知道,IT系统是对企业现实业务的映射。在一个翻译公司的典型业务场景中,校对人员对翻译人员提交的翻译文档进行审校,此时,校对人员持有翻译人员翻译后的文档,他需要对该文档进行检查,产生新的审校文档并反馈翻译人员的翻译质量。那么,映射到IT系统里,校对人员的任务通常对应于一张需要处理的业务表单,业务表单里会展现他进行当前工作所需要的数据:翻译文档、翻译人员信息、该校对工作的紧急程度等,另外,在这张表单里,他所能进行的操作也根据他此时的职责作出了行为限定:例如他可以上传新的校对后的文档,但是不能删除已有的翻译文档等。如下图1所示,业务表单实质上反映的是此刻我们能获取哪些数据以及能够如何处理这些数据,我们把它称之为业务上下文,可以看到,在IT系统里,业务上下文实质上等于数据加上行为。
企业业务由一系列相互关联的业务场景组成,这些业务场景对应于IT系统里的业务上下文,而业务上下文的本质则是数据加上行为。数据和行为的不同决定了业务上下文的差别。这与现实中的工作相符,人们根据获取/处理信息的不同,担负不同的职责。
工作流数据如何建立业务上下文呢?看一个简单的例子。
在实际应用工作流系统进行开发时,我们经常会碰到这样的问题:同一流程中的不同任务对业务数据拥有不同的权限,如下图6-9所示。
上图中,在执行请假申请任务时,申请者可以编辑请假人、天数和原因3个字段;而到审批任务时,审批者增加了一个可编辑的审批意见字段,但其余3个字段变化为只读字段。我们将这类问题统称为与流程相关的业务数据权限控制。
产生这类问题的原因是什么呢?原因就在于在一个业务流程里,不同的任务具有不同的业务上下文。如下图6-10所示,不同的任务展现不同的数据,并具有不同的行为。
在IT系统的设计实现中,数据的建模是通过领域模型实现的。在工作流系统的嵌入式应用中,流程实例即是通过与领域模型相关联实现与业务契合的。那么,图6-10可以进一步泛化为图6-11,流程中任务通过获取领域模型不同的部分实现业务上下文的界定。
在大部分的业务流程建模中,一个流程模型只与一个领域模型关联。
那么,回到最初的问题上,如何处理此类权限问题呢?答案非常明了:由领域模型实现对业务上下文的切分,工作流系统通过契合业务的关联数据与业务上下文挂接,保持工作流系统的单一职责。
如上图6-12所示,我们在业务系统里引入业务权限角色的概念,通过该角色隔离开工作流系统与业务数据权限,即我们认为业务数据权限的管理属于业务系统范围(由业务系统具体实现),更进一步,我们认为其属于领域模型的职责范围。在定义好业务系统的权限角色后,我们通过任务级别的工作流变量将流程中的具体任务与业务权限角色绑定,这样就实现了流程任务与业务数据权限的挂接。
在上面的例子中,我们看到的是利用关联业务的工作流数据界定任务级别的业务上下文,这是一种最简单的工作流数据应用场景。在不同应用中,我们可以看到,工作流数据一个重要的职责就是为业务流程里的任务/流程建立业务上下文,实现数据的聚合。在简单的应用场景里,对一个流程实例而言,这些数据可能只对应于一个领域模型;对流程实例里的一个任务实例而言,这些数据对应于领域模型的一个切面。复杂一些的情况,业务上下文需要跨越多个领域模型甚至多个业务系统,这时我们可以看到,通过工作流系统能够显著降低业务系统建模的复杂性,因为这些数据聚合工作可以有效分派给工作流系统承担。同时,我们需要保持工作流系统的单一职责,工作流系统只保存与业务数据进行关联的关联数据、必需的业务传递数据以及自身的执行数据。
四、工作流数据与数据分析
工作流数据的第2个应用场景是对业务流程执行进行数据分析,这部分的数据主要是工作流控制数据。这一部分正受到越来越多的重视,是未来工作流系统的发展方向。
这里有两个典型的应用例子:
例子1在对报销流程进行分析时,我们发现大部分的报销金额都低于500元,然而这些报销流程却都要经过很多环节,在与客户确认后,我们将低于500元的报销限定于部门内部审批即可,这样对个人来说大大加快了报销过程,对公司来说则省下了很多的办公成本。
例子2,在制造流程里,很重要的一点是需要控制流程的节拍时间,即流程里各个任务的完成时间要一致,如果有一项任务的时间多于其他任务,那么很快就会形成瓶颈,造成在制品的大量积压,前续的任务完成很快,中间忙死,后续任务执行者却无事可做,更重要的是,不能对客户进行快速交付。
五、工作流数据与流程路由
最后一种应用场景非常常见,这部分数据即影响流程实例执行的业务数据,直接上图:
这部分影响路由的一定是业务数据,它们保存到工作流系统里对流程路由产生影响。这种影响不限于任务的选择,还包括的任务的执行条件、任务的完成条件、基于数据的任务触发等。
六、工作流数据小结
总结一下,作为区分,我们将存储于业务系统中的数据称为业务数据,将存储于工作流系统中的数据称为工作流数据。
工作流数据分为两种:工作流控制数据和工作流相关数据。其中工作流相关数据又分为3种:影响流程实例执行的业务数据、契合业务的关联数据和传递作用的业务数据。
工作流数据的应用场景:为流程/任务建立业务上下文,这部分数据主要是契合业务的关联数据和传递作用的业务数据,这是工作流数据最重要的职责之一;数据分析,这部分数据主要是工作流控制数据,这是未来工作流的发展方向;影响流程路由,这部分数据人如其名,是影响流程实例执行的业务数据。
实际应用中,我们一定要保持工作流系统的单一职责,例如划分任务权限这个需求,一定需要业务系统自行实现权限的界定,工作流数据仅仅进行挂接。
分享到:
相关推荐
工作流与数据流是IT行业中两个重要的概念,尤其在软件开发和系统集成中扮演着关键角色。本篇文章将深入探讨这两个主题,并结合JavaScript常用函数、移动电子运行维护系统以及SSH架构,来阐述它们在实际应用中的重要...
在Windchill的工作流模块中,主要包括了工作流模板、工作流实例、工作流任务等多个方面。这些元素共同构成了一个完整的工作流框架。 #### 二、工作流管理模块 ##### 1.1 工作流模板(WfProcessTemplateMaster) ...
为了实现某个业务目标,需要多方参与、按预定规则提交数据时,就可以用到工作流。通过流程引擎,我们按照流程图,编排一系列的步骤,让数据可以按照一定的规则,一定的顺序,提交给一定的负责人进行处理,实现带有...
DevExpress是一款强大的.NET开发工具集,涵盖了多种UI控件、报表、数据分析以及工作流组件。它为开发者提供了丰富的功能,帮助他们快速构建高性能、高用户体验的Windows Forms、ASP.NET、WPF以及Blazor应用程序。...
这个源码可能包含这样的数据结构设计,如工作流实例表、任务表、参与者表等。 `ThinkPHP`是一个知名的PHP框架,它为快速开发高效、稳定的Web应用提供了强大的支持。在这个工作流项目中,ThinkPHP可能是用来构建后端...
Jeecg开源免费版工作流是一款基于Java平台的高效、灵活的企业级工作流管理系统,它集成了Activiti工作流引擎,为企业提供了强大的流程自动化能力。Jeecg致力于简化开发过程,提供快速构建业务系统的能力,同时也注重...
工作流引擎是一种软件系统,它负责管理和自动化组织内的业务流程。在C#中编写工作流引擎,可以利用.NET Framework或.NET Core提供的丰富的类库和工具,实现高度灵活和可扩展的流程控制。本文将深入探讨C#实现工作流...
简单的系统工作流数据结构表,轻量级简单系统工作流的源码轻量级简单系统工作流的源码轻量级简单系统工作流的源码轻量级简单系统工作流的源码轻量级简单系统工作流的源码轻量级简单系统工作流的源码轻量级简单系统...
在升级之前,确保系统运行稳定,备份当前的工作流数据以及整个OA系统的数据库。这一步至关重要,以防在升级过程中出现意外,可以及时恢复到原始状态。 二、下载升级包 获取官方发布的通达OA工作流升级至流程中心的...
3. **活动库**:探索内置的活动库,了解如何使用这些预定义的活动来构建工作流,包括控制流、数据流和事务处理活动。 4. **自定义活动**:学习如何创建自定义活动以满足特定业务需求,包括使用CodeActivity和...
.NET工作流源码架构是一种基于微软.NET框架的高级软件开发技术,用于构建可自定义、可扩展的工作流管理系统。此开源项目提供了100%可用的源代码,开发者可以直接使用或进行二次开发,以满足特定业务流程自动化的需求...
### 浅谈OA工作流系统的发展趋势:七个演变 #### 一、引言 随着企业信息化的快速发展,组织流程的优化、技术的进步以及知识管理的需求日益凸显,这推动了OA工作流系统的持续演进。从最初的简单事务处理到如今的智能...
在.NET框架中,C#是一种常用的编程语言,用于构建各种应用程序,包括那些涉及工作流的。工作流设计器(Workflow Designer)是.NET Framework提供的一种工具,它允许开发人员以图形化方式设计、创建和修改工作流逻辑...
科学工作流的定义强调了在网格或其他高级信息基础设施平台上集成大规模数据处理能力,实现科学研究的自动化,从而加速科学研究进程。 科学工作流系统作为管理和执行科学工作流的关键组件,需要具备以下功能: 1. *...
在Silverlight 5中,微软增强了对多媒体支持、数据绑定、图形渲染和网络通信等方面的特性,使得开发工作流设计器这样的复杂应用成为可能。 在该开源项目中,开发者可以利用VS2012集成开发环境的强大学习资源和调试...
ExtJS是一个强大的JavaScript库,提供了丰富的用户界面组件和数据绑定功能,而工作流则是管理和控制业务流程的一种方法。在本篇文章中,我们将深入探讨如何使用ExtJS实现工作流,并通过JavaScript来动态地控制和展示...
在使用C#工作流框架时,往往需要一个数据库来存储工作流的状态、历史记录以及相关的业务数据。压缩包中的“数据库备份”文件可能包含了预设的工作流实例、元数据和其他必要信息,便于快速部署和测试。在实际应用中,...
Workflow是EBS的基础架构技术之一,系统中大部分流程性的通知和审批控制、账户按规则自动生成都是通过Workflow实现的;R11i之后,模块间的协调,有一小部分也是通过Workflow的Business Event完成的。
Oracle EBS AGIS工作流的正确配置是保证跨组织数据交换顺利进行的关键。每个设置步骤都需要细心操作,确保所有组件正常运行,从而实现高效且安全的企业间业务流程。定期检查和维护这些设置可以预防潜在的问题,保持...
6. **持久化机制**:为了在系统重启或故障时能够恢复工作流状态,工作流引擎需要实现数据的持久化存储。 7. **API与服务接口**:供其他应用程序或组件与工作流引擎交互的接口,如启动新工作流实例、查询当前状态、...