Freigeben über


Aufrufen gleichzeitiger Programme in Oracle E-Business Suite mithilfe des WCF-Dienstmodells

Oracle E-Business Suite macht gleichzeitige Programme verfügbar, die Sie ausführen können, um bestimmte Vorgänge für Oracle-Anwendungen auszuführen. Jede Oracle-Anwendung verfügt über eine Reihe gleichzeitiger Standardprogramme (die für alle Vorgänge identisch sind) und bestimmte gleichzeitige Programme, die für eine Oracle-Anwendung spezifisch sind. Der Oracle E-Business-Adapter macht alle gleichzeitigen Programme als Vorgänge verfügbar, die Adapterclients aufrufen können. Weitere Informationen dazu, wie der Adapter gleichzeitige Programme unterstützt, finden Sie unter Vorgänge für gleichzeitige Programme.

Hinweis

Für die gleichzeitigen Programme, die ihre Metadaten nicht verfügbar machen, macht der Oracle E-Business-Adapter 100 optionale Parameter für jedes dieser gleichzeitigen Programme verfügbar. Um diese gleichzeitigen Programme erfolgreich aufzurufen, muss der Benutzer die Oracle E-Business Suite-Dokumentation lesen, um die Parameter für ein gleichzeitiges Programm zu ermitteln, für das ein Wert erforderlich ist, und sie dann angeben. Ein Beispiel für ein solches gleichzeitiges Programm ist journal import (tatsächlicher Name: GLLEZL) in der General Ledger-Anwendung .

Informationen zu den in diesem Thema verwendeten Beispielen

Das Beispiel in diesem Thema ruft das MS_SAMPLE_COPY_EMP_DATA gleichzeitiges Programm auf, gefolgt von dem Get_Status gleichzeitigen Programms, um die status des ersten gleichzeitigen Programms zu kennen. Diese gleichzeitigen Programme werden aus der Anwendung Application Object Library aufgerufen. Der MS_SAMPLE_COPY_EMP_DATA wird erstellt, indem das skript ausgeführt wird, das mit den Beispielen bereitgestellt wird. Weitere Informationen zu Beispielen finden Sie unter Beispiele für den Oracle EBS-Adapter. Ein Beispiel ConcurrentProgram_ServiceModel, das auf diesem Thema basiert, wird auch mit den Oracle E-Business-Adapterbeispielen bereitgestellt.

Die WCF-Clientklasse

Der Name des WCF-Clients, der zum Aufrufen der gleichzeitigen Programme durch den Oracle E-Business-Adapter generiert wird, ist in der folgenden Tabelle aufgeführt.

Artefakt WCF-Clientname
Gleichzeitiges Programm ConcurrentPrograms_[APP_NAME]Client

[APP_NAME] = Tatsächlicher Name der Oracle E-Business Suite-Anwendung; Beispiel: FND.

Methodensignatur zum Aufrufen gleichzeitiger Programme

Die folgende Tabelle zeigt die Methodensignatur für die gleichzeitigen Programme.

Vorgang Methodensignatur
Gleichzeitiges Programm public <return type><Concurrent_program_name>(Param 1, Param 2, ...)

Als Beispiel zeigt der folgende Code die Methodensignaturen für eine WCF-Clientklasse, die für die MS_SAMPLE_COPY_EMP_DATA und Get_Status gleichzeitigen Programme generiert wurden.

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);  
}  

In diesem Codeausschnitt ist ConcurrentPrograms_FNDClient der Name der WCF-Klasse in der OracleEBSBindingClient.cs, die vom Add Adapter Service Reference Plug-In generiert wird. MS_SAMPLE_COPY_EMP_DATA ist der Name der Methode zum Aufrufen des gleichzeitigen Programms. GetStatusForConcurrentProgram ist der Name der Methode zum Aufrufen des gleichzeitigen Programms, um die status des ersten gleichzeitigen Programms abzurufen.

Hinweis

GetStatusForConcurrentProgram ist der tatsächliche Name des Get_Status gleichzeitigen Programms.

Erstellen eines WCF-Clients zum Aufrufen gleichzeitiger Programme

Der generische Aktionssatz, der zum Ausführen eines Vorgangs in Oracle E-Business Suite mithilfe eines WCF-Clients erforderlich ist, umfasst eine Reihe von Aufgaben, die unter Übersicht über das WCF-Dienstmodell mit dem Oracle E-Business Suite-Adapter beschrieben werden. In diesem Abschnitt wird beschrieben, wie Sie einen WCF-Client erstellen, um die MS_SAMPLE_COPY_EMP_DATA aufzurufen und gleichzeitige Programme Get_Status .

So erstellen Sie einen WCF-Client

  1. Erstellen Sie ein Visual C#-Projekt in Visual Studio. Erstellen Sie für dieses Thema eine Konsolenanwendung.

  2. Generieren Sie die WCF-Clientklasse für die MS_SAMPLE_COPY_EMP_DATA und Get_Status gleichzeitigen Programme. Weitere Informationen zum Generieren einer WCF-Clientklasse finden Sie unter Generieren eines WCF-Clients oder eines WCF-Dienstvertrags für Oracle E-Business Suite-Lösungsartefakte.

    Wichtig

    Stellen Sie vor dem Generieren der WCF-Clientklasse sicher, dass Sie die EnableBizTalkCompatibilityMode-Bindungseigenschaft auf false festlegen.

  3. Fügen Sie im Projektmappen-Explorer verweis auf und Microsoft.ServiceModel.ChannelshinzuMicrosoft.Adapters.OracleEBS.

  4. Öffnen Sie die Datei Program.cs, und fügen Sie die folgenden Namespaces hinzu:

    • Microsoft.Adapters.OracleEBS

    • System.ServiceModel

  5. Öffnen Sie die Datei Program.cs, und erstellen Sie einen Client, wie im folgenden Codeausschnitt beschrieben.

    OracleEBSBinding binding = new OracleEBSBinding();  
    EndpointAddress address = new EndpointAddress("oracleebs://ebs_instance_name");  
    ConcurrentPrograms_FNDClient client = new ConcurrentPrograms_FNDClient(binding, address);  
    

    In diesem Codeausschnitt ist der WCF-Client, ConcurrentPrograms_FNDClient der in OracleEBSBindingClient.cs definiert ist. Diese Datei wird vom Add Adapter Service Reference Plug-In generiert.

    Hinweis

    In diesem Codeausschnitt geben Sie explizit die Bindungs- und Endpunktadresse im Anwendungscode an. Sie können diese Werte auch aus der Anwendungskonfigurationsdatei verwenden, app.config, die ebenfalls vom Add Adapter Service Reference Plug-In generiert wird. Weitere Informationen zu den verschiedenen Möglichkeiten zum Angeben der Clientbindung finden Sie unter Konfigurieren einer Clientbindung für die Oracle E-Business Suite.

  6. Legen Sie die Anmeldeinformationen für den Client fest.

    client.ClientCredentials.UserName.UserName = "myuser";  
    client.ClientCredentials.UserName.Password = "mypassword";  
    
  7. Da Sie gleichzeitige Programme in einer Oracle E-Business Suite-Anwendung aufrufen, müssen Sie den Anwendungskontext festlegen. In diesem Beispiel geben Sie zum Festlegen des Anwendungskontexts die Bindungseigenschaften OracleUserName, OraclePassword und OracleEBSResponsibilityName an. Weitere Informationen zum Anwendungskontext finden Sie unter Festlegen des Anwendungskontexts.

    binding.OracleUserName = "myOracleEBSUserName";  
    binding.OraclePassword = "myOracleEBSPassword";  
    binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";  
    
  8. Öffnen Sie den Client wie im folgenden Codeausschnitt beschrieben:

    try  
    {  
       Console.WriteLine("Opening Client...");  
       client.Open();  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    
  9. Rufen Sie die MS_SAMPLE_COPY_EMP_DATA und Get_Status gleichzeitige Programme auf.

    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. Schließen Sie den Client wie im folgenden Codeausschnitt beschrieben:

    client.Close();  
    
  11. Erstellen Sie das Projekt, und führen Sie es dann aus. Die Anwendung ruft die MS_SAMPLE_COPY_EMP_DATA auf und gibt eine Anforderungs-ID zurück. Die ID wird dann an das Get_Status gleichzeitige Programm übergeben, das schließlich die status des MS_SAMPLE_COPY_EMP_DATA Spaltenprogramms bereitstellt.

Weitere Informationen

Entwickeln von Oracle E-Business Suite-Anwendungen mithilfe des WCF-Dienstmodells