• 沒有找到結果。

Travel Profile Generator

N/A
N/A
Protected

Academic year: 2021

Share "Travel Profile Generator "

Copied!
44
0
0

加載中.... (立即查看全文)

全文

(1)

第三章 Workflow Scheduling 運作模式

本章將闡述以資訊網服務及 Workflow Reference Model 為基礎的旅遊排程 系統的整體架構、並且利用資訊網服務的特性來達到網路上不同資源間的整合,

例如在排成過程中可能需要各種的資源、如查詢飯店、餐廳、景點等資訊、而這 些資訊的提供者可能都是在不同的地方使用不同的資料庫系統、但只要其提供資 訊網服務的服務、如此就可以發揮資訊網服務跨平台的特性、來整合這些資訊。

因此本系統善加利用資訊網服務的優點而發展出特色如下:具有排程功能的 single sign on 系統。

我們將 Workflow Scheduling 運作模式分成下列部分來討論:一、旅遊一 站式服務架構,二、旅遊行程產生器,三、旅遊行程轉換器四、Task Concurrency control。

3.1 旅遊一站式服務架構

如同之前所探討的問題、網路上有很多關於旅遊的網站,一位使用者如果 要訂購一個旅遊的行程、必需要考慮到旅館、飯店、交通及景點各方面的資訊。

要訂旅館、車票、訂餐及遊戲景點的門票、本研究決定開發一個可以節省時間的 一個旅遊系統,稱為「旅遊排程規劃系統」(Travel Schedule Profile Builder,

TSPB),其功能就是要讓使用者能在一個系統中就能滿足所有的需求。包括旅館、

車票、訂餐及遊戲景點的預先訂購,也就是所謂的旅遊的 one stop service。

3.1.1 TSPB 的運作機制

TSPB 稱為「旅遊排程規劃系統」、顧名思義就是要用來規劃一個旅遊的行

程,讓使用者可以很快速、容易的得到所需要的行程規劃、包括行程當中所需的

(2)

圖 3-1 TSPB 的運作機制

對使用者而言、他看到的只是 TSPB 的前端程式,只要選擇好所要到的景點、

需要訂的旅館、餐廳、交通及景點門票就會產生一個旅遊的 profile。這個 profile 再交由 TSPB 執行,產生所要的結果。所以對使用者而言就是所謂的「旅 遊一站式服務架構」。而整個系統的詳細架構如圖 3-2 所示。

(3)

在 TSBP 執行中會去呼叫每個需要的資訊網服務。其呼叫到的 Service 有分 成 4 大類:餐廳服務提供者、旅館服務提供者、交通服務提供者、景點服務提供 者。所以此系統結合各領域的資訊網服務,以下說明各領域的資訊網服務。

3.1.2 餐廳服務提供者

餐廳服務提供者中每家餐廳都有自己的資訊網服務、每個資訊網服務都可 以與系統作連結、也就是系統中的一個 partner。透過這個 partner 的資訊網服 務 可以事先預訂餐廳。預訂餐廳的資訊網服務 需要具備有一些參數的資訊、就

圖 3-2 旅遊排程系統架構圖

(4)

是系統在運作中需要的,而這些資訊也將會被存放在資訊網服務的餐廳訂購檔案 (Restaurant Book File,RBF)中。此 RBF 檔案的標籤及屬性的意義如表 3-1 所示。

此 RBF 檔案的標籤結構如圖 3-3 所示,每間餐廳都會有這樣的一個 XML 檔 案記錄訂餐的情形,< restaurants >為第 0 層的根元素,第一層的 date 為記錄 某一天的餐廳訂位情形,第二層的<午餐>及<晚餐>則是記錄某一天的晚餐及午餐 的訂位情形、第三層的<booked>則記錄有幾個座位已經被預訂了。

標籤名稱 屬性名稱 說明

< restaurants >標籤為這個 XML 文件的根元素

seat seat 屬性表示這家餐廳共有幾個座位

restaurants

name name 屬性表示是哪一家餐廳

< date>標籤包含了訂餐日期的資訊 date

time time 屬性表示哪一天訂了位置

午餐 <午餐>標籤包含了訂午餐的資訊

晚餐 <晚餐>標籤包含了訂午餐的資訊

<booked>標籤記錄有幾個座位已被預訂 booked

people people 屬性表示是誰訂的座位 表 3-1 餐廳訂購檔案之標籤及屬性意義

(5)

圖 3-4 是一個餐廳服務提供者的資訊網服務運作過後的 RBF 的範例,從這 個文件可以看出來在冬山河餐廳 1 的這家餐廳共有 100 個座位、在民國 94 年 1 月 26 號的中午已經被預訂了 25 個座位,晚餐也被預訂了一些座位,及預訂者的 姓名等資訊。

restaurants

├ date

├├ 午餐

├├ 晚餐

├├├ booked

圖 3-3 餐廳訂購檔案之標籤結構

<?xml version="1.0" encoding="Big5"?>

<restaurants seat="100" name="冬山河餐廳 1">

<date time="940126">

<午餐>

<booked people="張曉明">10</booked>

<booked people="張小明">15</booked>

</午餐>

<晚餐>

<booked people="張大明">19</booked>

</晚餐>

</date>

<restaurants>

(6)

3.1.3 旅館服務提供者

旅館服務提供者中每個景點附近可能會有好幾家旅館,每家旅館都有自己 的資訊網服務、也是系統中的一個 partner,這個 partner 也需要 Hotel query information 及 Hotel book information 有就是 partner 的資訊網服務的屬性。

Hotel query information 包含有日期、房間類別、房間數量,Hotel book information 包含有日期、房間類別、房間數量及訂購者。這也都是系統運作所 需的資訊、這些資訊都會被記錄在資訊網服務中的旅館訂購檔案(Hotel Book File,HBF)中、這個 HBF 檔案的標籤及屬性意義如表 3-2 所示。

標籤名稱 屬性名稱 說明

<hotel>標籤為此文件的根元素 hotel

name name 屬性表示是哪一家旅館

< rooms >標籤包含房間的一切資訊

type type 屬性記錄是哪一種類型的房間

rooms

total total 屬性記錄這種類型的房間有幾間

< room >標籤包含房間的細部資料

nb nb 屬性為房間的編號

room

window window 屬性為此房間是否有好的視野

< booktime>標籤記錄這間房間在某天已被預訂 booktime

people people 屬性記錄訂購者是誰

表 3-2 旅館訂購檔案之標籤及屬性意義

(7)

此 HBF 檔案的標籤結構如圖 3-5 所示,每間旅館都會有這樣的一個 xml file 記錄訂餐的情形,< hotel >為第 0 層的根元素,第一層的 rooms 為記錄某一種 類房間如單人房或雙人房被預定的資訊,第二層的< room >則是記錄某一間房的 訂位情形、第三層的< booktime >則表示某間房間在哪個已經被預訂了。

圖 3-6 是一個旅館服務提供者的資訊網服務運作過後的 HBF 的範例,從這 個文件可以看出來在冬山河旅館 1 的這家旅館有單人房 20 間、在民國 94 年 1 月 26 號的第編號 s01 的房間已經被預訂了,及預訂者的姓名等資訊。

hotel

├ rooms

├├ room

├├├ booktime

圖 3-5 旅館訂購檔案之標籤結構

<?xml version="1.0" encoding="Big5"?>

<hotel name="冬山河旅館 1">

<rooms type="單人房" total="20">

<room nb="s01" window="yes">

<booktime people="張小明">940126</booktime>

</room>

<room nb="s02" window="yes" />

<rooms>

………

<hotel>

(8)

3.1.4 交通服務提供者

在每個旅遊的行程當中會經歷好幾個交通的階段、可能要先搭火車到某一 景點、然後又再撘公車到另一個景點,所以在交通服務提供者中的 partner 會與 系統有最多次的互動關係。Transportation query Partner 的資訊網服務的屬 性有日期、車次、起站、迄站、數量,Transportation book Partner 的屬性有 日期、車次、起站、迄站、數量及訂購者。這些 information 都會記錄在資訊網 服務的交通訂購檔案(Transportation Book File,TBF)中、這個檔案的標籤及屬 性意義如表 3-3 所示

標籤名稱 屬性名稱 說明

trains <trains>標籤為此文件的根元素

train <train>標籤包含列車的資訊

車次 車次屬性記錄火車的車次

車種 車種屬性記錄火車的種類

車廂 車廂屬性記錄火車的車廂編號

seat <seat>標籤是包含座位的細部資訊

nb nb 屬性記錄座位的編號

booktime <booktime>標籤記錄車票被預定的日期

people people 屬性記錄訂購訂購者

此 TBF 檔案的標籤結構如圖 3-7 所示,火車業者會有這樣的一個 xml file 記錄火車的訂位情形,< trains >標籤為第 0 層的根元素,第一層的<train>標

表 3-3 交通訂購檔案之標籤及屬性意義

(9)

籤為記錄某一車次的列車、<seat>標籤包含了座位號碼的資訊、<booktime>記錄 了某天的座位已經售出。

圖 3-8 為一個 TBF 檔案的範例、從例子中可看出在 93 年 12 月 11 日及 93 年 12 月 13 日的 1001 車次的 1 車 1 號的位置都已被訂購了。

圖 3-7 交通訂購檔案之標籤結構 trains

├ train

├├ seat

├├├ booktime

<?xml version="1.0" encoding="Big5"?>

<trains>

<train 車次="1001" 車廂="1" 車種="自強號" >

<seat nb="1">

<booktime people="張小明">931211</booktime>

<booktime people="張小銘">931213</booktime>

</seat>

<seat nb="3" />

<seat nb="2" />

<seat nb="4" />

<seat nb="5" />

………..

</train>

</trains>

(10)

3.1.5 景點服務提供者

景點服務提供者中每個景點會有要收門票的情形,每個景點都有自己的資 訊網服務、也是系統中的一個 partner,這個 partner 也需要 Site query information 及 Site book information 有就是 partner 的資訊網服務的屬性。

Site query information 包含有日期、數量,Site book information 包含有日 期、數量及訂購者。這也都是系統運作所需的資訊、這些資訊都會被記錄在資訊 網服務中的景點門票訂購檔案(Site Book File,SBF)中、這個 SBF 檔案的標籤及 屬性意義如表 3-4 所示。

標籤名稱 屬性名稱 說明

< tickets>標籤為此文件的根元素 tickets

amount amount 屬性表示門票或娛樂設施的數量

< date>標籤包含訂票的時間資訊 date

time time 屬性記錄某天的門票或娛樂設施已售出

booked <booked>標籤包含訂票者的資訊

people people 屬性記錄實際訂購者是誰

數量 <數量>標籤記錄售出幾張票

此 SBF 檔案的標籤結構如圖 3-9 所示,旅遊景點業者會有這樣的一個 xml file 記錄門票或娛樂設施的訂位情形,< tickets >標籤為第 0 層的根元素,第 一層的< date >標籤為記錄某個時間的情形、< booked >標籤包含了訂購者的資 訊、<數量>記錄售出了幾張門票或娛樂設施的票。

表 3-4 景點門票訂購檔案之標籤及屬性意義

(11)

圖 3-10 為一個 SBF 檔案的範例、從例子中可看出在 93 年 11 月 26 日的門 票已經被張曉名及張小明各預訂了一些門票了。

trains

├ date

├├ booked

├├├數量

圖 3-9 景點門票訂購檔案之標籤結構

<?xml version="1.0" encoding="Big5"?>

<tickets amount="250">

<date time="931126">

<booked people="張曉名">

<數量>6</數量>

</booked>

<booked people="張小明">

<數量>12</數量>

</booked>

</date>

< tickets>

圖 3-10 景點門票訂購檔案之範例

(12)

3.2 旅遊行程產生器

本系統是讓使用者透過網頁自由選擇旅遊地點及旅遊時間及一些相關條 件、當使用者選取完成及送出之後就可以獲得餐廳、旅館、車票、景點的相關資 訊及預訂好行程上需要的事務。圖 3-11 顯示了 TBPB 的詳細架構、TBPB 分成兩 大子系統「程序定義器」及「BPEL Engine」,本節將討論「程序定義器」中的「旅 遊行程產生器」(Travel Profile Generator,TPG)。TPG 子系統會根據輸入的參 數值產生一個 profile 檔案稱之為「旅遊排程記錄檔」(Travel Schedule Profile,TSP)。此檔案為旅遊資訊網服務整合時之資料流程描述語言。

3.2.1 TPG 運作概念

TPG 稱為「旅遊行程產生器」、也就是會透過與餐廳、旅館、車票、景點的

相關資訊網服務排程之後產生出「旅遊排程記錄檔」(Travel Schedule

Profile,TSP)。圖 3-12 為 TGP 的內部運作概念,由圖中可了解在 TPG 中有 4 種 BPEL Engine

Travel Profile Generator

Travel Profile Converter

TSP

Process Definition

BPEL SWSFL

圖 3-11 TBPB 的詳細架構圖

(13)

旅遊的評估模組及一個 scheduler。4 種評估模組分別是:餐廳評估模組、旅館 評估模組、交通評估模組及景點評估模組。這四個評估模組就是產生 TSP 的必要 元素。以下分別就 4 種類別的評估模組作詳細介紹。

1.餐廳評估模組

「餐廳評估模組」就是要找出在整個旅遊行程中要在什麼地方用餐、在「餐 廳評估模組」中有一個資訊網服務(Restaurant Evaluation 資訊網服

務,REWS)。這個資訊網服務有用餐地點及用餐類別兩個參數,另外在「餐廳評估 模組」中有一個記錄每個景點的餐廳資訊的 xml 檔案,稱為「餐廳資訊儲存 XML 文件」(Restaurant Information Storage,RIS)。在 TPG 中透過 REWS 從 RIS 中 找出適合的餐廳,表 3-5 為 RIS 的標籤及屬性意義。

restaurant evaluator

Transportation evaluator

hotel evaluator

Travel Profile Generator

site evaluator scheduler

圖 3-12 旅遊行程產生器運作概念圖

(14)

圖 3-13 為 RIS 的的標籤結構圖、<cities>為第 0 層的標籤,第一層的<city>

標籤有一個子標籤< name>記錄了是哪一個城市,第二層的<site>及其子標籤

<name>則是記錄是哪一個景點,<rst>標籤記錄是哪一家餐廳。

圖 3-14 是一個 RIS 的範例、在例子中可看出在礁溪溫泉有好幾間餐廳、而 且每家餐廳都會有一個 query 及 book 的屬性來記錄要詢問餐廳的座位及訂位的 資訊網服務的 location,有了這個 location 才可以查詢的餐廳的資訊等等。

標籤 屬性 說明

<cities> <cities>標籤為這個 XML 文件的根元素

<city> <city>標籤為記錄在哪個城市

<name> <name>標籤記錄城市的名稱

<site> <site>標籤記錄景點的名稱

<rst> <rst>標籤記錄餐廳的名稱

price price 屬性記錄餐廳等級

query query 屬性記錄餐廳 query 類別的資訊網服務 book book 屬性記錄餐廳 book 類別的資訊網服務 表 3-5 餐廳資訊儲存 XML 文件之標籤及屬性意義

cities

├ city

├├ name

├├├site

├├├├name

├├├├rst

圖 3-13 餐廳資訊儲存 XML 文件之標籤結構

(15)

圖 3-15 為餐廳的位置圖、每個景點附近都會有一些餐廳、有些是 5 星級、

有些是 4 星級等等,根據餐廳評估模組的評估來找出最適合的餐廳。

<?xml version="1.0" encoding="Big5"?>

<cities>

<site>

<name >礁溪溫泉</name>

<rst price="五星級"

query="http://127.0.0.1:8080/axis/travel/restaurant/jiaosi/jiaosi1/jiaosi1_rest_query.jws"

book="http://127.0.0.1:8080/axis/travel/restaurant/jiaosi/jiaosi1/jiaosi1_rest_book.jws">

礁溪溫泉餐廳 1</rst>

<rst price="四星級"

query="http://127.0.0.1:8080/axis/travel/restaurant/jiaosi/jiaosi1/jiaosi2_rest_query.jws"

book="http://127.0.0.1:8080/axis/travel/restaurant/jiaosi/jiaosi1/jiaosi2_rest_book.jws">

礁溪溫泉餐廳 2</rst>

……….

</site>

……….

< /cities >

……….

圖 3-14 餐廳資訊儲存 XML 文件之範例

(16)

2.旅館評估模組

「旅館評估模組」就是要找出在整個旅遊行程中要在什麼地方住宿、在「旅 館評估模組」中有一個資訊網服務(Hotel Evaluation 資訊網服務,HEWS)。這個 資訊網服務有住宿地點及旅館等及兩個屬性,另外在「旅館評估模組」中有一個 記錄每個景點的旅館資訊的 xml 檔案,稱為「旅館資訊儲存 XML 文件」(Hotel Information Storage,HIS)。在 TPG 中透過 HEWS 從 HIS 中找出適合的餐廳,表 3-6 為 HIS 的標籤及屬性意義。

標籤 屬性 說明

<cities> <cities>標籤為這個 XML 文件的根元素

<city> <city>標籤為記錄在哪個城市

<name> <name>標籤記錄城市的名稱

<site> <site>標籤記錄景點的名稱 Restaurant

evaluator

SOAP

圖 3-15 餐廳位置模擬圖

表 3-6 旅館資訊儲存 XML 文件之標籤及屬性意義

(17)

<hotel> <hotel>標籤標籤記錄旅館的名稱

price price 屬性記錄旅館的等級

query query 屬性記錄旅館 query 類別的資訊網服務 book book 屬性記錄旅館 book 類別的資訊網服務

HIS 的標籤結構如圖 3-16 所示,<cities>為第 0 層的根元素,第一層的

<city>標籤及其子標籤<name>記錄了餐廳是位於哪個城市、第二層的<site>和子 標籤<name>則記錄是哪一個景點,最後一層的<hotel>標籤為旅館的名稱。

圖 3-17 是一個 HIS 的範例、在例子中可看出在宜蘭的冬山河有好幾間旅 館、每家旅館都會有一個 query 及 book 的屬性來記錄要詢問旅館的房間及訂房 的資訊網服務的 location,有了這個 location 才可以查詢的旅館的資訊等等。

cities

├ city

├├ name

├├├site

├├├├name

├├├├hotel

圖 3-16 旅館資訊儲存 XML 文件之標籤結構

(18)

圖 3-18 為旅館的位置圖、每個景點附近都會有一些旅館、有些是 5 星級、

有些是 4 星級等等,根據旅館評估模組的評估來找出最適合的旅館。

<?xml version="1.0" encoding="Big5"?>

< cities>

<city>

<name>宜蘭</name>

<site>

<name >冬山河</name>

<hotel price="五星級"

query="http://127.0.0.1:8080/axis/travel/restaurant/dongshan/dongshan2/shan1_hotel_query.jws"

book="http://127.0.0.1:8080/axis/travel/restaurant/dongshan/dongshan2/shan1_hotel_book.jws">

冬山河 hotel1</hotel>

<hotel price="四星級"

query="http://127.0.0.1:8080/axis/travel/restaurant/dongshan/dongshan2/shan2_hotel_query.jws"

book="http://127.0.0.1:8080/axis/travel/restaurant/dongshan/dongshan2/shan2_hotel_book.jws">

冬山河 hotel2</hotel>

……….

</site>

</city>

………

圖 3-17 旅館資訊儲存 XML 文件之範例

(19)

3.交通評估模組

「交通評估模組」就是要找出在整個旅遊行程中要搭哪一些交通工具、在

「交通評估模組」中有一個資訊網服務(Transportation Evaluation 資訊網服 務,TEWS)。這個資訊網服務有起站、迄站、現在時間及時間範圍四個屬性,另外 在「交通評估模組」中有一個記錄每個景點之間的交通資訊的 xml 檔案,稱為「交 通資訊儲存 XML 文件」(Transportation Information Storage,TIS)。在 TPG 中透過 TEWS 從 TIS 中找出要搭的交通工具及哪一車次,表 3-7 為 TIS 的標籤及 屬性意義。

Hotel evaluator

SOAP

圖 3-18 旅館位置模擬圖

(20)

TIS 的標籤結構如圖 3-19 所示,<nodes>為第 0 層的根元素,第一層的<node>

標籤記錄了是哪一個地點,同層的<distance>標籤則是記錄了與其他地點的距 離,<bus>、<train>標籤記錄與其他地點之間是否有火車或公車可到達,<link>

標籤記錄兩個地點之間是否有直接的交通路線可到達、即是否為相鄰的兩個地 點。<link>標籤的子標籤<node>表示為直接相鄰的兩個地點。在第四層的標籤還 有<distance><bus><train>、其意義與之前的標籤是相同的。

標籤 屬性 說明

<nodes> <nodes>標籤為這個 XML 文件的根元素

<node> <node>標籤記錄是哪一個地點

name Name 屬性記錄地點名稱

<distance> <distance>標籤記錄兩點之間的距離

<bus> <bus>標籤記錄公車的資訊

<train> <train>標籤記錄火車的資訊

<link> <link>標籤記錄兩點之間的連結 表 3-7 交通資訊儲存 XML 文件之標籤及屬性意義

圖 3-19 交通資訊儲存 XML 文件之標籤結構 nodes

├ node

├├ distance

├├ bus

├├ train

├├ link

├├├ node

├├├├ distance

├├├├ bus

├├├├ train

(21)

圖 3-20 為 TIS 的一個範例、從例子中可了解在台北市火車站與礁溪火車站 及桃園火車站都是有公車及火車可以直接到達,也就是直接相鄰的點。並且台北 火車站與礁溪火車站有 100 公里的距離等等資訊。

<?xml version="1.0" encoding="Big5"?>

<nodes>

<node name="台北火車站">

<distance>10000</distance>

<bus>yes</bus>

<train>yes</train>

<link>

<node name="礁溪火車站">

<distance>100</distance>

<bus>yes</bus>

<train>yes</train>

</node>

<node name="桃園火車站">

<distance>40</distance>

<bus>yes</bus>

<train>yes</train>

</node>

</link>

</node>

………..

<nodes>

圖 3-20 交通資訊儲存 XML 文件之範例

(22)

圖 3-21 為交通路線圖、表示景點與景點之間的距離、根據交通評估模組的 評估來找出最短的路徑及可搭乘的交通工具。

4.景點評估模組

「景點評估模組」就是要找出在整個旅遊行程中要購買哪些景點的門票及 相關遊樂設施、在「景點評估模組」中有一個資訊網服務(Site Evaluation 資 訊網服務,SEWS)。這個資訊網服務有景點名稱這個屬性,另外在「景點評估模組」

中有一個記錄每個景點的旅遊資訊的 xml 檔案,稱為「景點資訊儲存 XML 文件」

(Site Information Storage,SIS)。在 TPG 中透過 SEWS 從 SIS 中找出要到的景 點資訊,表 3-8 為 SIS 的標籤及屬性意義。

Transportation

evaluator

site

site

site

site

site

site SOAP

圖 3-21 交通資訊模擬圖

(23)

標籤 屬性 說明

<cities> <cities>標籤為這個 XML 文件的根元素

<city> <city>標籤為區別不同的城市

<name> <name>標籤紀錄地點的名稱

<site> <site>標籤為區別不同的景點

<info> <info>標籤紀錄景點的旅遊資訊

<query> <query> 標籤記錄景點 query 類別的資訊網服務

<book> <book> 標籤記錄景點 book 類別的資訊網服務

圖 3-22 為 SIS 的標籤結構,第 0 層的<cities>標籤、第一層的< city >標 籤為區別不同的城市,第二層的<name>是記錄城市的名稱、同層的<site>標籤區 別不同的景點,第三層的<name>標籤記錄景點的名稱、<info>標籤記錄景點的旅 遊資訊,<query>、<book>標籤分別記錄景點的資訊網服務。

表 3-8 景點資訊儲存 XML 文件之標籤及屬性意義

cities

├ city

├├ name

├├ site

├├├ name

├├├ info

├├├ query

├├├ book

(24)

圖 3-23 為 SIS 的一個範例、從例子中可了解在宜蘭縣有好幾個景點、其中 一個是冬山河。< info>標籤記錄了冬山河的一些景點資訊,<query>、<book>

記錄景點的資訊網服務。

圖 3-23 景點資訊儲存 XML 文件之範例

………..

<city>

<name>宜蘭</name>

<site>

<name >冬山河</name>

<info>冬山河流經宜蘭縣羅東、冬山、五結三個鄉鎮,

長達 24 公里,其中冬山橋到利澤橋之間的 12 公里的 ………..

</info>

<query>

http://127.0.0.1:8080/axis/travel/site/dongshan/shan_ticket_qurey.jws </query>

<book>

http://127.0.0.1:8080/axis/travel/site/dongshan/shan_ticket_book.jws </book>

</site>

……….

< city >

……….

(25)

圖 3-24 為景點分佈圖、表示有哪些景點、根據景點評估模組的評估來找出 景點及預訂景點的門票。

3.2.2 Scheduler 及 TSP 內部結構

在 TPG 中除了 4 個類別的 evaluator 之外、還有一個 Scheduler,這個 Scheduler 負責與 4 個 evaluator 作互動、以時間為主軸規劃出完整的旅遊行 程,其演算法如下:

輸入:紀錄使用者排程需求的 XML file

輸出:符合使用者排程需求的排程報告 XML file

Site

evaluator

site

site

site

site

site

site SOAP

圖 3-24 景點資訊模擬圖

(26)

int travel_days; //行程天數

int played_days; //行程的第幾天、初始值為 1

Vector all_site_list; //行程的所有景點、初始值為 NULL

Vector all_site_stay_time_list; //行程的所有景點的停留時間、初始 NULL Vector day_site_list; //行程某天的景點、初始值為 NULL

Vector day_site_stay_time_list; //某天的景點的停留時間、初始值為 NULL Vector all_visited_site_list; //紀錄全部已經拜訪過的景點、初始值為 NULL Vector visited_site_list; //某天已經拜訪過的景點、初始值為 NULL

int remain_minute; //每天行程的總時間、初始值為 840 boolean eating_time; //每天要用餐的時間、初始值為 false boolean eated;//紀錄有沒有用過餐、初始值為 false

boolean one_day_scheduling;//設定是否要排程、初始值為 true String before_state;//紀錄排程時的前一個狀態、初始值為 START //可能的值為{START, TRANSPORTATION ,SITE,EATING,HOTEL}

String next_state;//紀錄排程時的下一個狀態、初始值為 START //可能的值為{START, TRANSPORTATION ,SITE,EATING,HOTEL}

String now_site;//紀錄排程時的景點、初始值為 NULL

String next_site;//紀錄排程時的下一個景點、初始值為 NULL int now_site_num=0;//紀錄拜訪到哪個景點、初始值為 0 [使用的常數]

int START_TIME;//每天行程開始的時間、初始值為 360

排程演算法:

呼叫 shortest_paht WS 來設定 all_site_list;

呼叫 site_stay_time WS 來設定 all_site_stay_time_list;

while(travel_days>=played_days) while(one_day_scheduling)

if(day_site_list!=visited_site)//當天景點還沒拜訪完 if(next_state ==start)

//第一次進入 while 或要 reschdul 時、要做初始化

(27)

day_site_list.clear;

day_site_stay_time_list.clear;

從 all_site_list 依時間比重分配當天景點給 day_site_list;

以 day_site_list 為依據在 all_site_stay_time_list 找到相對應的景點停留時間,存入

day_site_stay_time_list;

now_site=day_site_list(now_site_num);

if(played_days==1)

next_state==TRANSPORTATION;

next_site=day_site_list(now_site_num +1);

else

if(eated==false) next_state==EATING;

else next_state==SITE;

else //不是第一次進入 while,景點還沒走完、排程中 if(before_state==TRANSPORTATION)

now_site=next_site;

site_num=site_num+1;

next_state==SITE;

if(eating_time==true and eated==false) next_state==EATING;

else if(before_state==SITE)

if(eating_time==true and eated==false) next_state==EATING;

else

next_state==TRANSPORTATION;

next_site=day_site_list(site_num+1);

(28)

next_state==EATING;

else one_day_scheduling==false;

else if(before_state==SITE)

if(eating_time==true) next_state==EATING;

else next_state==HOTEL;

else if(before_state==HOTEL) one_day_scheduling==false;

switch next_state

case TRANSPORTATION:

利用 START_TIME 及 remain_minute 求現在時間

call transportation Web Service;//查詢交通時刻表 紀錄相關交通資訊;

remain_minute= remain_minute-spnd_time;

before_state=TRANSPORTATION;

case SITE:

before_state=SITE;

if(now_site 沒包含在 all_visited_site_list 中) call site Web Service;//查詢景點相關資訊 紀錄相關景點資訊;

將 now_site 加入 visited_site;

將 now_site 加入 all_visited_site;

remain_minute=remain_minute-spnd_time;

case EATING:

call site eating Service;//查詢符合的餐廳 紀錄相關餐廳資訊;

remain_minute=remain_minute-spnd_time;

case HOTEL:

call site hotel Service;//查詢符合的 hotel 紀錄相關 hotel 資訊;

remain_minute=remain_minute-spnd_time;

(29)

before_state=hotel;

end while

next_state=start;

if(remain_minute>120)//判斷當天是否要 reschdule

將 remain_minute 依據 day_site_list 及 day_site_stay_time_list 依景點停留時間比例增加 all_site_stay_time_list 中相對應景點的 時間;

remain_minute=840;

else

played_days= played_days+1;//要排下一天的行程了 end while

在 Scheduler 配合 4 個 evaluator 運作完成後、也就是 TPG 會產生一個 xml 檔案稱為「旅遊排程記錄檔」(Travel Schedule Profile,TSP)、TSP 為整合資 訊網服務的資料流程描述語言,其標籤分為共通標籤及專屬標籤,表 3-9 為其一 部分的標籤及屬性意義。

(30)

標籤 屬性 說明

<profile> <profile>標籤為這個 XML 文件的根元素

<eat-info> <eat-info>標籤記錄用餐次數

<day> <day>標籤區別不同天數

<eat> <用餐>標籤記錄用餐資訊

<time> <time>標籤記錄用餐時間

<date> <date>標籤記錄用餐日期

<peop-cnt> <peop-cnt>標籤參加人數

<people> <people>標籤記錄人名

<query> <query>記錄各類別的 query 資訊網服務

<book> <book>記錄各類別的 book 資訊網服務

<site-info> <site-info>標籤記錄景點的資訊

<site> <site>區別不同的景點

<trans-info> <trans-info>標籤記錄交通的資訊

<stage> <stage>標籤區別不同的車次

<trans-num> <trans-num>標籤記錄車次的編號

<leave-sta> <leave-sta>標籤記錄起站的位置

<arrive-sta> <arrive-sta>標籤記錄迄站的位置

<hotel-info> <hotel-info>標籤記錄住宿的資訊

<hotel> <hotel>標籤記錄旅館的資訊

<room-type> <room-type>標籤記錄房間的類別

<room-cnt> <room-cnt>標籤記錄房間的數量

表 3-9 旅遊排程記錄檔之標籤及屬性意義

(31)

圖 3-25 是 TSP 的標籤結構,第 0 層標籤<profile>,第一層標籤有<用餐資 訊>、<景點資訊>、<交通資訊>、<住宿資訊>分別紀錄 4 種旅程需要的資訊,第 2 層的<day>區別不同的天數,第二層標籤有<eat>、< site>、< hotel>、< stage>4 個標籤、分別用來區分不同的餐廳、景點、旅館、交通。第三層的則分別是實際 要用到的資訊等。

圖 3-25 旅遊排程記錄檔之標籤結構 profile

├ 用餐資訊

├ 景點資訊

├ 交通資訊

├ 住宿資訊

├├ day

├├├ eat

├├├ site

├├├ hotel

├├├ stage

├├├├ 時間

├├├├ 日期

├├├├ 參加人數

├├├├ 人員

├├├├ query

├├├├ book

├├├├ 車次

├├├├ 起站

├├├├ 迄站

├├├├ 類別

├├├├ 數量

(32)

服務去預訂需要的服務。

<profile>

<用餐資訊>

<day>

<用餐>

<時間>中餐</時間>

<日期>931129</日期>

<參加人數>10</參加人數>

<人員>張曉明</人員>

<query>

http://127.0.0.1:8080/axis/travel/restaurant/jiaosi/jiaosi1/jiaosi1_rest_query.jws

</query>

<book>

http://127.0.0.1:8080/axis/travel/restaurant/jiaosi/jiaosi1/jiaosi1_rest_book.jws

</book>

</用餐>

</day>

</用餐資訊>

<景點資訊>

<day>

<site>

<日期>931129</日期>

<參加人數>10</參加人數>

<人員>張曉明</人員>

<query>

http://127.0.0.1:8080/axis/travel/site/jiaosi/jiaosi_ticket_qurey.jws</query>

<book>

……….

</景點資訊>

………

圖 3-26 旅遊排程記錄檔之範例

(33)

3.3 旅遊行程轉換器

如上圖 3-11 所示、在 Travel Profile Generator 產生出 Travel Schedule Profile 之後,TSP 會再經由「旅遊行程轉換器」(Travel Profile Converter,TPC) 轉換成精簡資訊網服務流程語言(Simple Web Service Flow Language,SWSFL),

再轉成 BPEL。所以 TPC 是有分成兩階段的轉換,BPEL 在第二章已有完整介紹過、

以下詳細介紹 SWSFL。

SWSFL 的標籤及屬性是以比較精簡的方式來表示資訊網服務之間的互動關 係、SWSFL 的 tag 可分成三大類:共通標籤、流程控制標籤及互動標籤,分別如 下各表所示。

標籤 屬性 說明

<profile> <profile>標籤為這個 XML 文件的根元素

<address> <address>標籤紀錄 Web Service 的進入點

<input> <input>標籤紀錄輸入的參數

<source> <source>標籤紀錄參數的內容

seq Seq 屬性表示第幾個參數

<output> <output>標籤紀錄輸出的參數

標籤 屬性 說明

表 3-10 精簡資訊網服務流程語言之共通標籤及屬性意義

表 3-11 精簡資訊網服務流程語言之流程控制標籤及屬性意義

(34)

<dependency> <dependency>標籤表示執行時的相依關係 condition Condition 屬性記錄執行的條件

<switch> <switch>標籤表示分支的執行方式

<while> <while>標籤表示迴圈的執行方式

圖 3-27 為 SWSFL 的標籤結構、第 0 層為<profile>標籤,第一層為

<dependence>、<activity>、<while>、<assign>標籤,其中<assign>標籤為指 定哪個變數要複製到哪個變數。第二層的標籤<dependency>、<address>、

<input>、<output>,其中<address>標籤記錄相關的資訊網服務的 endpoint,

標籤 屬性 說明

<activity> <activity>標籤包含要互動資訊網服務的資訊 name name 屬性記錄 activity 的 name

type type 屬性記錄 activity 的類別

partner partner 屬性記錄 activity 的 partner

<copy> <copy>標籤要做變數值的設定

<from> <from>標籤設定變數值

to to 屬性紀錄變數流程

<terminate> <terminate>標籤表示要結束流程 表 3-12 精簡資訊網服務流程語言之互動標籤及屬性意義

(35)

也就是要到什麼地方去 call 這個資訊網服務。第三層的標籤<source>、

<terminate>、<from>標籤,其中<terminate>標籤表示要結束流程。

圖 3-28 為 SWSFL 的一部分範例、在例子中可看出這個 SWSFL 檔案中有兩個 partner 在互相作用、其中一個 partner 有 3 個 input 及 1 個 output ,並且其 input 的來源分別是 fst 那個 activity 的 input 的第 8、9、10 個 input。另一 個 partner 的 input 有 2 個、output 有 1 個。

圖 3-27 精簡資訊網服務流程語言之標籤結構 profile

├ dependence

├ activity

├ while

├ assign

├├ dependency

├├ address

├├ input

├├ output

├├ sequential

├├ copy

├├├ source

├├├ terminate

├├├ from

(36)

在 TPC 中是將 TSP 的檔案中 4 個類別的旅遊服務提供者都轉換成 SWSFL 中 的 activity。其中<query>標籤就是一個景點服務提供者、所以轉換成一個

<activity name="quy1" type="invoke" partner="partner2">

<address>

http://127.0.0.1:8080/axis/travel/restaurant/dongshan/dongshan2/shan2_rest_query.jws?wsdl

</address>

<input>

<source seq="1">fst:input:source[seq='8']</source>

<source seq="2">fst:input:source[seq='9']</source>

<source seq="3">fst:input:source[seq='10']</source>

</input>

<output>

<source seq="1" />

</output>

</activity>

<activity name="quy2" type="invoke" partner="partner3">

<address>

http://127.0.0.1:8080/axis/travel/site/jiaosi/jiaosi_ticket_qurey.jws?wsdl

</address>

<input>

<source seq="1">fst:input:source[seq='15']</source>

<source seq="2">fst:input:source[seq='16']</source>

</input>

<output>

<source seq="1" />

</output>

</activity>

圖 3-28 精簡資訊網服務流程語言之範例

(37)

activity、<book>標籤也是一個景點服務提供者、所以也轉換成一個 activity。

並且會自動的將 query 類別的 activity 與 book 類別的 activity 建立先後的執 行關係。圖 3-29 就顯示了原始部分 TSP 的 XML 檔案、圖 3-29 即表示轉換成 SWSFL 後的檔案。

圖 3-29 旅遊排程記錄檔之範例 <用餐>

<時間>中餐</時間>

<日期>931129</日期>

<參加人數>10</參加人數>

<人員>張曉明</人員>

<query>

http://127.0.0.1:8080/axis/travel/restaurant/jiaosi/jiaosi1/jiaosi1_rest_query.jws

</query>

<book>

http://127.0.0.1:8080/axis/travel/restaurant/jiaosi/jiaosi1/jiaosi1_rest_book.jws

</book>

</用餐>

(38)

如圖 3-30 所示其為 TPC 第一階段轉換完成的 SWSFL 的一個範例、在 TSP 檔 案中的<query>及<book>標籤都會轉換成相對應的一個 activity。在 TPC 的第二 階段會將 SWSFL 轉成 BPEL 之後的檔案,如圖 3-31 所示

圖 3-30 精簡資訊網服務流程語言之範例 <activity name="quy0" type="invoke" partner="partner1">

<address>

http://127.0.0.1:8080/axis/travel/restaurant/jiaosi/jiaosi1/jiaosi1_rest_query.jws?wsdl

</address>

<input>

<source seq="1">fst:input:source[seq='1']</source>

<source seq="2">fst:input:source[seq='2']</source>

<source seq="3">fst:input:source[seq='3']</source>

</input>

<output>

<source seq="1" />

</output>

</activity>

<activity name="bok0" type="invoke" partner="partner5">

<address>

http://127.0.0.1:8080/axis/travel/restaurant/jiaosi/jiaosi1/jiaosi1_rest_book.jws?wsdl

</address>

<input>

<source seq="1">fst:input:source[seq='4']</source>

<source seq="2">fst:input:source[seq='5']</source>

<source seq="3">fst:input:source[seq='6']</source>

<source seq="4">fst:input:source[seq='7']</source>

</input>

<output>

<source seq="1" />

</output>

</activity>

(39)

3.4 Task Concurrency control

圖 3-32 為本論文系統的 Workflow Reference Model,在 Business Process Execution Language for 資訊網服務(BPEL4WS)所 invoke 的資訊網服務中,其 資訊網服務的執行順序並不是循序的執行,而是有一些流程的控制及機制。本系 統的 Task Control Pattern 就是利用 SWSFL 轉換成 BPEL 的流程控制標籤來達到

圖 3-31 商業流程執行語言之範例

<invoke name="quy1" partner="partner2"

inputVariable="invocationrequest2"

portType="sqp2:shan2_rest_query" operation="rest_query"

outputVariable="invocationresponse2">

<target linkName="sa-to-quy1" />

<source linkName="quy1-to-wh0" />

</invoke>

<invoke name="bok1" partner="partner6"

inputVariable="invocationrequest6"

portType="sqp6:shan2_rest_book" operation="rest_book"

outputVariable="invocationresponse6">

<target linkName="bok0-to-bok1" />

<source linkName="bok1-to-bok2"

transitionCondition="bpws:getVariableData('invocationrespons e6','rest_bookReturn')='ok'" />

</invoke>

(40)

流程控制有分成 3 類:1、循序服務流程控制 2、分支服務流程控制 3、重 複服務流程控制,以下做詳細的介紹:

3.4.1 循序服務流程控制

在旅遊的行程當中一定是要先做餐廳、旅館、交通、景點 4 方面的預先規 劃、等規劃好之後,再去預訂餐廳、旅館、交通、景點等服務。而預訂的過程一 定是先 query 完後、再去 book。而且要餐廳、旅館、交通、景點等服務全部都 query 沒問題之後才可以繼續執行,所以在 query 時其執行的流程就是循序服務

Workflow Engine(BPEL)

Invoked application

(餐廳等 Web Service)

Workflow client

application

(new_travel_cli.jsp)

Travel Profile Generator

Travel Profile Converter

Process Definition

Interface1

Interface2 Interface3

bpel

圖 3-32 本論文系統的 Workflow Reference Model

(41)

流程控制。如圖 3-33 所示

在圖 3-34 中所顯示的循序服務流程其相對應的 SWSFL 檔案範例如圖 3-33 所示。在 SWSFL 中每個<activity >標籤即表示一個資訊網服務、每個< activity

>標籤之間沒有控制流程的標籤出現時,整個 Composite 資訊網服務的執行流程 就變成循序的服務流程控制。

query

query

query

BPEL query

reply query reply

reply query

圖 3-33 循序服務流程控制

(42)

3.4.2 分支服務流程控制

當兩個資訊網服務之間有互動的關係時,就會有不同的執行流程,也就是 會有不同的服務流程控制方式。在旅遊行程規劃中、當某個資訊網服務的執行結 果不符合預期時、就需要使用的分支服務的流程控制。圖 3-35 為分支服務流程 控制。

圖 3-34 循序服務流程相對應之 SWSFL 檔案

<activity name="quy0" type="invoke" partner="partner1">

<address>

http://127.0.0.1:8080/axis/travel/restaurant/jiaosi/jiaosi1_rest_query.jws?wsdl </address>

</activity>

<activity name="quy1" type="invoke" partner="partner2">

<address>

http://127.0.0.1:8080/axis/travel/restaurant/dongshan /shan2_rest_query.jws?wsdl

</address>

</activity>

<activity name="quy2" type="invoke" partner="partner3">

<address>

http://127.0.0.1:8080/axis/travel/site/jiaosi/jiaosi_ticket_qurey.jws?wsdl

</address>

</activity>

query

query

query

BPEL query

ok query not ok

ok query

reserve reserve

圖 3-35 分支服務流程控制

(43)

在圖 3-36 中所顯示的循序服務流程其相對應的 SWSFL 檔案範例如圖 3-35 所示。在 SWSFL 中每個<switch>標籤即表示一個分支點、而其判斷的條件為

<case>標籤中的 condition 屬性、

“getdata(quy0:output:source[seq='1'])!='ok'"即為其條件。getdata()表 示要抓某個資訊網服務的 input 或 output 資料。在圖 3-35 中即表示當<activity name="quy0">的 output 的第一個 source 標籤不等於 ok 時就要執行預定的流 程、否則就執行另一個流程。

<switch name="sw0">

<case condition="getdata(quy0:output:source[seq='1'])!='ok'">

<switch name="sw1">

<case condition="getdata(quy1:output:source[seq='1'])!='ok'">

<switch name="sw2">

<case condition="getdata(quy2:output:source[seq='1'])!='ok'">

</case>

<otherwise/>

</switch>

</case>

<otherwise/>

</switch>

</case>

<otherwise/>

</switch>

圖 3-36 分支服務流程相對應之 SWSFL 檔案

(44)

3.4.3 重複服務流程控制

圖 3-37 為重複服務流程控制、也就是一個迴圈的控制,會重複的執行某個 資訊網服務直到設定的條件不符合為止。圖 3-38 為其相對應的 SWSFL 檔案。

<while name="wh2"

condition="getdata(quy2:output:source[seq='1'])!='ok'">

<call>lst</call>

</while>

<activity>

………

圖 3-38 重複服務流程相對應之 SWSFL 檔案

WS WS WS

圖 3-37 重複服務流程控制

數據

圖 3-1  TSPB 的運作機制
圖 3-4 是一個餐廳服務提供者的資訊網服務運作過後的 RBF 的範例,從這 個文件可以看出來在冬山河餐廳 1 的這家餐廳共有 100 個座位、在民國 94 年 1 月 26 號的中午已經被預訂了 25 個座位,晚餐也被預訂了一些座位,及預訂者的 姓名等資訊。  restaurants  ├ date ├├  午餐 ├├  晚餐  ├├├ booked  圖 3-3  餐廳訂購檔案之標籤結構 &lt;?xml version=&#34;1.0&#34; encoding=&#34;Big5&#34;?&gt
圖 3-10 為一個 SBF 檔案的範例、從例子中可看出在 93 年 11 月 26 日的門 票已經被張曉名及張小明各預訂了一些門票了。 trains ├ date ├├ booked ├├├數量  圖 3-9  景點門票訂購檔案之標籤結構  &lt;?xml version=&#34;1.0&#34; encoding=&#34;Big5&#34;?&gt;  &lt;tickets amount=&#34;250&#34;&gt;    &lt;date time=&#34;931126&#34;&gt
圖 3-12    旅遊行程產生器運作概念圖
+7

參考文獻

相關文件

16- 被訪旅客對購物服務的評價 17- 被訪旅客對公共交通服務的評價 18- 被訪旅客對環境衛生的評價 19- 被訪旅客對觀光點的評價. 20-

16- 被訪旅客對購物服務的評價 17- 被訪旅客對公共交通服務的評價 18- 被訪旅客對環境衛生的評價 19- 被訪旅客對觀光點的評價. 20-

「25 資訊及通訊專業人員」及「12 行政及商業經理人員」列 20 名外;前 20 名熱門 職業平均每人有 1 個以上工作機會的職業有 13 項,並以「51

結構化程式設計 是設計一個程式的一個技巧,此技巧就

16- 被訪旅客對購物服務的評價 17- 被訪旅客對公共交通服務的評價 18- 被訪旅客對環境衛生的評價 19- 被訪旅客對觀光點的評價. 20-

四、 廠商應於服務決標後 3

2006 年第三季本 澳經濟錄得 11.4%的實質 增長及 17.1%的名義增長,主 要是由私 人投資及服務出口所 帶動。外地需求方面,博彩服務出口仍錄得不

每一個泰國年輕男子一生中必須出家做一次僧人,這可是人生中最重要的