OWL-S可以用來描述Web服務,這個帖子將介紹一個非常簡單的例子,也許對理解Web服務的組裝有些作用。這個服務是對已有Web服務進行組裝和執(zhí)行,所以你并不需要發(fā)布自己的Web服務。你需要安裝Protege和OWL-S Editor插件,我用的版本是Protege 3.2.1 beta,后者是OWL-S Editor build 23。
所用的Web服務在http://www.bs-byg.dk/hashclass.wsdl,它包含兩個方法:HashString和CheckHash,前者用指定編碼方式(MD5、SHA1等等)對指定字符串編碼,后者根據(jù)指定編碼方式檢查一個字符串(HashString)是否是另一個字符串(OriginString)的編碼結(jié)果。我們將把這兩個方法組裝成一個服務,對輸入的編碼方式和待編碼字符串先進行編碼,然后檢查編碼的結(jié)果是否正確,如果正確返回true,否則返回false。下面是組裝步驟,完整的工程在這里下載。
1、確認你的OWL-S Editor已經(jīng)安裝到Protege里,啟動Protege,新建一個owl文件類型的工程,在菜單project->config里勾選上owls選項,按確定后Protege的主界面會多出一個OWL-S Editor頁。
2、轉(zhuǎn)到OWL-S Editor頁,按左上角的WSDL按鈕,在彈出的對話框里輸入Web服務的地址http://www.bs-byg.dk/hashclass.wsdl,然后按回車,過一會兒在對話框里會顯示出這個Web服務的信息,左邊是Operations列表。

圖1 用來導入WSDL的對話框
3、因為每次只能import一個Operation,所以先選擇HashString,然后按右下方的Import按鈕,這時系統(tǒng)會提示要把生成的owls文件(擴展名為.owl)保存在一個位置,你可以選擇任何位置。
4、使用同樣的方法把CheckHash方法也導入進來,這樣我們就有了兩個可用于組裝的Web服務了。如果你愿意的話,可以單獨執(zhí)行看看,方法是選擇一個Service,然后按綠色的執(zhí)行按鈕。

圖2 導入的兩個服務
5、現(xiàn)在開始組裝它們。為此我們新建一個Service實例(按Create Service按鈕)、一個Profile實例、一個CompositeProcess實例和一個WSDLGrounding實例,分別命名為myservice、myprofile、myprocess和mygrounding好了。
6、接下來把它們連接起來,首先選中myservice,把它的describedBy屬性置為myprocess,presents屬性置為myprofile,supports屬性置為mygrounding。
7、現(xiàn)在對myprocess進行編輯,OWL-S Editor提供了一個可視化的編輯界面(Visual Editor),利用它可以很方便的定義CompositeProcess的各個步驟。選中myprocess,右邊切換到Visual Editor,這里有一些粉紅色的按鈕用來定制流程。我們首先創(chuàng)建一個Sequence(表示按順序執(zhí)行),然后選中這個Sequence,創(chuàng)建兩個Perform和一個Produce,每個Perform代表調(diào)用一個Web服務,而Produce的作用是在最后得到返回值。這時右邊的圖形應該像下面這樣,因為我們尚未對Perform和Produce進行定制。

圖3 包含三個有用節(jié)點的process圖
8、在圖形的Perform/Produce節(jié)點上點一下就可以修改它的屬性,先來修改第一個。點一下第一個矩形節(jié)點(第一個Perform),在對話框里把process屬性設置為wi1:HashStringProcess(注意:如果導入WSDL時改變了前綴,這里就不是wi1),為了方便閱讀,把Name屬性改為hashPerform。類似的,第二個矩形節(jié)點的process屬性應該是wi2:CheckHashProcess,Name則改為checkPerform;對于唯一的Produce節(jié)點,改名為produce。現(xiàn)在右邊的圖如下所示。

圖4 改名后的process圖
9、現(xiàn)在從Visual Editor切換到Properties頁,在這里為myprocess定義輸入和輸出參數(shù)。它的輸入應該是wi1:HashType和wi1:Str,而輸出應該是wi2:CheckHashResult,也就是說,對于我們組裝出來的Web服務來說,輸入是編碼類型和待編碼字符串,而輸出是驗證結(jié)果。
10、上面我們定義了myprocess擁有的參數(shù),現(xiàn)在就要用到它們了。切換回Visual Editor,在樹型列表里選則第一個Perform(hashPerform),把右邊切換到Properties頁,現(xiàn)在ToParameter屬性里還是空白,我們要把myprocess的輸入映射到這個Perform,所以按添加按鈕把兩個輸入?yún)?shù)(wi1:HashType和wi1: Str)加到ToParameter里。選中它們中的一個,可以看到右邊有BindingType選項,缺省為valueSource這一項,就用它即可,在下面的FromPerform下拉框里只有一個選項TheParentPerform,選中它。在最下面的FromParameter里選擇和你選擇的ToParameter項一樣的那個選項(wi1:HashType->wi1:HashType,wi1:Str->wi1:Str)。

圖5 通過參數(shù)傳遞產(chǎn)生“數(shù)據(jù)流”
11、對于checkPerform,它有三個輸入?yún)?shù),我們希望HashType和hashPerform具有同樣的值,所以它的設置和上一步里對HashType的設置一樣;OriginalString的設置和上一步的Str一樣;HashString屬性是上一步得到的結(jié)果,所以FromPerform屬性應該是hashPerform,F(xiàn)romParameter屬性則是wi1:HashStringResult。
12、對produce的設置很簡單,在ToParameter屬性里加入我們要的結(jié)果wi2:CheckHashResult,F(xiàn)romPerform選checkPerform,F(xiàn)romParameter選wi2:CheckHashResult。現(xiàn)在,myprocess對應的process圖如下所示。

圖6 可以從圖中看到服務的結(jié)構(gòu)
13、對myprocess的設置到此就結(jié)束了,最困難的部分完成了,剩下的工作都很簡單和顯而易見。選中mygrounding,在它的hasAtomicProcessGrounding屬性里加上wi1:HashStringAtomicProcessGrounding和wi2:CheckHashAtomicProcessGrounding。
14、現(xiàn)在myservice已經(jīng)可以執(zhí)行了(myprofile里還可以增加一些信息用來描述這個服務)。現(xiàn)在選中myservice,按下執(zhí)行按鈕,在彈出的對話框里HashType框填MD5,Str框填test(任意字符串都可以),然后按Execute按鈕就會看到結(jié)果,當然,這個服務不論你輸入什么字符串都會得到true值,原因不用我說了吧。

圖7 執(zhí)行組裝后的服務
【轉(zhuǎn)自】http://www.cnblogs.com/bjzhanghao/archive/2005/06/12/173302.html(稍作改動)
posted on 2008-08-05 17:30
胖胖泡泡 閱讀(663)
評論(0) 編輯 收藏