Oracle E-Business 配接器會探索 Oracle E-Business Suite 介面數據表上的一組插入、選取、更新和刪除作業。 藉由使用這些作業,您可以在目標介面數據表上執行由 Where 子句限定的簡單 Insert、Select、Update 和 Delete 語句。 本主題提供如何使用 WCF 通道模型在介面數據表上執行插入作業的指示。
如需配接器如何支援這些作業的詳細資訊,請參閱 介面數據表和介面檢視上的作業。 如需如何使用 WCF 通道模型在 Oracle E-Business Suite 上執行作業的詳細資訊,請參閱 使用 Oracle E-Business Suite 配接器的 WCF 通道模型概觀。
關於本主題中使用的範例
本主題中的範例會在 MS_SAMPLE_EMPLOYEE 介面數據表上執行作業。 數據表是藉由執行範例所提供的腳本來建立。 如需範例的詳細資訊,請參閱 Oracle EBS 配接器的範例。 此範例 InsertOperation 是根據本主題製作,並隨同 Oracle E-Business 配接器範例一起提供。
插入的訊息
若要使用 WCF 通道模型在 Oracle E-Business Suite 上執行作業,您必須擁有作業特有的要求訊息。 在MS_SAMPLE_EMPLOYEE介面資料表上執行 Insert 作業的要求訊息如下所示:
<Insert xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/InterfaceTables/FND/APPS/MS_SAMPLE_EMPLOYEE">
<RECORDSET>
<InsertRecord xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/TableViewRecord/APPS/MS_SAMPLE_EMPLOYEE">
<EMP_NO>10050</EMP_NO>
<NAME>John Smith</NAME>
<DESIGNATION>Manager</DESIGNATION>
<SALARY>500000</SALARY>
<JOIN_DATE>1999-05-31</JOIN_DATE>
</InsertRecord>
</RECORDSET>
</Insert>
此要求訊息會插入具有下列詳細資料的記錄:
Employee Number = 10050
Name = Tom Smith
Designation = Manager
Salary = 500000
您必須將訊息複製到檔案,例如 InsertRequest.xml。 此範例會使用此檔案,以使用 Oracle E-Business 配接器將要求訊息傳送至 Oracle E-Business Suite。 如需數據表上作業之訊息架構的詳細資訊,請參閱 插入、更新、刪除和選取作業的訊息架構。
建立 WCF 通道應用程式
本節提供如何建立 WCF 通道應用程式的指示,以在MS_SAMPLE_EMPLOYEE介面數據表上執行 Insert 作業。
要建立 WCF 通道應用程式,以將記錄插入資料表
在 Visual Studio 中建立 Visual C# 專案。 針對本主題,建立主控台應用程式。
在 [方案總管] 中,新增
Microsoft.Adapters.OracleEBS、Microsoft.ServiceModel.Channels、System.ServiceModel和System.Runtime.Serialization的參考。開啟Program.cs檔案,並新增下列命名空間:
Microsoft.Adapters.OracleEBSMicrosoft.ServiceModel.ChannelsSystem.ServiceModelSystem.ServiceModel.ChannelsSystem.Xml
建立系結和端點。
OracleEBSBinding binding = new OracleEBSBinding(); EndpointAddress address = new EndpointAddress("oracleebs://ebs_instance_name");由於您是在介面數據表上執行作業,因此您必須設定應用程式內容。 在此範例中,若要設定應用程式內容,您可以指定 OracleUserName、 OraclePassword 和 OracleEBSResponsibilityName 系結屬性。 如需應用程式內容的詳細資訊,請參閱 設定應用程式內容。
binding.OracleUserName = "myOracleEBSUserName"; binding.OraclePassword = "myOracleEBSPassword"; binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";建立並開啟通道處理站。 此應用程式會將要求訊息傳送至 Oracle E-Business Suite 並接收回應,因此您必須實作 IRequestChannel 介面。
ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, address); factory.Credentials.UserName.UserName = "<Enter user name here>"; factory.Credentials.UserName.Password = "<Enter password here>"; factory.Open();建立並開啟通道。
IRequestChannel channel; try { channel = factory.CreateChannel(); channel.Open(); } catch (Exception ex) { Console.WriteLine("Exception :" + ex.Message); throw; }建立並傳送要求訊息。
XmlReader readerIn; try { readerIn = XmlReader.Create("InsertRequest.xml"); Console.WriteLine("Reader created"); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; } Message messageIn; Message messageOut; try { messageIn = Message.CreateMessage(MessageVersion.Default, "InterfaceTables/Insert/FND/APPS/MS_SAMPLE_EMPLOYEE", readerIn); messageOut = channel.Request(messageIn); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; }建立要求訊息時,您必須指定訊息動作,指出配接器在介面數據表上執行的動作。 若要在MS_SAMPLE_EMPLOYEE資料表上執行 Insert 作業,訊息動作為
InterfaceTables/Insert/FND/APPS/MS_SAMPLE_EMPLOYEE。 如需如何判斷數據表上各種作業之訊息動作的資訊,請參閱 插入、更新、刪除和選取作業的訊息架構。取得回應消息。
XmlReader readerOut = messageOut.GetReaderAtBodyContents(); XmlDocument doc = new XmlDocument(); doc.Load(readerOut); doc.Save("C:\\Response.xml");關閉訊息、通道和通道處理站。
messageOut.Close(); channel.Close(); factory.Close();建置專案。 建置項目之後,您必須在專案可執行檔相同的位置複製要求訊息 InsertRequest.xml。 一般而言,此位置是項目目錄下的 \bin\Debug\ 。
執行應用程式。 回應訊息 Response.xml會儲存在您於應用程式中指定的位置。 回應訊息包含插入的紀錄數量,如下所示:
<InsertResponse xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/InterfaceTables/FND/APPS/MS_SAMPLE_EMPLOYEE"> <InsertResult>1</InsertResult> </InsertResponse>值 「1」 表示單一記錄會插入MS_SAMPLE_EMPLOYEE數據表。