共用方式為


使用 WCF 服務模型在 Oracle E-Business Suite 中叫用並行程式

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 配接器的範例。 Oracle E-Business 配接器範例也會提供以本主題為基礎的範例 ConcurrentProgram_ServiceModel

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_DATAGet_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_DATAGet_Status 並行程式。

建立 WCF 用戶端

  1. 在 Visual Studio 中建立 Visual C# 專案。 針對本主題,建立主控台應用程式。

  2. MS_SAMPLE_COPY_EMP_DATAGet_Status 並行程式產生 WCF 用戶端類別。 如需產生 WCF 用戶端類別的詳細資訊,請參閱 產生 WCF 用戶端或 Oracle E-Business Suite 解決方案成品的 WCF 服務合約

    重要

    產生 WCF 用戶端類別之前,請確定您將 EnableBizTalkCompatibilityMode 系結屬性設定為 false。

  3. 在 方案總管中,新增 和 Microsoft.ServiceModel.ChannelsMicrosoft.Adapters.OracleEBS 參考。

  4. 開啟 Program.cs 檔案,並新增下列命名空間:

    • Microsoft.Adapters.OracleEBS

    • System.ServiceModel

  5. 開啟 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 的用戶端系結

  6. 設定用戶端的認證。

    client.ClientCredentials.UserName.UserName = "myuser";  
    client.ClientCredentials.UserName.Password = "mypassword";  
    
  7. 因為您要叫用 Oracle E-Business Suite 應用程式中的並行程式,所以您必須設定應用程式內容。 在此範例中,若要設定應用程式內容,您可以指定 OracleUserNameOraclePasswordOracleEBSResponsibilityName 系結屬性。 如需應用程式內容的詳細資訊,請參閱 設定應用程式內容

    binding.OracleUserName = "myOracleEBSUserName";  
    binding.OraclePassword = "myOracleEBSPassword";  
    binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";  
    
  8. 開啟用戶端,如下列程式碼片段所述:

    try  
    {  
       Console.WriteLine("Opening Client...");  
       client.Open();  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    
  9. 叫用 MS_SAMPLE_COPY_EMP_DATAGet_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;                 
    }  
    
  10. 如下列程式碼片段所述關閉用戶端:

    client.Close();  
    
  11. 建置專案,然後加以執行。 應用程式會叫用 MS_SAMPLE_COPY_EMP_DATA 並傳回要求識別碼。 識別碼接著會傳遞至 Get_Status 並行程式,最後提供 MS_SAMPLE_COPY_EMP_DATA 資料行程式的狀態。

另請參閱

使用 WCF 服務模型開發 Oracle E-Business Suite 應用程式