Oracle E-Business Suite 會公開您可以執行的並行程式,以在 Oracle 應用程式上執行特定作業。 每個 Oracle 應用程式都有一組標準並行程式(在所有作業中都相同),以及 Oracle 應用程式特定的特定並行程式。 Oracle E-Business 配接器會將所有並行程序公開為配接器用戶端可以叫用的作業。 如需配接器如何支援並行程序的詳細資訊,請參閱 並行程序的作業。
備註
針對未公開其元數據的並行程式,Oracle E-Business 配接器會針對每個並行程序公開 100 個選擇性參數。 若要成功叫用這些並行程式,用戶必須參閱 Oracle E-Business Suite 檔,以找出需要值的並行程式參數,然後加以指定。 這類並行程式的範例是總帳應用程式中的分錄匯入(實際名稱:GLLEZL)。
關於本主題中使用的範例
本主題中的範例會叫用 MS_SAMPLE_COPY_EMP_DATA 並行程式,後面接著Get_Status並行程式,以瞭解第一 個 並行程序的狀態。 這些並行程式是從 應用程式對象連結庫 應用程式叫用。 MS_SAMPLE_COPY_EMP_DATA是藉由執行範例所提供的腳本來建立。 如需範例的詳細資訊,請參閱 Oracle EBS 配接器的範例。 基於此主題的範例 ConcurrentProgram_ServiceModel 也隨附於 Oracle E-Business 配接器範例中。
WCF 用戶端類別
下表列出了使用 Oracle E-Business 配接器執行併行程式時所產生的 WCF 用戶端名稱。
| 文物 | WCF 用戶端名稱 |
|---|---|
| 並行程式 | ConcurrentPrograms_[APP_NAME]Client |
[APP_NAME] = Oracle E-Business Suite 應用程式的實際名稱;例如,FND。
呼叫並行程式的方法簽名
下表顯示並行程式的方法簽章。
| 行動 | 方法簽章 |
|---|---|
| 並行程式 | public <return type><Concurrent_program_name>(param 1, param 2, ...) |
例如,下列程式代碼會顯示針對 MS_SAMPLE_COPY_EMP_DATA 和 Get_Status 並行程式所產生的 WCF 用戶端類別的方法簽章。
public partial class ConcurrentPrograms_FNDClient : System.ServiceModel.ClientBase<ConcurrentPrograms_FND>, ConcurrentPrograms_FND {
public string MS_SAMPLE_COPY_EMP_DATA(schemas.microsoft.com.OracleEBS._2008._05.Options.SetOptions SetOptions,
schemas.microsoft.com.OracleEBS._2008._05.Options.SetPrintOptions SetPrintOptions,
schemas.microsoft.com.OracleEBS._2008._05.Options.SetRepeatOptions SetRepeatOptions,
string Description, string StartTime);
public bool GetStatusForConcurrentProgram(string RequestId, out string Phase, out string Status,
out string DevPhase, out string DevStatus, out string Message);
}
在此代碼段中, ConcurrentPrograms_FNDClient 是新增配接器服務參考外掛程式所產生的OracleEBSBindingClient.cs WCF 類別的名稱。 MS_SAMPLE_COPY_EMP_DATA 是叫用並行程式的方法名稱。 GetStatusForConcurrentProgram 是叫用並行程式以取得第一個並行程序狀態的方法名稱。
備註
GetStatusForConcurrentProgram 是 並行 程式Get_Status的實際名稱。
建立 WCF 用戶端以叫用並行程式
使用 WCF 用戶端在 Oracle E-Business Suite 上執行作業所需的一般動作集,牽涉到 使用 Oracle E-Business Suite 配接器之 WCF 服務模型概觀中所述的一組工作。 本節說明如何建立 WCF 用戶端來叫用MS_SAMPLE_COPY_EMP_DATA和Get_Status並行程式。
建立 WCF 用戶端
在 Visual Studio 中建立 Visual C# 專案。 針對本主題,建立主控台應用程式。
為 MS_SAMPLE_COPY_EMP_DATA 和 Get_Status 並行程式產生 WCF 用戶端類別。 如需產生 WCF 用戶端類別的詳細資訊,請參閱 產生 WCF 用戶端或 Oracle E-Business Suite 解決方案成品的 WCF 服務合約。
這很重要
產生 WCF 用戶端類別之前,請確定您已將 EnableBizTalkCompatibilityMode 系結屬性設定為 false。
在 [方案總管] 中,新增對
Microsoft.Adapters.OracleEBS和Microsoft.ServiceModel.Channels的參考。開啟Program.cs檔案,並新增下列命名空間:
Microsoft.Adapters.OracleEBSSystem.ServiceModel
開啟Program.cs檔案並建立用戶端,如下列代碼段所述。
OracleEBSBinding binding = new OracleEBSBinding(); EndpointAddress address = new EndpointAddress("oracleebs://ebs_instance_name"); ConcurrentPrograms_FNDClient client = new ConcurrentPrograms_FNDClient(binding, address);在此代碼段中,
ConcurrentPrograms_FNDClient是定義於 OracleEBSBindingClient.cs 中的 WCF 用戶端。 此檔案是由新增配接器服務參考外掛程式所產生。備註
在此代碼段中,您會在應用程式程式代碼中明確指定系結和端點位址。 您也可以使用應用程式元件檔中的這些值,app.config,也由 [新增配接器服務參考外掛程式] 產生。 如需指定客戶端系結之不同方式的詳細資訊,請參閱 設定 Oracle E-Business Suite 的用戶端系結。
設定客戶端的認證。
client.ClientCredentials.UserName.UserName = "myuser"; client.ClientCredentials.UserName.Password = "mypassword";由於您在 Oracle E-Business Suite 應用程式中叫用並行程式,因此您必須設定應用程式內容。 在此範例中,若要設定應用程式內容,您可以指定 OracleUserName、 OraclePassword 和 OracleEBSResponsibilityName 系結屬性。 如需應用程式內容的詳細資訊,請參閱 設定應用程式內容。
binding.OracleUserName = "myOracleEBSUserName"; binding.OraclePassword = "myOracleEBSPassword"; binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";開啟用戶端,如下列代碼段所述:
try { Console.WriteLine("Opening Client..."); client.Open(); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; }叫用 MS_SAMPLE_COPY_EMP_DATA 和 Get_Status 並行程式。
string RequestID; bool Result; string Phase; string Status; string DevPhase; string DevStatus; string Message; try { Console.WriteLine("Invoking the MS_SAMPLE_COPY_EMP_DATA concurrent program"); RequestID = client.MS_SAMPLE_COPY_EMP_DATA(null, null, null, null, null); Console.WriteLine("The request ID generated for the concurrent program is : " + RequestID); Console.WriteLine("********************************************************"); Console.WriteLine("\nWaiting for 60 seconds for the concurrent program to be complete"); System.Threading.Thread.Sleep(60000); Console.WriteLine("\nInvoking the Get_Status concurrent program"); Result = client.GetStatusForConcurrentProgram(RequestID, out Phase, out Status, out DevPhase, out DevStatus, out Message); Console.WriteLine("\nResult is : " + Result); Console.WriteLine("Phase is : " + Phase); Console.WriteLine("Status is : " + Status); Console.WriteLine("DevPhase is : " + DevPhase); Console.WriteLine("DevStatus is : " + DevStatus); Console.WriteLine("Message is : " + Message); Console.WriteLine("********************************************************"); Console.WriteLine("\nHit <RETURN> to end"); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine("Exception : " + ex); throw; }請關閉用戶端程式,如下列程式碼片段所述:
client.Close();建置專案,然後執行它。 應用程式會叫用 MS_SAMPLE_COPY_EMP_DATA ,並傳回要求標識符。 標識符接著會傳遞至 Get_Status 並行程式,最後提供 MS_SAMPLE_COPY_EMP_DATA 數據行程序的狀態。