共用方式為


使用 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 配接器的範例。 基於此主題的範例 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_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_DATA和Get_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.Adapters.OracleEBSMicrosoft.ServiceModel.Channels 的參考。

  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 應用程式