乙個用OWL S組裝Web服務的例子

2021-09-22 13:38:44 字數 3443 閱讀 4762

owl-s可以用來描述web服務,這個帖子將介紹乙個非常簡單的例子,也許對理解web服務的組裝有些作用。這個服務是對已有web服務進行組裝和執行,所以你並不需要發布自己的web服務。你需要安裝protege和owl-s editor外掛程式,我用的版本前者是3.1 beta build 191,後者是build 15,它們在一起執行得還不錯。

1、確認你的owl-s editor已經安裝到protege裡,啟動protege,新建乙個owl檔案型別的工程,在選單project->config裡勾選上owls選項,按確定後protege的主介面會多出乙個owl-s editor頁。

2、轉到owl-s editor頁,按左上角的wsdl按鈕,在彈出的對話方塊裡輸入web服務的位址然後按回車,過一會兒在對話方塊裡會顯示出這個web服務的資訊,左邊是operations列表。

圖1 用來匯入wsdl的對話方塊

3、因為每次只能import乙個operation,所以先選擇hashstring,然後按右下方的import按鈕,這時系統會提示要把生成的owls檔案(擴充套件名為.owl)儲存在乙個位置,你可以選擇任何位置。

4、使用同樣的方法把checkhash方法也匯入進來,這樣我們就有了兩個可用於組裝的web服務了。如果你願意的話,可以單獨執行看看,方法是選擇乙個service,然後按綠色的執行按鈕。

圖2 匯入的兩個服務

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進行定製。

圖3 包含三個有用節點的process圖

8、在圖形的perform/produce節點上點一下就可以修改它的屬性,先來修改第乙個。點一下第乙個矩形節點(第乙個perform),在對話方塊裡把process屬性設定為wi1:hashstringprocess(注意:如果匯入wsdl時改變了字首,這裡就不是wi1),為了方便閱讀,把name屬性改為hashperform。類似的,第二個矩形節點的process屬性應該是wi2:checkhashprocess,name則改為checkperform;對於唯一的produce節點,改名為produce。現在右邊的圖如下所示。

圖4 改名後的process圖

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)。

圖5 通過引數傳遞產生「資料流」

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圖如下所示。

圖6 可以從圖中看到服務的結構

13、對myprocess的設定到此就結束了,最困難的部分完成了,剩下的工作都很簡單和顯而易見。選中mygrounding,在它的hasatomicprocessgrounding屬性裡加上wi1:hashstringatomicprocessgrounding和wi2:checkhashatomicprocessgrounding。

14、現在myservice已經可以執行了(myprofile裡還可以增加一些資訊用來描述這個服務)。現在選中myservice,按下執行按鈕,在彈出的對話方塊裡hashtype框填md5,str框填test(任意字串都可以),然後按execute按鈕就會看到結果,當然,這個服務不論你輸入什麼字串都會得到true值,原因不用我說了吧。

圖7 執行組裝後的服務

本文**

八進位制

乙個用OWL S組裝Web服務的例子

owl s可以用來描述web服務,這個帖子將介紹乙個非常簡單的例子,也許對理解web服務的組裝有些作用。這個服務是對已有web服務進行組裝和執行,所以你並不需要發布自己的web服務。你需要安裝protege和owl s editor外掛程式,我用的版本前者是3.1 beta build 191,後者...

用python寫乙個簡單的web伺服器

人生苦短,我用python 簡潔高效,這才是理想的語言啊 分享一點python的學習經驗 如何用python寫乙個簡單的web伺服器 首先,我們需要簡單地了解一下網路通訊協議,這裡用白話介紹一下tcp和udp這兩種傳輸層的協議 tcp 通訊過程之中每次通訊都會進行確認操作,確保報文的安全送達,相當於...

用python編寫乙個web靜態伺服器

建立web類 def init self 建立server物件 self.server socket.socket socket.af inet,socket.sock stream 重複使用繫結的資訊 self.server.setsockopt socket.sol socket,socket....