论文部分内容阅读
摘 要:由于缺少合适的服务描述模型,基于BPEL服务组合方法无法实现自动服务组合。提出一个基于STRIPS的服务描述模型实现服务自动组合。当存在不同的服务前提对应不同服务结果时,STRIPS模型变成了一个NFA,扩展POPLAN算法,将NFA变成DFA,实现了不确定状态服务的自动组合。
关键词:自动服务组合;STRIPS;DFA;NFA;Extended POPLAN
1 引言
近年来,软件服务作为网络上信息处理能力的一种抽象形式得到了广泛关注。面向服务的计算(SOC)技术已成为标识分布式系统和软件集成等方向技术进步的一个新的里程碑[1]。SOC倡导以服务及其组合为基础构造应用的开发模式,使能标准化、松耦合和透明的应用集成方式,有助于提高应用系统的互操作能力、敏捷性和集成能力[2]。
本文提出了基于STRIPS(Stanford Research Institute Problem Solver)[3]的服务组合描述模型,扩展POPLAN算法,通过一阶逻辑计算确定状态服务组合,实现自动服务组合。
2 基于STRIPS的服务组合描述模型
STRIPS是R.Fikes和N.Nilsson在1971年提出的一个自动规划问题分析器,后来发展成为一种形式化的规划输入语言。基于STRIPS来做服务组合模型,包括领域描述的一阶谓词逻辑和包含条件和结果的服务行为。
服务(Service):服务S是一个操作符集合,S=。
服务状态State(S):是领域中的一个命题子集合组成,对于集合中的每个命题,值均为“真”,非值均为“假”,而且集合外的命题不确定。
目标状态Goal(S):是一个领域命题子集合,集合中元素为“真”,集合外命题不确定。
可执行服务组合规划(Executable Service Composition Plan): 可执行服务组合规划对应于可执行业务流程语言应用(Executable BPEL或者BPEL)。
松链接(Casual-Link): 。
抽象服务组合规划(Abstract Service Composition Plan):一个服务行为序列,满足从初始状态到目标状态转移, Π=。DFA和NFA的E-traveling服务组合分析。
某旅游系统是实现了的一个包含旅游代理、飞机票代理、火车票代理、宾馆服务和信用卡交费服务等的旅游服务组合原型系统,如图1和2。
图1是一个DFA的旅游领域业务流程图。目前Web服务组合相关标准不支持相似能力优先级的选择,而DFA也不能在一个状态连接多个后继状态,因此在规划选择飞机还是火车时实际是不可能同时出现在一个状态的转移图中。而把每一个步骤映射成一个服务行为,即可以得到服务组合结果。
图2是一个非确定有限状态机图。当查询到宾馆价格时,旅游代理可以判断是否满足用户要求,如果不满足可以通过重新查询宾馆架构,否则调用宾馆预定服务。同样的情况包括火车或者飞机票价查询和预定。用户甚至可以因为对行程不满意而更新需求(A16:revision required),更换满意的房间价格,类型、飞机票价格,出行时间等等。
3 基于STRIPS的自动服务组合算法
3.1 面向DFA的POPLAN服务规划算法
DFA的服务组合问题,因为服务行为及其对应的输入输出确定,为了实现自动服务组合,需要解决两个问题。第一,服务选择,第二,服务编排,及确定服务组合逻辑及其顺序。
3.1.1 服务选择
借鉴SHOP2[10]分析含输入输出的服务描述生成服务行为前提和结果。
算法 Service Predictions Effects Creation
Input:a WSDL definition of Service S
Output: precondition,
effect set of the form(S,Pre,Eff,Cost,Role, Provider)
Insert Operator o in table as service operator
Pre=a conjunct of all input of A,as defined in table,
plus one more precondition —0
Eff=a conjunct of all output, plus one more effect as o,
and delete other conflict with Eff
For service request,the cost is 1,else for service
response the cost is 0.5
Give related role and provider value
DFA的旅游服务场景中服务行为
3.1.2 服务编排
基于BPEL规范,将服务之间的结构关系主要分解为顺序、并发、选择和循环来处理。
算法Service Structure Determination(π)
Input: a partial-order plan with steps,
step order and casual links
Output: Structure(π)
关键词:自动服务组合;STRIPS;DFA;NFA;Extended POPLAN
1 引言
近年来,软件服务作为网络上信息处理能力的一种抽象形式得到了广泛关注。面向服务的计算(SOC)技术已成为标识分布式系统和软件集成等方向技术进步的一个新的里程碑[1]。SOC倡导以服务及其组合为基础构造应用的开发模式,使能标准化、松耦合和透明的应用集成方式,有助于提高应用系统的互操作能力、敏捷性和集成能力[2]。
本文提出了基于STRIPS(Stanford Research Institute Problem Solver)[3]的服务组合描述模型,扩展POPLAN算法,通过一阶逻辑计算确定状态服务组合,实现自动服务组合。
2 基于STRIPS的服务组合描述模型
STRIPS是R.Fikes和N.Nilsson在1971年提出的一个自动规划问题分析器,后来发展成为一种形式化的规划输入语言。基于STRIPS来做服务组合模型,包括领域描述的一阶谓词逻辑和包含条件和结果的服务行为。
服务(Service):服务S是一个操作符集合,S=
服务状态State(S):是领域中的一个命题子集合组成,对于集合中的每个命题,值均为“真”,非值均为“假”,而且集合外的命题不确定。
目标状态Goal(S):是一个领域命题子集合,集合中元素为“真”,集合外命题不确定。
可执行服务组合规划(Executable Service Composition Plan): 可执行服务组合规划对应于可执行业务流程语言应用(Executable BPEL或者BPEL)。
松链接(Casual-Link): 。
抽象服务组合规划(Abstract Service Composition Plan):一个服务行为序列,满足从初始状态到目标状态转移, Π=
某旅游系统是实现了的一个包含旅游代理、飞机票代理、火车票代理、宾馆服务和信用卡交费服务等的旅游服务组合原型系统,如图1和2。
图1是一个DFA的旅游领域业务流程图。目前Web服务组合相关标准不支持相似能力优先级的选择,而DFA也不能在一个状态连接多个后继状态,因此在规划选择飞机还是火车时实际是不可能同时出现在一个状态的转移图中。而把每一个步骤映射成一个服务行为,即可以得到服务组合结果。
图2是一个非确定有限状态机图。当查询到宾馆价格时,旅游代理可以判断是否满足用户要求,如果不满足可以通过重新查询宾馆架构,否则调用宾馆预定服务。同样的情况包括火车或者飞机票价查询和预定。用户甚至可以因为对行程不满意而更新需求(A16:revision required),更换满意的房间价格,类型、飞机票价格,出行时间等等。
3 基于STRIPS的自动服务组合算法
3.1 面向DFA的POPLAN服务规划算法
DFA的服务组合问题,因为服务行为及其对应的输入输出确定,为了实现自动服务组合,需要解决两个问题。第一,服务选择,第二,服务编排,及确定服务组合逻辑及其顺序。
3.1.1 服务选择
借鉴SHOP2[10]分析含输入输出的服务描述生成服务行为前提和结果。
算法 Service Predictions Effects Creation
Input:a WSDL definition of Service S
Output: precondition,
effect set of the form(S,Pre,Eff,Cost,Role, Provider)
Insert Operator o in table as service operator
Pre=a conjunct of all input of A,as defined in table,
plus one more precondition —0
Eff=a conjunct of all output, plus one more effect as o,
and delete other conflict with Eff
For service request,the cost is 1,else for service
response the cost is 0.5
Give related role and provider value
DFA的旅游服务场景中服务行为
3.1.2 服务编排
基于BPEL规范,将服务之间的结构关系主要分解为顺序、并发、选择和循环来处理。
算法Service Structure Determination(π)
Input: a partial-order plan with steps,
step order and casual links
Output: Structure(π)