語義Web服務之路4-一個組裝web服務的例子

        這個例子是從網上一篇《一個用owl組裝web服務的例子》的一個改進,OWL-S可以用來描述Web服務,也許對理解Web服務的組裝有些作用。這個服務是對已有Web服務進行組裝和執行,所以你並不需要發佈自己的Web服務。你需要安裝ProtegeOWL-S Editor插件,我用的版本前者是3.1 beta build 191,後者是build 15,它們在一起運行得還不錯。
       所用的Web服務在[url]http://www.bs-byg.dk/hashclass.wsdl[/url],它包含兩個方法:HashString和CheckHash,前者用指定編碼方式(MD5、SHA1等等)對指定字符串編碼,後者根據指定編碼方式檢查一個字符串(HashString)是否是另一個字符串(OriginString)的編碼結果。我們將把這兩個方法組裝成一個服務,對輸入的編碼方式和待編碼字符串先進行編碼,然後檢查編碼的結果是否正確,如果正確返回true,否則返回false。
       1、確認你的OWL-S Editor已經安裝到Protege裏,啓動Protege,新建一個owl文件類型的工程,在菜單project->config裏勾選上owls選項,按確定後Protege的主界面會多出一個OWL-S Editor頁,接着安裝graphviz,網上介紹了很多配置graphviz的方法,其實直接安裝到C:\Program Files\ATT\graphviz就可以了。
       聲明:如果你安裝不成功的話,那很有可能是版本的問題,筆者用protege3.3.1無論owls-editor用什麼版本都不能用,害我調了一天也沒調出來,protege3.2.1據說可以和owls-editor build17一起用。安裝方法很簡單,直接解壓owls-editor到protege主目錄plugins下。安裝後如圖1:
2、轉到OWL-S Editor頁,按左上角的WSDL按鈕,在彈出的對話框裏輸入Web服務的地址[url]http://www.bs-byg.dk/hashclass.wsdl[/url],然後按回車,過一會兒在對話框裏會顯示出這個Web服務的信息,左邊是Operations列表
3、因爲每次只能import一個Operation,所以先選擇HashString,然後按右下方的Import按鈕,這時系統會提示要把生成的owls文件(擴展名爲.owl)保存在一個位置,你可以選擇任何位置。
說明:從wsdl轉到owl可能會花上cpu一點時間,如果電腦沒反應不是死機,等個幾十秒一分鐘應該就可以了。
4、使用同樣的方法把CheckHash方法也導入進來,這樣我們就有了兩個可用於組裝的Web服務了。如果你願意的話,可以單獨執行看看,方法是選擇一個Service,然後按綠色的執行按鈕。
5、現在開始組裝它們。爲此我們新建一個Service實例(按Create Service按鈕)、一個Profile實例、一個CompositeProcess實例和一個WSDLGrounding實例,分別命名爲myservice、myprofile、myprocess和mygrounding好了。
6、接下來把它們連接起來,首先選中myservice,把它的describedBy屬性置爲myprocess,presents屬性置爲myprofile,supports屬性置爲mygrounding。
7、現在對myprocess進行編輯,OWL-S Editor提供了一個可視化的編輯界面(Visual Editor),利用它可以很方便的定義CompositeProcess的各個步驟。選中myprocess,右邊切換到Visual Editor,這裏有一些粉紅色的按鈕用來定製流程。我們首先創建一個Sequence(表示按順序執行),然後選中這個Sequence,創建兩個Perform和一個Produce,每個Perform代表調用一個Web服務,而Produce的作用是在最後得到返回值。這時右邊的圖形應該像下面這樣,因爲我們尚未對Perform和Produce進行定製。
8、在圖形的Perform/Produce節點上點一下就可以修改它的屬性,先來修改第一個。點一下第一個矩形節點(第一個Perform),在對話框裏把process屬性設置爲wi1:HashStringProcess(注意:如果導入WSDL時改變了前綴,這裏就不是wi1),爲了方便閱讀,把Name屬性改爲hashPerform。類似的,第二個矩形節點的process屬性應該是wi2:CheckHashProcess,Name則改爲checkPerform;對於唯一的Produce節點,改名爲produce。現在右邊的圖如下所示。
9、現在從Visual Editor切換到Properties頁,在這裏爲myprocess定義輸入和輸出參數。它的輸入應該是wi1:HashType和wi1:Str,而輸出應該是wi2:CheckHashResult,也就是說,對於我們組裝出來的Web服務來說,輸入是編碼類型和待編碼字符串,而輸出是驗證結果。
10、上面我們定義了myprocess擁有的參數,現在就要用到它們了。切換回Visual Editor,在樹型列表裏選則第一個Perform(hashPerform),把右邊切換到Properties頁,現在ToParameter屬性裏還是空白,我們要把myprocess的輸入映射到這個Perform,所以按添加按鈕把兩個輸入參數(wi1:HashType和wi1:  Str)加到ToParameter裏。選中它們中的一個,可以看到右邊有BindingType選項,缺省爲valueSource這一項,就用它即可,在下面的FromPerform下拉框裏只有一個選項TheParentPerform,選中它。在最下面的FromParameter裏選擇和你選擇的ToParameter項一樣的那個選項(wi1:HashType->wi1:HashType,wi1:Str->wi1:Str)。
11、對於checkPerform,它有三個輸入參數,我們希望HashType和hashPerform具有同樣的值,所以它的設置和上一步裏對HashType的設置一樣;OriginalString的設置和上一步的Str一樣;HashString屬性是上一步得到的結果,所以FromPerform屬性應該是hashPerform,FromParameter屬性則是wi1:HashStringResult。
12、對produce的設置很簡單,在ToParameter屬性里加入我們要的結果wi2:CheckHashResult,FromPerform選checkPerform,FromParameter選wi2:CheckHashResult。現在,myprocess對應的process圖如下所示。
13、對myprocess的設置到此就結束了,最困難的部分完成了,剩下的工作都很簡單和顯而易見。選中mygrounding,在它的hasAtomicProcessGrounding屬性里加上wi1:HashStringAtomicProcessGrounding和wi2:CheckHashAtomicProcessGrounding。
14、現在myservice已經可以執行了(myprofile裏還可以增加一些信息用來描述這個服務)。現在選中myservice,按下執行按鈕,在彈出的對話框裏HashType框填MD5,Str框填test(任意字符串都可以),然後按Execute按鈕就會看到結果,當然,這個服務不論你輸入什麼字符串都會得到true值,原因不用我說了吧。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章