工作流在文件流程化管理中的应用
概述
现有文件管理系统已经满足企业的文件存储、共享、安全访问等基本需求,对于大型企业,由于自身业务和人员结构的复杂性,对文件的访问安全和协作有更高的要求,例如文件的访问审批、访问规则控制、协作编辑、层级保密等等,如果针对这些需求的复杂和多样性直接进行软件开发实现,即使功能开发完成也不具备任何灵活性,反而会让整个系统业务过于冗余和耦合,变得不可持续。
我们需要对文件管理的基础业务如文件存储、共享、安全访问等进行更好的抽象和解耦,将文件管理的基本业务作为系统基础功能和接口为上层企业需求提供灵活性,虽然企业需求复杂多变,各不相同,但基于文件管理系统的基础功能接口,通过一些标准操作流程进行"低代码"式的快速组装,可最低成本满足企业需求。
工作流技术提供的三大建模标准BPMN(流程建模)、CMMN(案例建模)和 DMN(决策建模),结合文件管理系统的基础能力,可以满足绝大多数企业文件流程化需求的实现。工作流技术发端于1970年 代中期办公自动化领域的研究工作,到目前为止经过50多年发展,已经非常成熟。市面上较为成熟的工作流产品有Activiti 、 Flowable、Camunda等,这些产品都有完善的工作流图形化建模工具,可以非常便捷的实现文件流程的建模和编排。
文件流程化业务堆栈,以下:
什么是工作流
维基百科对于工作流的定义:
工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型表达并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
工作流就是一系列按照特定顺序进行的工作步骤,这些步骤可以是自动的,半自动的,或者需要人工参与的。它就像是一个配方,告诉我们要完成一个任务,需要按照什么顺序,做什么事情。
举个简单的例子,比如我们去咖啡店点一杯拿铁咖啡,咖啡师的工作流可能是这样的:
- 研磨咖啡豆
- 用咖啡机提取咖啡
- 同时蒸煮牛奶
- 将蒸煮的牛奶倒入咖啡中
- 如果客人要求,可能还会在上面画一个拉花图案
这个工作流确保了咖啡师可以按照正确的步骤,顺利地制作出一杯拿铁咖啡。
工作流标准
工作流对应的三个主要国际标准是BPMN(流程建模)、CMMN(案例建模)和 DMN(决策建模),由OMG制定发布,被称之为流程改进标准的“三冠王”。OMG(对象管理组)是一个国际性(27 个国家)、会员驱动型(230 多个组织)和非营利性联盟组织。目前全球范围内的主要工作流产品:Activiti 、 Flowable、Camunda都是基于这三标准实现的。
BPMN标准
BPMN(Business Process Model and Notation 业务流程模型和标记法)规范提供了用于在业务流程图中指定业务流程的图形表示法。其目标是通过提供业务用户可以理解但为技术用户代表复杂流程语义的标准符号来支持业务流程建模。
可以把BPMN看作是绘制流程图的"语言"。就像我们使用英语、汉语等语言进行交流一样,BPMN提供了一套符号和规则,让我们可以用图形的方式描述和理解业务流程。这些符号包括用来表示事件、活动、网关等流程元素的图形,通过这些图形,我们可以清晰地描述一个业务流程的开始、进行和结束等各个环节。
BPMN已成为业务流程图事实上的标准。它旨在供设计、管理和实现业务流程的利益相关者直接使用,但同时又足够精确,可以将 BPMN图转换为软件流程组件。 BPMN 具有易于使用的类似流程图的表示法,独立于任何特定的实现环境。
BPMN 的主要目标是提供一种易于所有业务用户理解的表示法,从创建流程初始草案的业务分析师到负责实现执行这些流程的技术的技术开发人员,最后,管理和监控这些流程的业务人员。因此,BPMN 为业务流程设计和流程实现之间的差距创建了一座标准化的桥梁。另一个目标(但同样重要)是确保为执行业务流程而设计的 XML® 语言(例如 WSBPEL(Web 服务业务流程执行语言))可以使用面向业务的表示法进行可视化。
BPMN 的主要组成部分包括事件(Event)、活动(Activity)、网关(Gateway)和流(Flow)。
- 事件:表示流程中的某个事情,如开始、结束或者发生的某个特定情况。
- 活动:表示工作的一部分,如一个任务或者一组任务。
- 网关:用于控制流程的分支和合并,如基于某个条件决定流程的下一步走向。
- 流:表示控制流和消息流,用箭头表示流程的方向。
用户故事举例
"小明向公司申请报销差旅费。"
报销流程是一个有严格流程顺序定义的执行流程,有严格执行顺序,因此适合采用 BPMN ,创建流程如下:
CMMN标准
CMMN(Case Management Model and Notation)是一种用于描述和管理复杂工作流程的标准,特别是那些不可预测或需要动态调整的工作流程。
CMMN 定义了用于建模和图形化表达案例的通用元模型和符号,以及用于在不同工具之间交换案例模型的交换格式。 CMMN 旨在捕获案例管理产品使用的常见元素,同时也考虑到当前对案例管理的研究贡献。 CMMN 被称为自适应案例管理,它通过建议帮助决策过程,同时让人类牢牢占据主导地位。 CMMN 以生活信息和关系为中心,而传统业务流程以先验定义的活动序列为中心。
该规范定义了用于建模和图形化表达案例的通用元模型和符号,以及用于在不同工具之间交换案例模型的交换格式。对于案例管理产品来说,就像 OMG 业务流程模型和表示法 (BPMN) 规范对于业务流程管理产品一样。本规范旨在与 BPMN 保持一致并对其进行补充。
CMMN 是一种图形符号,用于捕获工作方法,这些工作方法基于对需要各种活动的案例的处理,这些活动可能以不可预测的顺序执行,以响应不断变化的情况。使用以事件为中心的方法和案例文件的概念,CMMN 扩展了 BPMN 建模的范围,包括结构化程度较低的工作工作和由知识工作者驱动的工作工作。结合使用 BPMN 和 CMMN,用户可以覆盖更广泛的工作方法。
价值主张
- 通过明确的模型,更快地就现状和未来流程达成一致;
- 通过图形表达符号鼓励利益相关者参与;
- 促进运营分析和改进;
- 创建流程、案例定义和业务规则库来培训新员工。
CMMN 的主要组成部分包括以下几种元素:
- Case:Case是 CMMN 的核心元素,代表一个具体的工作流程实例或情况(Case)。
- Task:Task代表在Case中需要完成的具体工作。Task可以是Human Task(由人执行的任务)、Process Task(由流程执行的任务)、Case Task(由另一个Case执行的任务)等。
- Event Listener:Event Listener用于监听并响应Case中的特定事件。
- Milestone:Milestone代表Case中的一个重要阶段或成果。
- Stage:Stage代表Case中的一个阶段,可以包含其他的Tasks、Event Listeners、Milestones等。
- Sentry:Sentry用于定义Case中的条件和事件,当这些条件满足或事件发生时,可以触发Task的执行或Milestone的达成。
- Plan Item:Plan Item代表Case中的一个可执行元素,如Task、Stage、Milestone等。
- Discretionary Item:Discretionary Item代表在Case执行过程中,可以由Case工作人员自由决定是否执行的元素。
以上就是CMMN 标准的主要组成部分。CMMN 通过这些元素,可以描述和管理复杂、动态、不可预测的工作流程。
用户故事举例
以培训新员工为例,这个过程可能包括一系列的步骤,如介绍公司文化、培训公司软件使用、分配工作任务等。但是,每个新员工的情况可能都不同,有的人可能已经熟悉某些软件,有的人可能需要更多的指导。这就需要我们根据实际情况,灵活地调整培训流程。
在这个新员工培训的流程图中,以下是一些可能的不可预测的工作流程:
- "新员工是否熟悉软件?":这是一个决策点,新员工是否熟悉软件是不可预测的,需要在实际培训过程中进行判断。
- "提供额外的软件指导":如果新员工不熟悉软件,需要提供额外的软件指导。这个指导的内容和长度可能会根据新员工的具体情况而变化,也是不可预测的。
- "分配工作任务":分配给新员工的具体工作任务可能会根据公司的实际需求和新员工的能力而变化,也是不 可预测的。
这些不可预测的工作流程需要在实际操作中根据具体情况进行调整,这就是 CMMN 标准的一个重要应用场景。
DMN标准
DMN(Decision Model and Notation)是一种标准,用于定义、表示和执行在业务流程和业务规则管理中使用的决策。DMN的目标是使得决策模型对所有业务用户(包括非技术和技术人员)都是可理解的,同时也能够支持决策的自动执行。
DMN旨在与 BPMN / CMMN 一起工作,提供一种机制来对与流程和案例相关的决策进行建模。虽然 BPMN 、CMMN 和 DMN可以独立使用,但它们经过精心设计以实现互补。事实上,许多组织需要结合用于其规定工作流的流程模型、用于反应性活动的案例模型以及用于更复杂的多标准业务规则的决策模型。这些组织将受益于组合使用这三个标准,选择最适合每种类型的活动建模的标准。这就是为什么 BPMN、CMMN 和 DMN 真正构成了流程改进标准的“三冠王”。
DMN的主要组成部分包括:
- 决策:这是DMN的核心元素,代表一个需要做出的决策。每个决策都有一个或多个输入,并产生一个输出。
- 输入数据:这些是决策所依赖的数据。
- 业务知识模型:这些模型封装了决策所依赖的业务知识。
- 知识源:这些是业务知识模型的来源,可能是文档、政策、规则等。
- 决策表:这是一种表格,用于表示决策逻辑。决策表的每一行代表一个规则,每一列代表一个输入或输出。
例如,一个银行可能有一个决策模型,用于决定是否批准贷款申请。输入数据可能包括申请人的信用评分、收入等信息,决策表可能包含一系列的规则,如"如果信用评分大于700并且收入大于50000,那么批准贷款"。这个决策模型可以被清晰地表示出来,并可以自动执行。
在这个流程图中,"信用评分大于700?"和"收入大于50000?"是决策节点,根据这些决策的结果,流程会走向"批准贷款"或"拒绝贷款"。
文件流程化
文件流程化是在现有工作流工具基础上结合文件管理系统提供的基础访问能力实现的可编排的业务流程。以权限控制流程为例,在常见的文件权限控制方式下,通常只能设置人员对固定位置文件的访问权限,例如可设置权限:小明 可访问 “/公司/研发部资料“ 下的所有文件
,这只是一条权限,在实际生产环境 中,尤其是大型组织,情况要复杂的多,例如:
- 教师创建”数学作业” 文件夹,用于学生提交作业,截至时间为下午6点,过时则禁止学生上传/编辑,过时1小时前邮件提醒没有提交作业的学生。
- 拒绝角色为”实习生“的人员上传大于 1GB 的文件。
- 对于标签为"合同"的文件,自动设置”机密“标签(只能被授权"机密"人员访问), ”研发部“人员只能查看,不能修改。
为此我们可以使用工作流方式实现上述流程,工作流中可能包含多个任务和权限,而权限不仅包括主体、资源、行为三个基本要素,还包括了人员/组织属性、文件属性、文件标签、角色、用户组、IP、请求时间等更丰富的表达,它们可以使用工作流进行自由搭配,灵活组合,实现更强大的安全访问控制能力。
以工作流方式实现上面 "教师收作业" 用户故事的简单流程: