1 2 3 4 5 6 7 > 下一頁 | 最後一頁 1/7
檢視方式: 列表 摘要
如何載入非XML訊息到BizTalk
willeam 在天空部落發表於17:51:19 | BizTalk Server

最近在try一個東西,主要是想透過BizTalk  Orchestration去讀取檔案然後FTP到某個站台去.
馬上就想到透過XmlDocument物件去Load進來,然後在Assignment給訊息物件.一試之下果然不行.因為假如讀取的檔案非XML格式的話,使用xmldocument物件就無法載入.這下可糟了,難不成無解.後來在搜尋網路之後,找到了這個網站.
http://geekswithblogs.net/Podwysocki/archive/2007/11/20/117007.aspx

果然給了我一個可行的指引,經過底下的測試後,果然可行.
step1: 寫一個function,準備給biztalk呼叫,此function傳入2個參數,一個是檔案的路徑,一個是準備回傳給biztalk的訊息內容.


另外還有一個class,此次實驗的重點主要是這個class.因為這個class負責讀入外部檔案,並且以biztalk可以接受的型態回傳.



Step2: 在BizTalk Orchestration裡面定義2個訊息變數,一個用來記錄希望biztalk取得檔案名稱的xml訊息,另一個是內含binary檔案的訊息內容.

Step3: 建立一個Orchestration,在Receive shape讀入一個內含檔案名稱的xml訊息並透過Assignment shape呼叫外部的元件,在外部元件裡面會讀取檔案後,並組成biztalk接受的訊息回傳.
最後在Send Shape將此檔案上傳到指定的FTP目錄.




Assignment的程式碼如下:


做到這裡已經算完工了,經過測試,我丟了一個這樣的xml檔案.

結果就可以在FTP Server上看到這一個檔案.

 




 


如何用.net執行biztalk mapper
willeam 在天空部落發表於23:51:13 | BizTalk Server

BizTalk所建出來的schema是否可以直接用.net語法載入進來,然後對某個xml進行validation?答案是可以.只要利用System.Xml.XmlDocument所提供的Validate()方法就可以輕鬆辦到.
同樣的,若是想用.net去呼叫BizTalk所建出來的mapper,進行xml的轉換作業,不知道是否也可以呢?答案還是可以.只不過需要多一些步驟就是了.

首先,我們要先取得BizTalk Mapper檔案所對應的Xsl描述,所以我們先對*.btm按滑鼠右鍵,然後選擇Validate Map項目.



這時候Visual Studio會產生一個附檔名為xsl的檔案,這個檔案就是BizTalk Mapper所對應的Xsl檔,此檔案可以直接提供給.net去呼叫.


將此xsl內容複製出來並儲存到.net程式可存取的目錄下.
再來,我們需要建立一個此mapper的輸入instance.xml,這個檔案是做為Xsl轉換作業的輸入檔案,目前先暫時取名為input.xml.
最後建立一個.net程式,程式碼內容如下.

            string XSL_FILE = "Map_POToDB.xsl";
            string input = "input.xml";
            string output = "output.xml";
       
            XslCompiledTransform xslt = new XslCompiledTransform();
            XsltSettings settings = new XsltSettings(false, true);

            xslt.Load(XSL_FILE,settings,new XmlUrlResolver());
            xslt.Transform(input, output);
   


透過此程式,他會先將Xsl載入到XslCompiledTransform類別裡面,再來透過Transform()方法將input.xml根據Xsl的定義進行轉換,最後將結果儲存成output.xml.
這個做法目前測試的結果,與透過BizTalk Mapper所作的結果一模一樣,而且就算BizTalk Mapper有一些Functoid元件也都可以正確的轉換成功,看起來應該是不會有甚麼太大的問題才對.
有興趣的話自行試看看吧!




透過SAP Adapter 3.0撈取SAP資料時請注意
willeam 在天空部落發表於09:05:39 | BizTalk Server

Microsoft最新的SAP Adapter在功能上比上一版強很多,不過最令人注目的是他終於可以透過RFC Destination的方式讓SAP Call out到外面的BizTalk,雖然上一版也可以讓SAP Call out,不過似乎只能透過IDOC的介面達到,RFC的方式還是無法做到.這個最新的版本完全彌補了這一塊的缺陷,讓SAP Adapter達到真正全面性對SAP介面支援,真是有點感動捏.

不過在使用SAP Adapter開發時,時候有一點需要特別注意,這一點在之前1.0或2.0版都尚無此現象.這是因為當我們呼叫完SAP取得資料後,SAP Adapter在接收SAP所回傳的資料會直接用一開始我們送給SAP的message結構去承接回傳訊息.這樣會導致一個現象,若我們在呼叫SAP時並無特別把預計SAP回傳的結構也一併建立在送出的訊息結構的話,收到的訊息會漏了SAP真正回傳的資料.
舉例送出給SAP的訊息如下:

<ns0:RFC_CUSTOMER_GET xmlns:ns0="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
  <ns0:KUNNR></ns0:KUNNR>
  <ns0:NAME1>B*</ns0:NAME1>
</ns0:RFC_CUSTOMER_GET>


此訊息只包含了預計給SAP的參數值,看不到SAP回傳後,用來放資料的那個節點,所以就會造成如下的結果:

<?xml version="1.0" encoding="utf-8"?>
<RFC_CUSTOMER_GETResponse xmlns="
http://Microsoft.LobServices.Sap/2007/03/Rfc/">
</RFC_CUSTOMER_GETResponse>


根本沒有看到回傳的資料.但是實際上,SAP有回傳資料給BizTalk,只是SAP Adapter在承接的時候出了問題.
為了讓回傳資料可以完整的取得,你必須在一開始呼叫SAP時,就傳入包含回傳結構的訊息內容.

<ns0:RFC_CUSTOMER_GET xmlns:ns0="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
  <ns0:KUNNR></ns0:KUNNR>
  <ns0:NAME1>B*</ns0:NAME1>
  <ns0:CUSTOMER_T>   
  </ns0:CUSTOMER_T>

</ns0:RFC_CUSTOMER_GET>


這個訊息包含了SAP回傳資料所放置的節點  <ns0:CUSTOMER_T></ns0:CUSTOMER_T> ,雖然並沒有填入值在裡面,但是我們主要的目的是為了讓BizTalk可以將SAP回傳值正確的填入到這個地方,所以才需要在一開始就加入這個節點.加入後再次呼叫SAP就可以取得完整的回傳值.

<?xml version="1.0" encoding="utf-8" ?>
  <RFC_CUSTOMER_GETResponse xmlns="
http://Microsoft.LobServices.Sap/2007/03/Rfc/">
 
<CUSTOMER_T>
  <BRFCKNA1 xmlns="
http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
  <KUNNR>0000300051</KUNNR>
  <ANRED />
  <NAME1>Bed World</NAME1>
  <PFACH>1030</PFACH>
  <STRAS>387 387 W La Cadena Dr, Riverside</STRAS>
  <PSTLZ>80237</PSTLZ>
  <ORT01>DENVER</ORT01>
  <TELF1 />
  <TELFX />
  </BRFCKNA1>
  </CUSTOMER_T>

  </RFC_CUSTOMER_GETResponse>



由於這個動作之前的版本都不需要,因此讓我覺得在強大功能的背後,還是有一點點小小遺憾.







Could not open the ICU common library
willeam 在天空部落發表於20:42:06 | BizTalk Server
接續上一篇文章,當你已經可以開啟Consume Adapter Service設定畫面,並且進行相關的security,URI Properties, Binding Properties的設定,當你想要連接SAP取得RFC, tRFC, BAPI, IDOC的清單時,突然發現整個VS2005自動關閉了,到底出了甚麼回事.重新打開專案目錄後,赫然發現多了一個檔案nlsui_init_trc_file_XXXX.trc在專案跟目錄下,主檔名的後四碼為4個數字,我想主要是用來編流水號.開啟這個檔案的內容後,可以看到裡面紀錄錯誤的原因,內容如下.


Could not open the ICU common library.
   The following files must be in the path described by
   the environment variable "PATH":
   icuuc26.dll, icudt26l.dll, icuin26.dll [nlsui0.c 543] pid = 2368



根據錯誤訊息來看,主要是找不到icuuc26.dll, icudt26l.dll, icuin26.dll這3個檔案,因此我再度尋找SAP Client的安裝程式,果然裡面包含了這些檔案,在我將icu*的檔案copy到c:\windows\system32目錄下後,再度進入設定畫面,設定完後並且進行SAP ERP的連接以取得RFC, tRFC, BAPI, IDOC的清單,這次就成功取得清單了.


Good luck.





error loading the binding,Microsoft.Adapters.SAP.SAPBinding
willeam 在天空部落發表於00:43:43 | BizTalk Server
之前文章有提過,微軟最新的BizTalk Adapter Pack可以透過coding的方式與SAP進行溝通,但是在你裝好之後,在開發BizTalk專案時,預計透過Add Generate Items--> Comsume Adapter Service來建立Schema時,可能會遇到出現以下錯誤訊息.


There was an error loading the binding, Microsoft.Adapters.SAP.SAPBinding, from your system configuration.
ConfigurationErrorsException: 引動過程的目標傳回例外狀況。

System.Reflection.TargetInvocationException: 引動過程的目標傳回例外狀況。 ---> System.IO.FileNotFoundException: 找不到指定的模組。 (發生例外狀況於 HRESULT: 0x8007007E)
   於 Microsoft.Adapters.SAP.SAPBinding..ctor()
   --- 內部例外狀況堆疊追蹤的結尾 ---
   於 System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
   於 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
   於 System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
   於 System.Activator.CreateInstance(Type type, Boolean nonPublic)
   於 Microsoft.ServiceModel.Channels.Tools.MetadataSearchBrowse.MetadataPanel.EnumerateAllAvailableBindings()



這是因為你缺少了librfc32u.dll這個檔案,這個檔案在所有BizTalk所提供的安裝程式都找不到,這個檔案是在SAP client的安裝程式裡面,若你有SAP Client的安裝程式的話,請先找到此檔案,然後將他copy到Windows\System32目錄下,就不會再出現此錯誤訊息了.



Using the Data Provider for SAP with SSIS
willeam 在天空部落發表於16:00:37 | BizTalk Server

微軟在連接SAP的Solution,大多都是建議透過BizTalk Server來與SAP做溝通,因此在BizTalk 2004的時候就有推出SAP Adapter 1.0,當時在安裝SAP Adapter前須要先安裝SAP.Net Connector後,然後再裝SAP Adapter.裝好之後,使用者可以選擇透過SAP.Net connector以coding方式進行SAP RFC的呼叫,也可以透過BizTalk SAP Adapter與SAP進行溝通.

到了BizTalk 2006與BizTalk 2006 R2時,推出了BizTalk® Adapter v2.0 for mySAP™,這個版本取消了上一個版本讓使用者可以直接透過SAP.NET Connector與SAP做連接的方式,只允許使用者透過BizTalk SAP Adapter與SAP進行溝通,不過在SAP Adapter的使用上與前一個版本都一樣,沒有甚麼差別.

因為SAP Adapter 2.0無法讓使用者直接透過Coding的方式與SAP連接,所以,讓只單純想撈取SAP資料的想法受到了限制,也造成了很大的不方便性,因此,在SAP Adapter 3.0這個版本,提供了新的方式讓使用者可以用Coding的方式與SAP做溝通,這個方式與之前SAP Adpater 1.0不一樣,算是一個全新的架構.

這個SAP Adapter 3.0裝了之後,不但BizTalk Server可以用他來連接SAP,也可以透過Coding來與SAP連接,更進一步還可以讓你用SSIS讀取SAP的資料喔.
為方便大家了解,我整理了幾個url讓大家可以參考一下.

Microsoft BizTalk Adapter 3.0 for mySAP Business Suite Help
http://msdn.microsoft.com/en-us/library/cc185529.aspx


Using the Data Provider for SAP with SSIS
http://msdn.microsoft.com/en-us/library/cc185548.aspx


Microsoft .NET Data Provider for mySAP Business Suite
http://msdn.microsoft.com/zh-tw/library/ms141761(SQL.100).aspx


Configuring Reporting Services to Use the Microsoft .NET Data Provider for mySAP Business Suite
http://msdn.microsoft.com/zh-tw/library/ms345256(SQL.100).aspx


若大家對這個topic還有興趣的話,我後續會將一些研究的成過陸續post上來,讓大家可以多一些了解.


EDIFACT 規格哪裡找
willeam 在天空部落發表於23:29:19 | BizTalk Server

當你想要實作EDI前,你必須先取得想要實作的EDI message guideline,該文件定義了EDI的格式內容,一般來講,交易的對方會提供給我們該文件,不過,今天若是別人沒有提供給我們的話,該怎麼辦呢.
可以到UNECE協會的網站上下載.網址如下
http://www.unece.org/trade/untdid/welcome.htm

進入該網站後,可以從左方的選單進入下載畫面.


BizTalk Oracle Database Adapter
willeam 在天空部落發表於01:09:20 | BizTalk Server

發現一個使用BizTalk Oracle Database Adapter去連Oracle的入門級使用介紹.
在MSDN Developer Center裡面,因為他有每個步驟的畫面,所以我個人是覺得讀起來比較有感覺.

http://msdn.microsoft.com/en-us/library/bb226425.aspx



觀看全文...
SAP T-code list
willeam 在天空部落發表於08:28:57 | 資訊分享
最近在研究SAP的功能時,發現原來網路上關於SAP的資源也滿多的,我覺得最有用的是在網路上可以查到所有的Transaction code的功能,這樣就不用每次背不起來時還要去問人,底下把一些我找到的資源網址列出來給有需要的人參考.

Easy to Remember (SAP Transaction Codes)

http://www.sap-img.com/general/easy-to-remember-transaction-codes.htm
將一些比較常用的t-code列出來,方便查看.

All SAP Transaction Codes with Report and Description
http://www.easymarketplace.de/online-pdfs-t-z.php
提供的所有的t-code清單,根據字母方式分類,看到後真是嚇死人,怎麼那麼多啊.

SAP Library
http://help.sap.com/saphelp_nw04/helpdata/en/e1/8e51341a06084de10000009b38f83b/frameset.htm
線上的help,可以看到SAP系統的操作說明與功能.

如何debug biztalk mapper
willeam 在天空部落發表於16:24:46 | BizTalk Server

最近我同事阿川發現一個不錯的文章,主要是介紹如何debug biztalk的mapper,真是大大受益.
以前在做test map時,通常都是靠經驗再抓問題,有時候結果沒出來也都是一個一個欄位去抓問題,實在很花時間.但是如果可以透過debug mapper的方式,這樣就可以比較知道是哪邊出了問題,抓bug的速度也會快很多喔.

http://www.cnblogs.com/netboy/archive/2008/05/09/1190623.html


1 2 3 4 5 6 7 > 下一頁 | 最後一頁 1/7
行事曆
Oct 2008
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
每月記事
Oct 2008(1)
Aug 2008(2)
Jul 2008(3)
Jun 2008(2)
May 2008(2)
Mar 2008(1)
Oct 2007(2)
Sep 2007(1)
Aug 2007(1)
Dec 2006(1)
Oct 2006(1)
Sep 2006(3)
Aug 2006(2)
Jul 2006(3)
Jun 2006(2)
Apr 2006(3)
Mar 2006(2)
Feb 2006(1)
Jan 2006(3)
Dec 2005(3)
Nov 2005(1)
Oct 2005(3)
Sep 2005(8)
Aug 2005(2)
Jul 2005(5)
Jun 2005(3)
May 2005(10)
我推薦誰
目前無名單
誰推薦我
目前無名單
誰來我家
RSS 訂閱
贊助商
其它資訊
本部落所刊登之內容,皆由作者個人所提供,不代表 yam 天空 本身立場。
POWERED BY
POWERED BY 天空部落
會員登入免費註冊