使用 WCF 通道模型,在 Oracle E-Business Suite 中的介面資料表上執行插入作業
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 配接器的範例。 Oracle E-Business 配接器範例也會提供以本主題為基礎的 範例 InsertOperation。
插入訊息
若要使用 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 通道應用程式
本節提供如何在 MS_SAMPLE_EMPLOYEE 介面資料表上建立 WCF 通道應用程式以執行插入作業的指示。
若要建立 WCF 通道應用程式,以將記錄插入資料表
在 Visual Studio 中建立 Visual C# 專案。 針對本主題,建立主控台應用程式。
在方案總管中,新增 、
Microsoft.ServiceModel.Channels
System.ServiceModel
和 的System.Runtime.Serialization
參考Microsoft.Adapters.OracleEBS
。開啟 Program.cs 檔案,並新增下列命名空間:
Microsoft.Adapters.OracleEBS
Microsoft.ServiceModel.Channels
System.ServiceModel
System.ServiceModel.Channels
System.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資料表。