首页> 中国专利> 一种OWL-S复杂进程的Petri网自动生成方法

一种OWL-S复杂进程的Petri网自动生成方法

摘要

本发明公开了一种OWL-S复杂进程的Petri网自动生成方法。本方明提出的方法采用以输入、输出为核心的数据流为中心的策略,得到各原子进程的输入、输出关系,将这种数据流关系转换为Petri网中的库所/变迁关系,并最终得到复杂进程中的所有内部行为。采用本发明可以更加准确、高效地完成模型转换,并可采用成熟的Petri网分析技术分析OWL-S复杂进程的内部行为。

著录项

  • 公开/公告号CN103761105A

    专利类型发明专利

  • 公开/公告日2014-04-30

    原文格式PDF

  • 申请/专利权人 杭州电子科技大学;

    申请/专利号CN201410041086.2

  • 发明设计人 俞东进;刘志清;杨威;

    申请日2014-01-28

  • 分类号G06F9/44;

  • 代理机构杭州求是专利事务所有限公司;

  • 代理人杜军

  • 地址 310018 浙江省杭州市下沙高教园区2号大街

  • 入库时间 2024-02-19 23:32:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-09-07

    授权

    授权

  • 2014-06-04

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20140128

    实质审查的生效

  • 2014-04-30

    公开

    公开

说明书

技术领域

本发明属于Web服务建模领域,具体涉及到一种OWL-S复杂进程的Petri 网自动生成方法。

背景技术

面向服务的计算(SOC)成为了软件领域最热门的研究内容之一。SOC的核 心理念是在交互的软件成分之间,构建松耦合的协同软件体系。SOC以Web服 务作为基本组成成分,并采用了一系列标准化的协议进行交互。Web服务技术 在刚刚兴起时,通过对原子服务进行灵活组合来快速构建业务流程相对简单的 信息系统,取得了良好的效果;但随着复杂业务流程的日益增多,越来越多的 功能丰富、内部逻辑复杂的大粒度服务开始出现在Web服务组合中;大粒度服 务不仅包含原子服务中拥有的静态的语法和语义信息,例如服务的操作、输入、 输出、消息等,而且也包含了内部控制流、数据流、交互协议、状态变迁等动 态行为属性,服务内部拥有相对比较复杂且稳定的时序等逻辑关系;因此,在 对大粒度服务进行描述、发现、组合以及验证时,需要区别于传统原子服务; OWL-S复杂进程模型可以精确地描述大粒度Web服务的内部行为,被广泛用于 描述大粒度Web服务。

研究OWL-S复杂进程的Petri网建模方法,可以通过形式化模型清晰、准 确地分析大粒度Web服务的内部行为。然而,大部分研究工作都采用手动方法 建立OWL-S复杂进程的Petri网模型。虽然,当OWL-S复杂进程内部行为比较 简单时,手动方式可以较准确地建立其Petri网模型;但是,当OWL-S复杂进 程内部行为非常复杂时,通过手动方式建立OWL-S复杂进程的Petri网模型不 具有可行性。

发明内容

本发明针对现有技术的不足,提供了一种OWL-S复杂进程的Petri网自动 生成方法。

本发明方法的具体步骤是:

步骤(1).读入一个用OWL-S复杂进程模型描述的大粒度Web服务描述文件, 该描述文件用<process:Sequence>表示Sequence(顺序)结构, <process:Split-Join>表示Split-Join(分支合并)结构,<process:Split>表 示Split(分支)结构,<process:Choice>表示Choice(选择)结 构,<process:Repeat-While>与<process:Repeat-Until>表示循环结构, <process:Perform>标签表示原子进程,<process:getDataFrom>表示原子进程 的输入。

步骤(2).解析OWL-S复杂进程的描述文件的结构,将该文件中控制结构以 及控制结构中的原子进程为节点构造树结构,深度优先遍历该树结构,得到 OWL-S复杂进程所包含的原子进程集合;解析得到OWL-S复杂进程的描述文件 结构中由标签<process:getDataFrom>表示的原子进程的输入,若P为原子进程 T1的输入,且P为原子进程T的输出,记为P.from=T,P.to=T1,遍历所有原子进程, 得到所有原子进程的输入集合。

步骤(3).解析步骤(2)中获得的树结构中的控制结构节点,若控制结构为 Sequence结构,该控制结构中的原子进程为Ti(i=1,2,...n),Ti依次执行,原子进程 Ti的输出为Pi,则Pi.from=Ti,Pi.to=Ti+1;若控制结构为Split-Join结构,该控制结 构中的原子进程为Ti(i=1,2,...n),Ti并发执行,原子进程Ti的输出为Pi,该控制结构 的前驱原子进程为T,后继原子进程为T1,T的输出为Pj(j=i),则Pj.from=T,Pj.to=Ti, Pi.from=Ti,Pi.to=T1;若控制结构为Choice,该控制结构中的原子进程为Ti(i=1,2,...n), Ti选择执行,原子进程Ti的输出为P,该控制结构的前驱原子进程为T,后继原 子进程为T1,则P.from={T1∨T2∨...∨Tn},P.to=T;若控制结构为Split结构,该控制 结构中的原子进程为Ti(i=1,2,...n),Ti并发执行,原子进程Ti的输出为Pi,该控制结 构的前驱原子进程为T,T的输出为Pj(j=i),则Pj.from=T,Pj.to=Ti;若控制结构为 Repeat-While或Repeat-Until,该控制结构中的原子进程为T,原子进程T的 输出为P,该控制结构的后继原子进程为T1,则P.from={T∧T1},P.to=T1;遍历所有 控制结构节点,得到所有原子进程的输出集合。

去除步骤(2)中得到的输入集合与步骤(3)中得到的输出集合中重复的集合 元素,构造新的输入输出集合,例如,输出集合中的元素P,P.from=T,P.to=T1, 输入结合中的元素P1,P1.from=T,P1.to=T1,则P与P1应为同一元素,应去除重复元 素P1

步骤(4).将步骤(3)中的获得的原子进程集合中的元素映射为Petri网中的 变迁元素,并构造变迁集合;将步骤(3)中获得的输入输出集合中的元素映射为 Petri网中库所元素,构造库所集合。

步骤(5).以步骤(4)中得到的变迁集合为列向量,以步骤(4)中得到的库所 集合为行向量构造Petri网的邻接矩阵A,并将矩阵元素初始化为0。

步骤(6).根据步骤(3)中得到的变迁元素与库所元素的关系,若变迁元素T 的输入为库所元素P,则将A[T,P]置为-1,若变迁元素T的输出为库所元素P, 则将A[T,P]置为1。

步骤(7).在展示界面中,将行向量中的元素图形化表示为圆圈标识的库所 元素,将列向量中的元素图形化表示为矩形表示的变迁元素;若行向量中的元 素P满足P.from=null,即P不为任何变迁的输出元素,则选取P作为起始节点, 深度优先遍历步骤(6)中得到的Petri网邻接矩阵,遍历结束后,将得到OWL-S 复杂进程对应的Petri网模型的图形化表示。

本发明所提供的OWL-S复杂进程的Petri网自动生成方法由一组功能模块 组成,它们包括:配置文件读入模块、配置文件结构解析模块、Petri网邻接 矩阵生成模块和Petri网绘制模块。

配置文件读入模块完成OWL-S复杂进程的描述文件的读入,该描述文件是 由OWL-S API提供的工具生成的。

配置文件结构解析模块根据读入的OWL-S复杂进程的描述文件,解析得到 OWL-S复杂进程中包含的原子进程以及控制结构,并得到所有原子进程的输入 输出集合;根据转换规则删除输入输出集合中的重复元素,并将原子进程集合 中的元素转换为Petri网中的变迁集合,将输入输出集合中的元素转换为Petri 网中的库所集合。

Petri网邻接矩阵生成模块以变迁集合为列向量,以库所集合为行向量,建 立Petri网的邻接矩阵A,并将矩阵元素初始化为0;若变迁元素T的输入为库 所元素P,则将A[T,P]置为-1,若变迁元素T的输出为库所元素P,则将A[T,P]置 为1。

Petri网绘制模块采用深度优先遍历策略,遍历Petri网邻接矩阵,并将结 果以图形化的形式表示。

本方明提出的方法采用以输入、输出为核心的数据流为中心的策略,得到 各原子进程的输入、输出关系,将这种数据流关系转换为Petri网中的库所/ 变迁关系,并最终得到复杂进程中的所有内部行为。该方法采用以输入、输出 为核心的数据流为中心的建模策略,可以清晰地体现OWL-S复杂进程内部的行 为;在分析OWL-S复杂进程的内部行为过程中,与其他以控制流为中心的方法 相比,采用本方法可以更加准确、高效地完成模型转换,并可采用成熟的Petri 网分析技术分析OWL-S复杂进程的内部行为。

附图说明

图1OWL-S控制结构转换图;

图2数据流图;

图3转换流程图。

具体实施方式

本发明基于转换规则集完成OWL-S复杂进程到Petri网模型的转换实现; 转化规则集中包含9条转换规则,规则集中的规则1至规则3完成OWL-S复杂 进程元素与Petri网对应元素的映射,规则4-1至规则4-6描述OWL-S控制结 构的映射规则,具体规则如下:

规则1:构成OWL-S复杂进程的原子进程的输入、输出均映射为Petri网的 库所(Place);

规则2:构成OWL-S复杂进程的原子进程均映射为Petri网的变迁 (Transaction);

规则3:构成OWL-S复杂进程的原子进程的输入输出有序关系均映射为 Petri网的弧(Acre);

规则4-1(Sequence(T0,T1)结构映射规则):根据规则2,将Sequence结构中的 原子进程T0、T1映射为Petri网中的变迁T0、T1;T0、T1顺序执行,<list:first> 标签标识的原子进程T0运行结束之后应执行由<list:rest>标签标识的原子进 程T1;记T0.next=T1,T1.next=null;

Sequence结构的主体描述如下,其对应的Petri网结构如图1(a)所示;

规则4-2(Split-Join(T1,T2)结构映射规则):根据规则4-1,原子进程T0执行结 束之后应执行Split-Join结构中的原子进程T1、T2,T1、T2并发执行,T1、T2执 行结束之后将执行原子进程T3;根据规则2,将原子进程T0映射为Petri网的变 迁T0,将Split-Join结构中的原子进程T1、T2映射为变迁T1、T2,将原子进程T3映射为变迁T3;记T0.next={T1∧T2},T1.next=T3,T2.next=T3,T3.next=null;

Split-Join结构的主体描述如下,其对应的Petri网结构如图1(b)所示;

规则4-3(repeat-While(T0)结构映射规则):根据规则4-1,Repeat-While结构 中的原子进程T0执行结束之后,若条件whileCondition为真,则循环执行T0, 否则执行T1;根据规则2,将Repeat-While结构中的原子进程T0映射为Petri 网的变迁T0,将原子进程T1映射为变迁T1,记if(condition=false)T0.next=T1,elseT0.next=T0

Repeat-While结构的主体描述如下,其对应的Petri网结构如图1(c)所示;

规则4-4(Choice(T0,T1)结构映射规则):根据规则4-1,Choice结构中的原子 进程T0或T1运行结束之后将执行原子进程T2;根据规则2,将Choice结构中的 原子进程T0、T1映射为Petri网的变迁T0、T1,将原子进程T2映射为变迁T2;记 T0.next=T2,T1.next=T2,T2.next=null;

Choice结构的主体描述如下,其对应的Petri网结构如图1(d)所示;

规则4-5(repeat-Until(T0)结构映射规则):根据规则4-1,Repeat-Until结构 中的原子进程T0执行结束之后,若条件untilCondition为真,则循环执行T0, 否则执行T1;根据规则2,将Repeat-Until结构中的原子进程T0映射为Petri 网的变迁T0,原子进程T1映射为变迁T1;记if(condition=false)T0.next=T1,elseT0.next=T0.

Repeat-Until结构的主体描述如下,其对应的Petri网结构如图1(e)所示;

规则4-6(Split(T1,T2)结构映射规则):根据规则4-1,原子进程T0执行结束之 后应执行Split结构中的原子进程T1、T2,T1、T2并发执行;根据规则2,将原 子进程T0映射为Petri网的变迁T0,将Split结构中的原子进程T1、T2映射为变 迁T1、T2;记T0.next={T1∧T2},T1.next=null,T2.next=null;

Split结构的主体描述如下,其对应的Petri网结构如图1(f)所示;

本发明所提供的OWL-S复杂进程的Petri网自动生成方法的具体实施方式 主要分3步(如图2所示):

(1)读入OWL-S复杂进程的描述文件,作为该转换方法的输入,解析OWL-S 复杂进程描述文件的结构,以控制结构和原子进程为节点构造树结构;(2)解析 OWL-S复杂进程的描述文件,得到OWL-S复杂进程的原子进程集合与各原子进 程的输入输出集合,去除输入输出集合中的重复元素,以原子进程集合为列向 量,输入输出集合为行向量,构造邻接矩阵A[T,P],根据变迁元素与库所元素的 关系初始化邻接矩阵,若变迁元素T的输入为库所元素P,则将A[T,P]置为-1, 若变迁元素T的输出为库所元素P,则将A[T,P]置为1,否则初始化为0;(3)深 度优先遍历矩阵A[T,P],在绘图区域显示图形化的Petri网模型。

(1)读入OWL-S复杂进程描述文件

读入OWL-S复杂进程的XML描述文件,解析OWL-S复杂进程描述文件的结 构,以控制结构和原子进程为节点构造树结构。

(2)解析OWL-S复杂进程描述文件

解析步骤(1)中获得的树结构,深度优先遍历该树结构,得到OWL-S复杂进 程所包含的原子进程集合;解析得到OWL-S复杂进程的描述文件结构中由标签 <process:getDataFrom>表示的原子进程的输入,若P为原子进程T1的输入,且 P为原子进程T的输出,记为P.from=T,P.to=T1,遍历所有原子进程,得到所有原 子进程的输入集合;

解析步骤(1)中获得的树结构中的控制结构节点,若控制结构为Sequence 结构,该控制结构中的原子进程为Ti(i=1,2,...n),由规则4-1可知Ti依次执行,原 子进程Ti的输出为Pi,则Pi.from=Ti,Pi.to=Ti+1;若控制结构为Split-Join结构,该 控制结构中的原子进程为Ti(i=1,2,...n),Ti并发执行,原子进程Ti的输出为Pi,由规 则4-2可得该控制结构的前驱原子进程T,后继原子进程T1,T的输出为Pj(j=i), 则Pj.from=T,Pj.to=Ti,Pi.from=Ti,Pi.to=T1;若控制结构为Choice,该控制结构中的 原子进程为Ti(i=1,2,...n),Ti选择执行,原子进程Ti的输出为P,由规则4-4可得该 控制结构的前驱原子进程T,后继原子进程T1,则P.from={T1∨T2∨...∨Tn},P.to=T;若 控制结构为Split结构,该控制结构中的原子进程为Ti(i=1,2,...n),Ti并发执行, 原子进程Ti的输出为Pi,由规则4-6可得该控制结构的前驱原子进程T,T的输 出为Pj(j=i),则Pj.from=T,Pj.to=Ti;若控制结构为Repeat-While或Repeat-Until, 该控制结构中的原子进程为T,原子进程T的输出为P,由规则4-3及规则4-5 可得该控制结构的后继原子进程T1,则P.from={T∧T1},P.to=T1;遍历所有控制结构 节点,得到所有原子进程的输出集合;将OWL-S复杂进程中包含的原子进程转 换为Petri网中的变迁,将原子进程的输入、输出转换为Petri网中的库所, 将原子进程及输入、输出之间的流关系转换为Petri网中的弧,合并输入集合 与输出集合中重复的元素,构造新的输入输出集合,例如,输出集合中的元素P, P.from=T,P.to=T1,输入结合中的元素P1,P1.from=T,P1.to=T1,则P与P1应为同一元 素,应去除重复元素P1;以变迁集合为列向量,以库所集合为行向量,建立Petri 网的邻接矩阵A,并将矩阵元素初始化为0;若变迁元素T的输入为库所元素P, 则将A[T,P]置为-1,若变迁元素T的输出为库所元素P,则将A[T,P]置为1,这里 采用邻接矩阵表示Petri网模型,如下所示:

p1p2...pmt1A[t1,p1]A[t1,p2]...A[t1,pm]t2A[t2,p1]......tnA[tn,p1]...A[tn,pm]

解析过程的具体实现步骤如图3所示。

(3)得到Petri网的图形化表示

在获得Petri网模型的邻接矩阵后,通过将Petri网模型图形化表示,可 以直观、清晰地表示该模型。此阶段利用图的深度优先搜索遍历技术,通过依 次遍历图中的各个节点,获得图中所有节点之间的关系,依次将变迁节点图形 化为矩形表示的变迁,将库所节点图形化为圆圈表示的库所,将变迁与库所的 流关系图形化为有向箭头表示的弧。

本发明可用于OWL-S复杂进程的Petri网建模,以快速、准确地建立OWL-S 复杂进程的Petri网模型。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号