查看單個文章
舊 2004-06-21, 02:01 PM   #5 (permalink)
mic64
註冊會員
 
mic64 的頭像
榮譽勳章
UID - 582
在線等級: 級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時級別:16 | 在線時長:330小時 | 升級還需:27小時
註冊日期: 2002-12-06
VIP期限: 2007-04
住址: MIB總部
文章: 412
精華: 0
現金: 499 金幣
資產: 499 金幣
預設

接收採購訂單


在典型的企業交易裡,企業會送出訂單給廠商,由廠商負責處理訂單。在電子商務的交易裡,廠商則是藉由使用接收管線來接收採購訂單。接收管線為Commerce Interchange Pipeline的一種。在這個部分,你將學習接收管線中的各個階段。你也將學習如何利用接收管線來接收採購訂單,以及如何傳送與接受收據。2
接收管線的各個階段


B2B電子商務的交易是一個雙向的程序。首先,e-Partner藉著使用傳輸管線將採購訂單當作資料物件傳送給廠商,來對交易進行初始設定。接著廠商則藉著接收管線來接收資料物件。

下面介紹了接收管線裡的七個階段。




接收管線會將儲存在傳輸辭典裡的資料取出,並將資料與目標應用程式整合。管線由下列七個階段所組成:

解密(Decypt)

驗證數位簽名(Verify Digital Signature)3

開啟標題(Open Header)

產生收據(Generate Receipt)

對應(Map)

稽核(Audit)

應用程式整合(Application Integration)

解密


為了確保安全,企業資料通常在傳送之前會作加密的動作。而加密過的資料在使用之前必須在接收端進行解密的動作。解密階段會對資料進行解密,並利用解密後的資料來更新傳輸辭典裡的作業資料。要進行資料解密,可以使用下面的元件:4
元件 說明
DecodeSMIME 元件會對以IETF EDINT draft Internet standard S/MIME (安全的MIME )格式封裝的資料流進行解碼,並將結果寫入作業資料。
DecryptPKCS 元件會使用PKCS7標準對資料流(data stream)進行解密, 並將結果寫入作業資料。

驗證數位簽名5


驗證數位簽名階段會確認簽署在資料上的e-Partner數位簽名。這個階段包括了下面兩個元件:

元件 說明
DecodeSMIME 元件會對以IETF EDINT draft Internet standard S/MIME (安全的MIME )格式封裝的資料物件進行解碼。
VerifyDigitalSig 元件會對使用PKCS7標準、儲存在傳輸辭典裡的資料上的數位簽名進行驗證。6

開啟標題


當資料傳送時,在傳輸管線中的加入標題階段會對作業資料進行封裝。接收管線的開啟標題階段則執行與傳輸管線中加入標題階段相對應的動作。當商業資料在接收管線對應階段中開啟,資料的訊息屬性會被儲存在傳輸辭典裡。

只有在傳送者要求回傳收據時,OpenHeader元件才會建立一份摘要。該摘要會證明已收到資料物件,並且在產生收據階段中摘要會被傳送給原始傳送者。這個階段裡擁有下面兩個元件:

元件 說明
DecodeMIME 元件會對以MIME格式封裝的資料物件進行解碼。7
OpenHeader 元件會剖析依附在資料物件上的XML資料。該資料是在傳輸管線加入標題階段被被添附到資料物件上的。它會將交易ID、傳輸的資料與時間,及訊息資料的選擇性摘要等資料以名值對的方式寫入傳輸辭典中。如果有選定的話,傳送者與接收者的位址也會被寫入。

產生收據


如果傳送者要求傳回收據,產生收據步驟會建立一個回傳收據的資料物件,然後啟動傳輸管線來傳送收據。這個步驟包括了下面兩個元件:

元件 說明
GenerateReceipt8 此元件會利用由OpenHeader元件產生的摘要。GenerateReceipt元件會讀取被寫入傳輸辭典的值。如果要求收據,元件會產生收據,並啟動傳輸管線來將之傳送給要求者。


--------------------------------------------------------------------------------
注意
原始傳送者會為收據提供接收管線。管線可以包含AuditReceipt元件,負責將收據寫入稽核資料庫。


--------------------------------------------------------------------------------

對應


對應階段會將儲存在傳輸辭典的作業資料轉換回原本的資料物件。這個階段擁有一個元件。

元件 說明
MapFromXML9 該元件將資料從XML資料流格式轉換回原始的資料物件。在資料轉換之後,它會將資料物件寫入傳輸辭典。

稽核


稽核階段會將企業交易的相關資訊儲存到稽核資料庫。這個階段擁有兩個元件。

元件 說明
Audit 該元件從傳輸辭典中讀取特定資料,並將之寫入稽核資料庫表格。10
AuditReceipt 該元件將資料從收據寫入稽核資料庫表格。

應用程式整合


應用程式整合階段包含了將資料物件轉換成可以被目標應用程式使用的資料格式的元件。這個階段只有一個元件。

元件 說明
SQLOrderADO11 該元件負責執行SQL查詢。

接收採購訂單的步驟


當e-Partner送出採購訂單給廠商,廠商必須在接收之前先建立一條接收管線。例如,如果FiveLakes網站傳送訂單給Ramona Publishing網站,Ramona網站必須建立接收管線,以便接收採購訂單,從訂單取得資料,並產生收據。

下面介紹了接收採購訂單的步驟。




SendHTTP元件被用來傳送採購訂單到Ramona網站。該元件會啟動getdata.asp網頁。getdata.asp網頁由廠商的系統執行,接收透過HTTP傳送的訂單收據要求。

在傳送者的網站(FiveLakes),會建立一份傳輸辭典來傳送訂單表單給傳輸管線。傳輸辭典中包含了訂單表單。傳輸管線中的元件會依據數值來更新傳輸辭典。12
啟動傳輸辭典


接收者網站(Ramona)應該建立一份傳輸辭典,當作參數傳送給接收管線。要啟動傳輸辭典,你必須執行以下的動作:

建立傳輸辭典

使用Request.Form方法來接收資訊

建立交易管線

建立內文辭典(Context Dictionary)

執行管線13

建立傳輸辭典


在Ramona網站的getdata.asp網頁包含了你必須用來建立傳輸辭典的程式碼。該網頁是由FiveLakes網站的傳輸管線裡SendHTTP元件所啟動。getdata.asp網頁的程式碼為:

Dim TransportDictionary
Set TransportDictionary = _
Server.CreateObject("Commerce.Dictionary")
利用Request.Form方法接收資訊


接下來,Request.Form方法會被用來接收傳送到網站的資訊。在傳輸辭典中,會建立一個名/值對來包含這項資訊。

TransportDictionary.working_data = Request.Form
建立交易管線14


交易管線(mscsMtsTxPipeline)被建立來載入接收管線。

Set pipe = Server.CreateObject("Commerce.MtsTxPipeline")
Call pipe.loadpipe("receive.pcf")
建立內文辭典與執行管線


接下來,將建立內文辭典,並且執行管線。

Set context = Server.CreateObject("Commerce.Dictionary")
errorlevel = pipe.Execute(1, TransportDictionary,context, 0)
在接收物件後,接收管線會利用下列階段來將物件解開封裝:解密、驗證、數位簽名、開啟標題、建立收據、對應、稽核,與應用程式整合。

請注意CIP接收管線執行與CIP傳輸管線相同的動作,只是順序剛好相反。15
解密階段


如果在e-Partner端的傳輸管線中有為資料物件進行加密,那麼解密階段會為該資料物件進行解密的動作。

驗證數位簽名階段


驗證數位簽名階段負責驗證e-Partner的數位簽名。例如,在這個階段裡的VerifyDigitalSig元件會使用傳送者的證明資料來驗證資料物件上的數位簽名。


--------------------------------------------------------------------------------
注意
傳輸管線的設計必須反映在接收端。例如,傳輸管線中有一個EncodeSMIME元件,那麼在接收管線則必須要有一個DecodeSMIME元件。如果傳輸管線有一個DigitalSig元件,那麼在接收管線就要有一個VerifyDigitalSig元件。


--------------------------------------------------------------------------------

開啟標題階段


開啟標題階段包含了OpenHeader元件。該元件會讀取依附在作業資料的XML標籤(標籤是由傳輸管線的AddHeader元件加到作業資料的),並將它們以名/值對的方式寫入傳輸辭典中。如果要求傳回收據,OpenHeader元件會萃選資料物件的資訊來建立摘要。摘要並不可讀,而是當收據使用。該摘要同樣也以名/值對的方式被寫入傳輸辭典。16
OpenHeader元件為下一階段(產生收據階段),準備一份傳輸辭典。

產生收據階段


產生收據階段利用GenerateReceipt元件讀取由OpenHeader元件所寫入的資料。該元件會建立一個回傳收據物件,然後利用一條新的傳輸管線將收據傳回給原始傳送者。GenerateReceipt元件並不是將所有存在原始傳輸辭典裡的值傳送出去-它只傳送交易ID、接收系統上的日期與時間、由OpenHeader元件產生的摘要,(選擇性的)與在原始傳輸中描述的文件形式、來源,及目的地等資訊。

GenerateReceipt元件的Send Receipt PCF檔案路徑指定了傳輸管線設定參數(.pcf)檔案的完整路徑。該元件是用來將收據回傳給原始傳送者。原始傳送者於是為收據準備一個接收管線。該接收管線內含了AuditReceipt元件,負責將收據寫入稽核資料庫的表格中。

對應階段


在對應階段,MapFromXML元件會將XML資料流轉換回資料物件。回傳的資料物件與其在傳送前的資料型態相同。接收的應用程式使用的是結果資料物件。MapFromXML元件可以對應由任何實作IpersistStreamInit或IPersistXML介面的資料物件所產生的資料。這些資料物件包括Commerce Server Dictionary、OrderForm,與Active Data Objects(ADO) Recordset。

應用程式整合階段17


應用程式整合階段是準備包含用來將資料物件對應到可以被目標應用程式讀取格式的物件。例如,你可以在應用程式整合階段中加入Scriptor元件來啟動外部的script。

這段script會建立一個連結到廠商的資料庫,並且能將資料從傳輸辭典寫入表格,如下所示:

Function mscsexecute(config, transportdictionary, _
Context, flags)
Dim Connection
Set Connection = CreateObject("ADODB.Connection")
connection.provider="sqloedb"
Connection.Open "datasource=ramona;initial "& _
"catalog=ramona;user id=sa; password=;"
Dim success
success = _

VendorInsertitems(transportdictionary.working_data, _
Connection,Context)
If success Then
mscsexecute = 1
Else
mscsexecute = 3
End If
Connection.close
End Function

Function VendorInsertitems(ByRef working_data, ByRef _
Connection,ByRef Context)
VendorInsertitems=True
dim re,po_no
set rs=CreateObject("ADODB.Recordset")
rs.open"ramona_po",connection,2,2
If rs.EOF Then
po_no=1
Else
rs.movelast
po_no=rs("po_no")
po_no=po_no + 1

For Each item In working_data.items

rs("po_no")=po_no
rs("sku")=item.sku

rs("name")=item.name
rs("quantity")=item.quantity
rs.update
next
rs.close
If (0 < Connection.Errors.Count) Then
VendorInsertitems = False
End If

End function
這段程式碼建立一個到Ramona資料庫的ADODB連結,並開啟資料庫中的Ramona_PO表格。script會產生採購訂單編號,並將採購訂單的詳細資料儲存到資料庫表格中。

實作4:接收採購訂單


目標


在完成實作之後,你將能夠:18
建立接收管線來接收採購訂單

藉著使用接收管線來接收採購訂單

傳送收據給原始傳送者

在原始傳送者的網站接收收據

在您開始之前


先決條件


在開始進行實作之前,你必須擁有:19
HTML與ASP scripting的基本知識。

熟悉Microsoft Internet Explorer與Microsoft Visual InterDev 6.0。

完成實作3的練習。

環境設定


要完成本實作,你必須將檔案從<install folder>\Labs\Lab\04\Ramona \StartCode複製到C:\Interpub\wwwroot\Ramona\目錄下。

4 預估完成時間:45分鐘20

練習1:使用接收管線來接收採購訂單


在這個練習中,你將在Ramona Publishing範例網站上接收採購訂單。

4 在網站目錄下開啟getdata.asp

開啟getdata.asp,位址是在C:\InterPub\wwwroot\Ramona,以及Microsoft VisualInterDev 6.0。

4 熟悉啟動接收管線的script程式碼21

在getdata.asp網頁中找出下面的程式碼。它將建立傳輸目錄並啟動接收管線。

<%
Dim TransportDictionary
set TransportDictionary = _
server.createobject("commerce.dictionary")
TransportDictionary.working_data = request.form

'Create a Pipeline Object, load a PCF
Set pipe = Server.CreateObject("Commerce.MtsPipeline")
call _
pipe.loadpipe("c:\inetpub\wwwroot\ramona\config\\"& _
"receive.pcf")

'Create a context dictionary and execute
Set context = Server.CreateObject("Commerce.Dictionary")
errorlevel = pipe.Execute(1, TransportDictionary, _
context, 0)
%>
關閉檔案。
4 啟動Pipeline Editor

按下 開始22 ,指向 程式集 ,點選 Microsoft Site Server 然後指向 Commerce ,接著按下23 Pipeline Editor 。

4 在Ramona網站建立接收管線

在 File 功能表中,點選24 New 。
在 Choose a Pipeline Template 對話盒中,選擇 receive.pct ,然後按下25 OK 。
4 在接收管線的開啟標題階段中加入OpenHeader元件

利用滑鼠右鍵點選 Open Header ,然後點選26 Insert Component 。
在 Choose a component 對話盒中,選擇 OpenHeader ,然後點選27 OK 。使用元件的預設值。
4 在接收管線的產生收據階段中加入GenerateReceipt元件

利用滑鼠右鍵點選 Generate Receipt ,然後點選28 Insert Component 。
在 Choose a component 對話盒中,選擇 GenerateReceipt ,然後點選29 OK 。
利用滑鼠右鍵點選 GenerateReceipt ,然後點選 Properties 。30
於 GenerateReceipt 標籤頁的 Send Receipt PCF file path 欄位輸入『C:\InterPub\wwwroot\Ramona\Config\transmit.pcf』,然後點選 OK 。314 在接收管線的對應階段中加入MapFromXML元件

利用滑鼠右鍵點選 Map ,然後點選 Insert Component 。32
在 Choose a component 對話盒中,選擇 MapFromXML ,然後點選 OK 。33
利用滑鼠右鍵點選 MapFromXML ,然後點選 Properties 。
於 Map From XML34 標籤頁中,將 Result Object Key 欄位的值從 object 改成 working_data ,然後點選35 OK 。
4 在接收管線的應用程式整合階段中加入Scriptor元件

利用滑鼠右鍵點選 Application Integration ,然後點選36 Insert Component 。
在 Choose a component 對話盒中,選擇 Scriptor ,然後點選37 OK 。
利用滑鼠右鍵點選 Scriptor ,然後點選 Properties 。38
於 Scriptor 標籤頁中,點選 External 。
在 Scriptor39 的確認對話盒中,點選 No 。你不希望內部的原始程式碼外流。
點選 Browse 來選擇script檔案。
將路徑改變成Ramona網站上的Config目錄。40
選擇 POAccess.vbs ,然後點選 Open 。
點選 OK41 來確認設定情形。
將管線 receive.pcf 儲存在C:\InterPub\wwwroot\Ramona\Config目錄下。當提示畫面出現時,選擇覆蓋現有檔案。
練習2:傳送收據給FiveLakes網頁


4 在Ramona網站建立傳輸管線。42

開起 Pipeline Editor 。
在 File 選單中,點選 New43 。
會出現 Choose a Pipeline Template 對話盒,列出所有可以選擇的樣板。
選擇 transmit.pct ,然後按下44 OK 。
4 在傳輸管線的對應階段中加入MapToXML元件

利用滑鼠右鍵點選 Map ,然後點選45 Insert Component 。
會出現 Choose a component 對話盒,列出所有可以選擇的元件。
選擇 MapToXML46 ,然後點選 OK 將元件加入步驟中。
利用滑鼠右鍵點選 MapToXML ,然後點選 Properties47 。
必須使用預設的設定。預設的Object Source Key為 object ,預設的Results XML Key為 working_data ,以及建議的資料格式為XML標籤。
按下48 OK 關閉對話盒。
4 在傳輸管線的加入標題階段中加入AddHeader元件

利用滑鼠右鍵點選 Add Header ,然後選擇49 Insert Component 。
在 Choose a component 對話盒中,選擇 AddHeader ,然後點選50 OK 將元件加入步驟中。
利用滑鼠右鍵點選 AddHeader ,然後選擇 Properties 。51
必須使用預設的設定。輸入與輸出的欄位值都設定成 working_data 。
按下 OK 關閉對話盒。
452 在傳輸管線的傳輸階段中加入SendHTTP元件

利用滑鼠右鍵點選 Transport ,然後選擇 Insert Component 。
在53 Choose a component 對話盒中,選擇 SendHTTP ,然後點選 OK 將元件加入這個階段。
利用滑鼠右鍵點選54 SendHTTP ,然後選擇 Properties 。
在 URL 欄位,輸入『localhost/FiveLakes/accreceipt.asp』。55
指定的URL位址將啟動FiveLakes網站上的accreceipt.asp檔案。
在 Field to posted 對話盒中,輸入 working_data ,然後點選 OK56 確認設定情形。
在 File 功能表中,選擇 Save 來儲存傳輸管線。
將檔案儲存為57 transmit.pcf ,放置在C:\InterPub\wwwroot\Ramona\Config目錄下。當提示畫面出現時,選擇覆蓋現有檔案。
練習3:接收Ramona網站送出的收據


在這個練習裡,你將在FiveLakes網站建立接收管線來接收來自Ramona網站的收據。

4 熟悉FiveLskes網站上啟動接收管線的script程式。

在Microsoft Visual InterDev 6.0中開啟C:\InterPub\wwwroot\FiveLakes\目錄下的58 accreceipt.asp 網頁。
瀏覽下面的程式碼,該程式將建立傳輸辭典並啟動接收管線:

<%
Dim TransportDictionary
set TransportDictionary = _
server.createobject("commerce.dictionary")
TransportDictionary.working_data = request.form
'Create a Pipeline Object, load a PCF
Set pipe = Server.CreateObject("Commerce.MtsPipeline")
call _
pipe.loadpipe("c:\inetpub\wwwroot\fivelakes\config\\"& _
"receive.pcf")
'Create a context dictionary and execute
Set context = Server.CreateObject("Commerce.Dictionary")
errorlevel = pipe.Execute(1, TransportDictionary, _
context, 0)
%>
關閉檔案。
4 啟動Pipeline Editor59

點選 開始 ,指向 程式集 選取 Microsoft Site Server 的60 Commerce ,然後點選 Pipeline Editor 。

4 建立接收管線

在61 File 功能表中,選擇 New 。
在 Choose a Pipeline Template 對話盒中,選擇62 receive.pct ,然後按下 OK 。
4 在接收管線的開啟標題階段中加入OpenHeader元件

利用滑鼠右鍵點選63 Open Header ,然後選擇 Insert Component 。
在 Choose a component 對話盒中,選擇64 OpenHeader ,然後點選 OK 。
必須使用預設的設定。
4 在接收管線的對應階段中加入MapToXML元件65

利用滑鼠右鍵點選 Map ,然後選擇 Insert Component 。
在 Choose a component66 對話盒中,選擇 MapFromXML ,然後點選 OK 。必須使用預設的設定。
4 在接收管線的階段中加入AuditReceipt元件67

利用滑鼠右鍵點選 Audit ,然後選擇 Insert Component 。
在 Choose a component68 對話盒中,選擇 AuditReceipt ,然後點選 OK 。
利用滑鼠右鍵點選 AuditReceipt69 ,然後選擇 Properties 。
在 AuditReceipt 標籤頁中:

a 於70 Connection String 欄位輸入『DSN=FiveLakes;UID=sa;PWD=;』指定連結的資料。

b 在 Table 欄位中輸入『FiveLakes_POReceipt』來指定表格以儲存收據。

在FiveLakes資料庫中已經建立FiveLakes_POReceipt表格。
點選71 OK 來確認設定情形。
將管線儲存在C:\InterPub\wwwroot\FiveLakes\Config目錄下的 receipt.pcf 檔案。當提示畫面出現時,選擇覆蓋現有檔案。
練習4:在FiveLakes網站上購物


假設你是一名在FiveLakes網站上下了訂單的顧客。因為FiveLakes並沒有存貨,所有的訂單都會自動地傳送到Ramona Publishing電子商務網站。從FiveLakes網站接收到訂單後,Ramona網站會處理訂單,產生收據,然後將收據傳回FiveLakes網站。採購訂單會儲存在Ramona資料庫的Ramona_PO表格中。而由Ramona網站送出的收據則儲存在FiveLakes資料庫的FiveLakes_POReceipt表格中。72
在這個練習中你將藉著在FiveLakes站上購物來展示傳輸與接收管線的使用。

4 在FiveLakes網站上購物

啟動Microsoft Internet Explore,在位址欄位中輸入URL位址『http://localhost/fivelakes/』。
點選 Computers 。73
點選 Computer Networks 來觀看產品的詳細介紹。
點選 Buy Now 將產品放入購物袋。
點選74 Continue to Checkout 來購買產品。
在 Shipping 網頁上點選 Total 。75
在 Payment 網頁上點選 Pruchase 。
4 瀏覽Ramona網站所收到的訂單, 以及FiveLakes網站收到的收據76

按下 開始 ,指向 程式集 選擇 Microsoft SQL Server™777.0 ,然後點選 Query Analyzer 來查詢Ramona_PO表格。
在 Connect to SQL Server 對話盒中,按下78 OK 。
在資料庫下拉式選單中選擇 Ramona 資料庫,然後輸入查詢:『SELECT * FROM Ramona_PO』。
按下 F579 執行查詢。
你將看到購買叢書的Sku、Name、Quantity,以及Purchase Number等資料。
在資料庫下拉式選單中選擇 FiveLakes 資料庫,然後輸入查詢『SELECT * FROM FiveLakes_POReceipt』。
按下 F580 執行查詢。
你將看到送出去的採購訂單上的產品ID、日期與時間、接收訊息、接收演算法,與文件形式等資料。
mic64 目前離線  
送花文章: 0, 收花文章: 21 篇, 收花: 61 次