首页 > 范文大全 > 正文

工作流与Petri net的关系

开篇:润墨网以专业的文秘视角,为您筛选了一篇工作流与Petri net的关系范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要: 从工作流的工程学发展与petri net数学属性的关系入手,重点分析当前工作流产品数学属性的缺位,并从一定角度探讨Petri net理念与工作流系统的融入。

关键词: 工作流;Petri net;概念

1 工作流基本概念

工作流管理系统从原理上和实现上来讲可以认为是一个BOS(业务操作系统),它管理着业务的流程,负责对业务流程进行静态的定义,则可以类比看做为OS(操作系统)里的静态的可执行程序的代码。基于静态流程规则的定义,业务流程又具有动态性,就是我们常说的流程实例。OS负责多进程的创建、调度、执行,保存进程的上下文信息等操作,同时需要人为操作时,等待人工执行,目的是让多个进程可以有条不絮地完全执行完毕。工作流管理系统的功能也类似,管理业务流程实例的创建、调度、执行,并保存各自流程实例的执行上下文信息,同时提供人工任务接口,以便让各个业务流程实例走完走好,好的管理系统还会给出相应的执行报告和监控接口。

以上只是从原理类比上做了个比喻,其实工作流发展至今,因为建模语言标准的过多与复杂,各自都有一套自己描述工作流相关的技术术语。这里进行一个简单的梳理,以便可以进一步理解本文后面会使用到的术语。“case”这个词,中文直译可能就是案例的意思,但这里理解为流程实例,一个流程定义可以对应多个流程实例,如同一个类可以对应多个该类的对象一样。工作流管理系统要做的就是尽可能地有效并高效地处理“case”。而通过按照某特定的次序执行“task”来处理“case”。这里“task”是任务节点的意思,工作流流程定义指定哪个任务节点要执行,且以什么次序执行。那么以什么次序执行则为“condition”(条件),满足什么条件就可以执行,执行完后会满足什么条件。对于特定的“case”要执行的“task”则叫做“work item”。而术语“resource”(资源)在这里既可以是人也可以是机器,是执行任务的主体。而某个case下由相应的执行者“resource”执行的“task”(任务)就可以确定一个“activity”(活动)。我们只关心“process”和“case”,因为这里讨论的是工作流与petri net的关系。

2 Petri net理论基础介绍

Petri net分经典petri net理论和高级petri net理论,是对离散并行系统的数学表示。Petri net是1960年代由卡尔·A·佩特里发明的,适合于描述异步的、并发的计算机系统模型。Petri net既有严格的数学表述方式,也有直观的图形表达方式,既有丰富的系统描述手段和系统行为分析技术,又为计算机科学提供了坚实的概念基础。研究领域趋向认为Petri网是所有流程定义语言之母。本文所提到的petri net未特别说明,均表示经典petri net。

Petri网是简单的过程模型,由两种节点:库所和变迁,有向弧,以及令牌等元素组成的。

2.1 Petri网的结构

1)Petri net的元素:

库所(Place)圆形节点,变迁(Transition)方形节点,有向弧(Connection)是库所和变迁之间的有向弧,令牌(Token)是库所中的动态对象,可以从一个库所移动到另一个库所。

2)Petri net的规则是:

有向弧是有方向的,两个库所或变迁之间不允许有弧,库所可以拥有任意数量的令牌。

2.2 Petri net的行为

如果一个变迁的每个输入库所(input place)都拥有令牌,该变迁即为被允许(enable)。一个变迁被允许时,变迁将发生(fire),输入库所(input place)的令牌被消耗,同时为输出库所(output place)产生令牌。

变迁的发生是原子的,有两个变迁都被允许的可能,但是一次只能发生一个变迁。如果出现一个变迁,其输入库所的个数与输出库所的个数不相等,令牌的个数将发生变化。Petri net是静态的。Petri net的状态由令牌在库所的分布决定。

2.3 Petri net的形式化定义

一个经典的Petri net由四元组(库所,变迁,输入函数,输出函数)组成。任何图都可以映射到这样一个四元组上,反之亦然。

2.4 Petri net流程建模

一个流程的状态是由在场所中的令牌建模的,状态的变迁是由变迁建模的。令牌表示事物(人,货物,机器),信息,条件,或对象的状态;库所代表库所,通道或地理位置;变迁代表事件,转化或传输。一个流程有当前状态,可达状态,不可达状态。

3 工作流与Petri net的关系

工作流发展至今,已经不是简单的一种工程实施的科学,它如同数据库一样有坚实的数学理论基础。当然现在流行的开源的工作流如Jbpm以及Osworkflow都是以软件工程设计为主导的实现,里面对工作流petri net理论的引用不多,就算是有也只是部分概念的简单借用而已。现阶段对petri net的研究和实践也有开源的实现,但主要都用于研究和学习领域。前面提到“研究领域趋向认为Petri网是所有流程定义语言之母”,自然petri net就能用于工作流流程建模,但不能是简单地“拿来主义”。在没对这些概念弄清楚之前,笔者也走过不少弯路,简单地认为反正petri net就是作为工作流的建模语言而已,没搞清楚什么情况下才适用,怎样才能让petri net作为工作流建模语言,弄清楚这个对搞清workflow与petri net的关系相当重要。

此处笔者谈几点自己的体会。我们普遍所说的petri net本身就很大的范围,如果只是指经典petri net理论就够了,就可以做为工作流流程建模的语言这是大错特错的。上面也列出了基本的经典petri net理论。从这些基本理论我们可以看出,petri net是一个自己推动的系统,即只要在满足“变迁”的“库所”处有足够的“托肯”就会发生“变迁”,而不需要等待外界人工或系统的干预或响应。这点是与工作流系统最大的不同,下图为WMFC所给出的工作流系统构件与接口图。