APP下载

基于Petri 的流程中间件研究

2014-12-13廖国栋肖玉容

江苏科技信息 2014年15期
关键词:库所令牌中间件

廖国栋,肖玉容

(1.亚信科技(南京)有限公司,江苏 南京 210016;2.江苏省电信公司,江苏 南京 320100)

1 Petri 网

一个Petri 网是特殊的一种定向图,最初的状态叫做最初记号M0。

由2 种节点组成,叫库所和变迁。库所是由圆圈来表示(S-圆圈),而变迁用条状或者方块表示(t-方框)。

从库所到变迁,或则从变迁到库所的弧形(F-有向弧),称之为流关系。弧上标注它的权值(正整数),如一个弧标注的是K,可以解释为K 条平行线的集合(token 的消耗值)。统一权值的标记通常可以省略。

如果一个标记(状态)分配一个库所P 一个非负的整数K,我们说P 被标记为K 托肯,将K 个黑点(托肯)在库所P 中。一个标记用M 表示,一个m 向量,m 表示库所的总数。

M 的第P 个成分,表示为M(p),是在库所P 中托肯的总数。

一个Petri 网是一个五元组,PN=(P,T,F,W,M0)其中:P={P1,P2,……,Pm}是定义一个库所集合,T={T1,T2,……,Tn}是定义一个变迁的集合,F∈(P×T)∪(T×P)是定义弧(流动关系)的集合,W:F→{1,2,3,…}是权值函数,M0:P→{0,1,2,3,…}是初始标记,P∩T=Ф 并且P∪T≠Ф。

一个Petri 网结构N=(P,T,F,W)没有任何特殊的最初的标记用N 表示。

一个Petri 网有最初的标记是(N,M0)。具体如图1 所示。

2 基于Petri 的流程中间件

2.1 体系架构

petriware 中间件体系架构图如图2 所示。

对中间件来说,待处理的任务是一种资源,处理能力(例如部署的业务进程)也是一种资源,处理任务所需的CPU,内存也是资源,所以面向业务层的代理Agent 须向中间件的masterserver 上报可用的资源(例如启动业务进程,或者某个节点空闲的内存数都可以作为资源)上报后,资源作为特殊类型的令牌存在中间件中,根据petri 图来消耗资源(例如进程被用于处理业务数据,或者内存被使用存放零时数据)与回收释放资源(例如进程处理完成,内存被释放)。HLA(High level Application)代表具体业务实现的应用,HLA 和中间件master之间通过Agent 来交互,HLA 通过调用中间件的API,从而屏蔽了Agent 和中间件在网络上的数据的数据交互,使得中间件可以和应用程序解耦和。

2.2 功能架构

petriware 中间件功能架构图如图3 所示。

Petri 中间件由Petri 网建模、Petri 网调度控制、Petri 网接入服务、监控服务组成,其各功能模块的功能简述如下。

2.2.1 Petri 网建模

Petri 网建模以Petri 网数据模型为基础,提供Petri 网设计与配置的可视化设计管理工具。

图1 Petri 网

图2 中间件体系架构

图3 中间件功能架构

(1)Petri 网设计。

Petri 网为petir 控制图的建模提供可视化的操作工具,即实现Petri 网可见即可得的设计工具。

☞支持Petri 网数学模型的控制图设计,即设计基本元素需包括:变迁、有向弧、抑制狐、库所、令牌。

☞支持基本模型元素的拖拽功能;可根据petri 网设计的需要,直接拖拽基本模型元素到编辑页面上,进行相关数据配置。

☞支持模型元素的布局拖拽功能。即通过拖拽,调整模型元素的布局。

☞支持能过界面选择模型元素,进行属性设置;如双击或右键菜单,进行模型元素属性的设置界面。

☞支持petri 网复制功能。即从选择现有的petri 网模型进行复制,形成的petri 网。

☞支持子网的设计。子网在父网上体现为变迁,且子网必须有一个有输入变迁与一个输出变迁。

☞支持子网的逐层查看功能,从总图层层深入,进入相关的子图查看。即从界面上点击变迁,进行子网进行模型浏览。钻取支持逐层查看功能。

(2)Petri 网配置。

Petri 网配置提供petri 网模型各类模型元素配置功能与操作界面。对petri 网各类元素的配置功能,可根据其运行相关性,分为展示配置与运行配置。展示配置定义模型元素的静态信息以及运行信息展示的方式与格式。运行配置定义模型元素运行相关的属性与规则。

(3)导入导出。

Petri 网建模后,可根据需要将其模型导出保存特定格式的XML 文件,其中导出文件包含Petri 网模型元素的元数据与布局数据。如导出的变迁,在文件里包含变迁的名称、变迁相关联的库所等。同时Petri 中间支持将符合格式Petri 网模型XML文件,导入建模工具中,其中导入的Petri 网能正确显示各类Petri 网模型元素以及元素间的布局。

2.2.2 Petri 网调度控制

Petri 网调度控制以Petri 网设计与配置为依据,驱动令牌在库所间进行流转的同时,实现业务逻辑控制与实现。

(1)Petri 网调度。

Petri 网调度是根据Petri 网的设计与配置,输入相关初始化令牌数据,创建控制实例,并委托Petri 网控制模块根据Petri网的设计,驱动令牌在变迁与库所之间进行流转。

(2)Petri 网控制。

Petri 网控制负责接收Peri 网调度模块的委托,根据Petri网的设计,驱动令牌在库所与变迁之间进行流转。其主要的功能为输入令牌分配与输出令牌分配:

输入令牌分配:Petri 网控制负责检测Petri 网内各库所内令牌的状况,根据Petri 控制论相关的算法,点火变迁并转相应的数据量的令牌传递至变迁。

输出令牌分配:Petri 网控制根据变迁输出的令牌,根据Petri 控制论相关的算法,将令牌分配至相应的库所。

2.2.3 Petri 网接入服务

Petri 网接入服务以标准化的接口,统一规范应用的接入,降低系统应用与控制的耦合性。Petriware 中间件对接入Petri网的应用的接入功能范围进行定义,并通过定义标准化的功能接口,规范应用的接入,借此解耦Petriware 中间件与应用关联度,提升两者的独立性。

Petri 网接入服务负责提供相应的操作接口,完成应用接入过程的交互,其功能为:应用注册、应用清销、令牌消耗、令牌创建、状态检测。

(1)应用注册。

接入Petriware 中间件的应用,需根据中间件预先分配的应用注册信息,调用Petriware 中间件的应用注册接口,完成应用的注册。通过应用注册的应用,才通接收到中间件发送的令牌,或生成令牌发送至中间件。

(2)应用注销。

应用退出前,需根据中间件预先分配的应用注册信息,调用Petriware 中间件的应用的注销接口,完成应用的正常退出。

(3)令牌消耗。

应用注册成功后,应用调用中间件提供的令牌消息通知接口,获取应用需处理的令牌信息。

(4)状态检测。

应用与中间件,需相互进行状态检测,以感知相互的存在,整体提升系统的容错性。即应用与中间件,均需提供状态检测接口,以返回各自的运行状态。

2.2.4 监控服务

以Petri 网为基础,对系统进行抽象并分层监控与管理,展示系统运行态全境,即为系统监控、流程监控、应用监控、进程监控等。

2.3 核心流程

2.3.1 Petri 网建模流程

基于Petriware 中间件的Petri 网建模过程,可简化抽象为以下流程。

(1)业务分析人员根据业务需求进行业务分析。

(2)业务分析人员根据业务分析结果,进行业务控制设计。

图4 Petri 网建模流程

(3)业务分析人员可将业务控制设计结果,使用中间件提供的建模工具,进Petri 网建模,进行设计结果表达。

(4)业务分析人员根据业务控制设计结果,对应用需求分析。

(5)业务分析人员根据应用需求分析结果,向应用开发厂商提交应用需求。

(6)应用开发厂商经需求分析、需求设计、应用开发与部署。

(7)应用开发与部署结束后,应用开发厂商根据业务设计,使用中间件平台的提供Petri 网配置功能,对Petri 网进行相应的配置。

(8)业务分析人员,使用中间件平台的Petri 网调度与控制功能,驱动业务逻辑,进行业务验证。

2.3.2 应用接入与处理流程

应用接入与处理流程,展示典型应用接入Petriware 中间件进行处理的流程。以下对此流程进行简要的说明:

(1)应用启动后,根据应用分配的注册信息,调用中间件的注册接口,进行应用的注册。

(2)应用注册成功后,应用调用中间件等令牌数据接口,等待应用处理的令牌。

(3)应用接收到令牌通知消息后,调用中间件的开始处理令牌接口,通知中间件平台应用令牌操作事务开始。

(4)应用进行业务操作结束后,调用中间件的结束处理令牌接口,通知中间件平台,用令牌操作事务结束。

(5)应用在业务处理空闲时,调用中间件平台的检测接口,检测中间件平台的状态。

(6)应用收到外部指令,退出应用前,调用中间件平台的应用注销接口后,应用退出。

3 结语

图5 应用接入与处理流程

目前由于缺乏流程中间件,流程设计与流程实现基本上是分离的,在业务流程建模之后,通过手工编码实现建模后的业务流程。这样应用软件在流程变更的成本很高,不仅要修改程序代码,还要做大量的测试工作来保证系统的稳定、可靠。系统的运营维护也较困难,流程变更后要升级系统才可以使新的流程生效。

业务应用流程使用本文设计的Petriware 中间件来设计开发,保证业务流程的灵活编排。

☞使用Petrwarei 中间件,也就强制使用petri 的方法论实现程序流程,一定程度上防止了程序流程设计缺陷。

☞Petriware 中间件平台能合理分配资源,提高系统并发度,避免系统并发过程中不必要的竞争和冲突,避免死锁的出现。

☞Petriware 中间件平台运用到整个系统的运行控制,不仅仅能实现自动调度,还可减少人力操作。

☞简化开发和维护流程,使流程的变更操作更简单,只需要在页面中执行简单的拖拽编辑,就可以使新的流程生效,简化开发工作。

[1]侯煜,孙梯全,施琴,等.Petri 网在计费系统中的应用研究[J].网络与通信,2012(3).

[2]林闯.随机Petri 网和系统性能评价[C].2 版.北京:清华大学出版社,2001.

猜你喜欢

库所令牌中间件
称金块
基于FPGA 的有色Petri 网仿真系统设计*
基于路由和QoS令牌桶的集中式限速网关
RFID中间件技术及其应用研究
动态令牌分配的TCSN多级令牌桶流量监管算法
基于VanConnect中间件的设计与开发
利用Petri网特征结构的故障诊断方法
中间件在高速公路领域的应用
一种递归π演算向Petri网的转换方法
一种支持智能环境构建的中间件