第八章 Microsoft BizTalk架構 SOAP(Simple Object Access Protoco)通訊協定 BizTalk 訊息傳送流程 BizTalk 文件結構 BizTalk 傳送協定 BizTalk 文件定義Schema架構 BizTalk 架構與其它開放標準整合應用
BizTalk簡介 Microsoft 以XML為標準制定的標示語言 透過網際網路傳輸之XML商業文件加以標準化 一種在電子商務環境的Language of Business
BizTalk簡介(續) 企業雙方利用BizTalk架構系統,便可以利用網路環境進行商業溝通 一個開放的電子商務訊息交換架構 BizTalk架構只提供開放的傳送機制標準,並不提供商業文件Schema內容標準
BizTalk簡介(續) 微軟將藉重BizTalk架構以支援其 BizTalk Server、Commerce Server及SQL Server等下一代電子商務工具和解決方案,而在符合BizTalk開放架構的條件下,其他業者亦可提供相關之軟、硬體產品。
BizTalk主要包括 技術規範:BizTalk架構之技術規範定義使用XML之一致性方法 標籤集合:BizTalk架構由一組"必要性"及"選擇性"標籤所構成,這些標籤集合使XML相關工具得以透過一致性的方法,有效處理Biz alk文件。
BizTalk主要包括(續) BizTalk入口網站:該網站網址為:http://www.biztalk.org。Biz Talk網站主要包括BizTalk Schema儲存庫(repository)和相關工具,其主要目的是欲降低企業或組織,利用XML-based文件進行資訊交換的進入障礙。值得注意的是Biz Talk的Schema係使用微軟提議的XDR語法。
BizTalk基本架構圖
BizTalk發展方向 研究描述XML文件內容的封包 XML訊息傳遞程序以及設計規則 各使用者依據不同產業的特性及需要,訂定其商業文件(Business Document)資訊交易的標準(即制定各種產業專屬的訊息Schema)
BizTalk 架構所遵循的規則 利用XML-Data Reduced(XDR)格式來定義BizTalk邏輯,Schema結構及商業訊息文件結構,Schema的結構包含商業訊息文件中,應包括那些元素、屬性,以及組成方式
BizTalk 架構所遵循的規則(續) 在SOAP1.1封包訊息中使用BizTalk架構標籤 定義attachment的邏輯結構,以便應用程式自動將其編入分類目錄中
BizTalk的標準術語 符合在BizTalk Framework規格書中,所律定的各項訊息處理機制之服務功能的伺服器 一.BizTalk Framework Compliant Server (BFC Server): 符合在BizTalk Framework規格書中,所律定的各項訊息處理機制之服務功能的伺服器
BizTalk的標準術語(續) 二.Application: 儲存與執行商業資料,或邏輯的商業系統,也可以包含外加的轉換程式,及與BFC伺服器溝通 三.Business Document: 是一份正確合法的XML文件,包含商業交易所需的資料
BizTalk的標準術語(續) 四.Schema: 用來敘述XML文件的內容與結構的metadta 五.BizTalk Document: (1)Business Documents (2)特定的BizTalk標頭項目資料
BizTalk的標準術語(續) 六.BizTag: 用來處理特定Business Document的文件標籤集合 七.BizTalk Message: BFC伺服器之間連線層級資料交換的基本單元
BizTalk的標準術語(續) 八.Transport: BFC伺服器使用的通訊機制 九.Attachment: 其他不能成為適當Business Document的資訊格式或內容
BizTalk的邏輯層模式 採用分層(layers)的架構
BizTalk的邏輯層 Application(適當的轉換程式adapters) BFC伺服器 Transport(通訊機制)
BizTalk分層架構圖
SOAP通訊協定 SOAP(Simple Object Access Protocol)的組成 The SOAP envelop:
SOAP通訊協定(續) The SOAP encoding rules: The SoAP RPC representation: 定義一組可描述應用程式的資料型態規則 The SoAP RPC representation: 能處理遠端程序呼叫與回應的方法
SOAP訊息結構
SOAP訊息實例 <SOAP-ENV:ENVELOPE xmlns:SOAP-ENV=“http://Schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Header> <t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1"> 5 </t:Transaction> </SOAP-ENV:Header>
SOAP訊息實例(續) <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="Some-URI"> <symbol>DEF</symbol> </m:GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
SOAP的優點 跨平台 標準化 Programming model 無關
BizTalk訊息傳送流程
BizTalk訊息傳送流程(續) 產生傳送BizTalk需求,並發生應用程式的事件 應用程式或轉換程式會依照已經發佈的BizTalk Message 的Schema來產生一個以SOAP標準定義的BizTalk Document
BizTalk訊息傳送流程(續) 應用程式將所產生的BizTalk Document 傳送給BFC 伺服器 發送 BFC 伺服器將BizTalk Document加上傳輸所需要的Transport資訊,成為BizTalk Message 傳送給目的地的 BFC 伺服器
BizTalk訊息傳送流程(續) 目的地的 BFC 伺服器收到BizTalk Message 後,先對於此BizTalk Message做驗證,然後再將此BizTalk Message 送往目的地應用程式處理
簡單的BizTalk文件例子 <SOAP-ENV:ENVELOPE xmlns:SOAP-ENV=“http://Schemas.xmlsoap.org/soap/envelope/” xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"> <SOAP-ENV:Header> <dlv:delivery SOAP-ENV:mustUnderstand="1" xmlns:dlv="http://Schemas.biztalk.org/btf-2-0/delivery" xmlns:agr="http://www.trading-agreements.org/types/">
簡單的BizTalk文件例子(續) <dlv:to> <dlv:address xsi:type="agr:department">Book Order Department</dlv:address> </dlv:to> <dlv:from> <dlv:address xsi:type="agr:organization:>Booklovers Anonymous</dlv:address> <dlv:from> </dlv:delivery> <prop:properties SOAP-ENV:mustUnderstand="1" xmlns:prop="http://Schemas.biztalk.org/ btf-2-0/properties">
簡單的BizTalk文件例子(續) <prop:identity>uuid:74b9f5d0-33fb-4a81-b02b- 5b760641c1d6</prop:identity> <prop:sentAt>2000-05-14T03:00:00+08:00<prop:sentAt> <prop:expiresAt>2000-05T04:00:00+08:00 </prop:expiresAt> <prop:topic>http://electocommerce.org/purchase_order/ </prop:topic> </prop:properties>
簡單的BizTalk文件例子(續) </SOAP-ENV:Header> <SOAP-ENV:body> <po:purchaseOrder xmlns:po="http://electrocommerce.org/ purchase_order/"> <po:Title>Essential BizTalk</po:Title> </po:PurchaseOrder> </SOAP-ENV:body> </SOAP-ENV:Envelope>
BizTalk 文件結構 為一個特定應用的Business Document,此文件擁有為了該應用所定義的XML Namespace,此Business Document 為SOAP Message的主體
BizTalk 文件結構(續) BizTalk 的特定SOAP標頭項目<delivery>與<properties>,使用標準BizTag Namespace 所定義BizTages及BizTalk規格書所定義的Schema及語意(semantics)來組成 BizTalk Document的標頭部分(<SOAP-ENV:Header>…</SOAP-ENV:Header>)
BizTalk 文件結構(續) BizTalk Document的主體部分(<SOAP-ENV:Body>…< /SOAP-ENV:Body>) 文件內部的BizTags是沒用的,只會當成被處理的資料
BizTalk文件主體 SOAP訊息的<Body>元素構成一個BizTalk Document 相關的Business Documents通常都會分享內容,SOAP針對資料可讓多個來源參考(multipe references)有一個很直接的機制,它使用XML的ID屬性和相關URIs
BizTalk Document 標頭項目 文件繞徑與遞送 文件辨識與屬性 文件類別 程序管理
文件繞徑與遞送 a.繞徑(Document routing)使用<delivery>BizTag b.包含BizTalk Document的來源和目標資訊 c.提供穩定遞送(reliable delivery)所需要的資訊
文件繞徑與遞送-子標籤 <to>包含BizTalk Document要傳送到的商業實體伺服器或應用程式 <from>包含BizTalk Document從那個商業實體伺服器或應用程式傳送出來的資訊
文件繞徑與遞送-子標籤(續) <address>包含商業實體的識別名稱,使用的元素必須要包含xsi:type屬性 <reliability>包含穩定遞送 BizTalk Document 所需要的資訊
文件繞徑與遞送-子標籤(續) <sendReceiptTo>指定transport address的URL (一般是在來源商業實體),此為BizTalk Document 的收據,需要回寄的地址 <receiptRequiredBy>包含需要回寄收據給接收BizTalk Document 的伺服器的絕對立即時間
文件繞徑與遞送-例子 <dlv:delivery SOAP-ENV:mustUnderstand="1" xmlns:SOAP-ENV=“http://Schemas.xmlsoap.org/soap/envelope/” xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:dlv="http://Schemas.biztalk.org/btf-2-0/delivery" xmlns:agr="http://www.trading-agreements.org/types/"> <dlv:to> <dlv:address xsi:type="agr:department">Book OrderDepartment </dlv:address> </dlv:to>
文件繞徑與遞送-例子(續) <dlv:from> <dlv:address xsi:type="agr:organization:>Booklovers Anonymous </dlv:address> <dlv:reliability> <dlv:sendReceiptTo>www.we-love-books.org/po/confirmations </dlv:sendReceiptTo> <dlv:receiptRequiredBy>2000-05-14T03:00:00+08:00 </dlv:receiptRequiredBy> </dlv:reliability> </dlv:delivery>
文件辨識與屬性 在SOAP標頭訊息中的<properities>BizTag指定了文件辨識其他屬性的資訊 <properties>元素的編碼必須永遠包含SOAP-ENV:mustUnderstand=“1”屬性
文件辨識與屬性-子標籤 <identity>是一個URI參考,可以用於登入(logging),追蹤(tracking),錯誤處理(error handing)或其他文件的處理及相關需求(correlation requirements),當成唯一識別BizTalk Document的目的 <sentAt>傳送文件的時間戳記
文件辨識與屬性-子標籤(續) <topic>包含URI參考(URI reference),此URI參考是用來辨識BizTalk Document的整體目的 <expiresAt>為文件的過期時間戳記
文件辨識與屬性-例子 <prop:properties SOAP-ENV:mustUnderstand="1" xmlns:SOAP-ENV=“http://Schemas.xmlsoap.org/ soap/envelope/” xmlns:dlv="http://Schemas.biztalk.org/btf-2-0/ properties"> <prop:identity>uuid:74b9f5d0-33fb-4a81-b02b-5b760641c1d6 </prop:identity>
文件辨識與屬性-例子(續) <prop:sentAt>2000-05-14T03:00:00+08:00<prop:sentAt> <prop:expiresAt>2000-05T04:00:00+08:00 </prop:expiresAt> <prop:topic>http://electocommerce.org/purchase_order/ </prop:topic> </prop:properties>
文件類別 <manifest>BizTag是用來指定文件類別資訊,用來檢查BizTalk內容的一致性,完整性及驗證機制
文件類別-子標籤 <reference> <uri>是一個URI參考值 <Description>是Bussiness Document 或attachment的文件的文件描述
文件類別-例子 <fst:manifest xmlns:fst="http://schemas.biztalk.org/btf-2-0 <fst:reference fst:uri="#insurance_claim_document_id"> <fst:description>Insurance Claim<fst:description> </fst:reference> <fst:reference fst:uri="CID:claim.tiff@claiming-it.com">
文件類別-例子(續) <fst:description>Facsimile of Signed Claim Document </fst:reference> <fst:reference fst:uri="CID:car.jpeg@claiming-it.com"> <fst:description>Photo of Damaged Car </fst:description> </fst:manifest>
程序管理-子標籤 <process>BizTag指定程序管理(Process Management)資訊,包含商業處理的資訊 <type>包含一個URI參考,此參考代表所使用的商業程序的類型 <instance>包含一個URI參考,此參考用來辨識一個BizTalk Document相關的特定商業程序實體
程序管理-子標籤(續) <handle>是一個URI參考,此參考提供進一步的資訊,這些是辨識商業程序實體中的步驟或是進入點時所需要的資訊
程序管理-例子 <prc:process SOAP-ENV:mustUnderstand="1" xmlns:SOAP-ENV=“http://Schemas.xmlsoap.org/ soap/envelope/” xmlns:prc="http://Schemas.biztalk.org/btf-2- 0/Process"> <prc:type>purchasing:Book_Purchase_Process</prc:type> <prc:instance>purchasing:Book_purchase_process#12345 <prc:instance> <prc:handle>port:po_receiver</prc:handle> </prc:process>
附加Attachments的BizTalk Documents 多重部分的MIME結構(Multipart MIME Structure):一個主要的BizTalk Document包含一個或多個attachments,並使用mutipart MIME structure來傳送 Attachments的載貨單結構(Manifest Structure for Attachments):在<mainifest>標頭項目珠<reference>元素的關係,利用<reference>中的uri屬性包含相關attachment的位置
BizTalk 傳送協定 一般使用HTTP通訊協定來傳送 但是HTTP回應的意義與內容只是表示傳送訊息的送達 套用SOAP 1.1 HTTP binding規則
使用HTTP的例子 POST /bookPurchase HTTP/1.1 HOST: www.we-have-books.com Content-Type: text/xml;charset="utf-8" Content-Length: nnnn SOAPAction: http://electrocommerce.org/purchase_order/ <?xml version='1.0' ?> <SOAP-ENV:ENVELOPE *********(請參考"簡單的BizTalk文件例子") </SOAP-ENV:Envelope>
BizTalk文件定義Schema架構 傳送標頭項目(Delivert header entry) 屬性標頭項目(Properties header entry) 載貨單標頭項目(Manifest header entry) 程序標頭項目(Process header entry)
BizTalk文件定義Schema架構(續) 收據標頭項目(Receipt header entry) SOAP 1.1 Envelope for BizTalk Document SOAP 1.1 Envelope for BizTalk Receipt
XML的註冊機制與儲存庫 註冊機制: 一個用來「註冊」XML文件、架構及相關中介資料的機制,這些資料可經由查詢或瀏覽XML註冊目錄取得 儲存庫包含被註冊所指向的一個或一群分散式位址,其中包存放了與文件相關的型態定義,可以把儲存庫視為schema libary
著名的XML註冊與儲存庫網站 XML.org儲存庫: http://www.xml.org/xml/registry.jsp BizTalk.org儲存庫: http://www.biztalk.org/library/library.asp