排程演算法:
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 精簡資訊網服務流程語言之流程控制標籤及屬性意義
<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 精簡資訊網服務流程語言之互動標籤及屬性意義
也就是要到什麼地方去 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
在 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 精簡資訊網服務流程語言之範例
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>
</用餐>
如圖 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>