Freigeben über


Einfügen, Aktualisieren, Löschen oder Auswählen von Vorgängen für Schnittstellentabellen und -ansichten mithilfe des WCF-Dienstmodells

Der Oracle E-Business-Adapter erkennt eine Reihe grundlegender Einfüge-, Select-, Update- und Delete-Vorgänge für Schnittstellentabellen. Mithilfe dieser Vorgänge können Sie einfache Insert-, Select-, Update- und Delete-Anweisungen ausführen, die durch eine WHERE-Klausel für eine Zielschnittstellentabelle qualifiziert sind. Dieses Thema enthält Anweisungen zum Ausführen dieser Vorgänge mithilfe des WCF-Dienstmodells.

Hinweis

Der Oracle E-Business-Adapter unterstützt nur Select operations on interface views.The Oracle E-Business adapter supports only select operations on interface views.

Weitere Informationen dazu, wie der Adapter diese Vorgänge unterstützt, finden Sie unter Vorgänge für Schnittstellentabellen und Schnittstellensichten.

Informationen zu den in diesem Thema verwendeten Beispielen

Das Beispiel in diesem Thema führt Vorgänge für die MS_SAMPLE_EMPLOYEE-Schnittstellentabelle aus. Die Tabelle wird erstellt, indem das mit den Beispielen bereitgestellte Skript ausgeführt wird. Weitere Informationen zu Beispielen finden Sie unter Beispiele für den Oracle EBS-Adapter. Ein Beispiel Interface_Table_Ops, das auf diesem Thema basiert, wird auch mit den Oracle E-Business-Adapterbeispielen bereitgestellt.

Die WCF-Clientklasse

Der Name des WCF-Clients, der für die grundlegenden Vorgänge generiert wurde, die der Oracle E-Business-Adapter ermittelt, basiert auf dem Namen der Tabelle oder Sicht, wie in der folgenden Tabelle aufgeführt.

Artefakt WCF-Clientname
Schnittstellentabellen InterfaceTables_[APP_NAME][SCHEMA]\[TABLE_NAME]Client
Schnittstellenansichten InterfaceViews_[APP_NAME][SCHEMA]\[VIEW_NAME]Client

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

[SCHEMA] = Sammlung von Artefakten; z. B. APPS.

[TABLE_NAME] = Der Name der Tabelle; beispielsweise MS_SAMPLE_EMPLOYEE.

[VIEW_NAME] = Der Name der Ansicht; beispielsweise MS_SAMPLE_EMPLOYEE_View.

Methodensignatur für Aufrufvorgänge in Tabellen

Die folgende Tabelle zeigt die Methodensignaturen für die grundlegenden Vorgänge für eine Tabelle. Die Signaturen sind für eine Ansicht identisch, mit dem Unterschied, dass der Ansichtsnamespace und der Name die der Tabelle ersetzen.

Vorgang Methodensignatur
Einfügen string Insert(InsertRecord[] RECORDSET);
Select SelectRecord[] Select(string COLUMN_NAMES, string FILTER);
Aktualisieren string Update(UpdateRecord RECORDSET, String FILTER);
Löschen string Delete(string FILTER);

Als Beispiel zeigt der folgende Code die Methodensignaturen für eine WCF-Clientklasse, die für die Vorgänge Delete, Insert, Select und Update für die MS_SAMPLE_EMPLOYEE-Schnittstellentabelle unter dem STANDARDMÄßIGEN APPS-Schema generiert wurde.

public partial class InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient : System.ServiceModel.ClientBase<InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEE>, InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEE {      
    public SelectRecord[] Select(string COLUMN_NAMES, string FILTER);  

    public string Insert(InsertRecord[] RECORDSET);  

    public string Update(UpdateRecord RECORDSET, string FILTER);  

    public string Delete(string FILTER);  
}  

In diesem Codeausschnitt ist InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient der Name der WCF-Klasse in der OracleEBSBindingClient.cs, die vom Add Adapter Service Reference Plug-In generiert wird.

Parameter für Tabellenvorgänge

In diesem Abschnitt werden die Parameter bereitgestellt, die für jeden Tabellenvorgang erforderlich sind.

Vorgang auswählen

COLUMN_NAMES FILTER
Eine durch Trennzeichen getrennte Liste von Spaltennamen im Ziel; Beispiel: "EMP_NO, BEZEICHNUNG". Die Spaltenliste gibt die Spalten des Ziels an, die im Resultset zurückgegeben werden sollen. Spalten, die nicht in der Spaltenliste angegeben sind, werden im zurückgegebenen Datensatzsatz auf ihre .NET-Standardwerte festgelegt. Für nillierbare Spalten ist dieser Wert NULL. Der Inhalt einer WHERE-Klausel, die die Zielzeilen der Abfrage angibt; Beispiel: "Designation = 'Manager'". Sie können diesen Parameter auf NULL festlegen, um alle Zeilen des Ziels zurückzugeben.

Der Rückgabewert für einen Select-Vorgang ist ein stark typisiertes Resultset, das die angegebenen Spalten und Zeilen enthält.

Einfügevorgang

Vorgangstyp einfügen RECORDSET
Mehrere Datensätze Eine Auflistung von INSERTRECORDS, die in die Tabelle eingefügt werden soll.

Der Rückgabewert für einen Insert-Vorgang ist die Anzahl der eingefügten Zeilen.

Updatevorgang

RECORDSET FILTER
Eine Auflistung von Datensätzen, die in der Tabelle aktualisiert werden sollten. Der Inhalt einer WHERE-Klausel, die die Zielzeilen der Abfrage angibt; Beispiel: "Designation = 'Manager'". Sie können diesen Parameter auf NULL festlegen, um alle Zeilen des Ziels zurückzugeben.

Der Rückgabewert für einen Update-Vorgang ist die Anzahl der aktualisierten Zeilen.

Löschvorgang

Der Delete-Vorgang verwendet als Eingabe eine WHERE-Klausel, die die zu löschenden Zeilen angibt. Der Rückgabewert für einen Delete-Vorgang ist die Anzahl der gelöschten Zeilen.

Erstellen eines WCF-Clients zum Aufrufen von Vorgängen für Schnittstellentabellen und Schnittstellensichten

Der generische Aktionssatz, der zum Ausführen eines Vorgangs in Oracle E-Business Suite mit einem WCF-Client erforderlich ist, umfasst eine Reihe von Aufgaben, die unter Übersicht über das WCF-Kanalmodell mit dem Oracle E-Business Suite-Adapter beschrieben sind. In diesem Abschnitt wird beschrieben, wie Sie einen WCF-Client erstellen, um einfache Insert-, Select-, Update- und Delete-Vorgänge für eine Schnittstellentabelle aufzurufen.

So erstellen Sie einen WCF-Client zum Ausführen von Vorgängen für Tabellen

  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 Vorgänge Einfügen, Auswählen, Aktualisieren und Löschen für die MS_SAMPLE_EMPLOYEE-Schnittstellentabelle. 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");  
    InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient client = new InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient(binding, address);  
    

    In diesem Codeausschnitt ist der WCF-Client, InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient 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 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 einen Vorgang für eine Schnittstellentabelle ausführen, 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 den Insert-Vorgang für die MS_SAMPLE_EMPLOYEE Tabelle auf.

    Console.WriteLine("The application will insert a record in the MS_SAMPLE_EMPLOYEE interface table");  
    
    // The date values cannot contain time zone information. Hence, you must use  
    // DateTimeKind.Unspecified to not include the time zone information.  
    DateTime date = new DateTime(DateTime.Now.Ticks, DateTimeKind.Unspecified);  
    
    string result;  
    
    InsertRecord[] recordSet = new InsertRecord[1];  
    
    EMP_NO__COMPLEX_TYPE emp_no = new EMP_NO__COMPLEX_TYPE();  
    emp_no.Value = "10007";  
    
    NAME__COMPLEX_TYPE name = new NAME__COMPLEX_TYPE();  
    name.Value = "John Smith";  
    
    DESIGNATION__COMPLEX_TYPE desig = new DESIGNATION__COMPLEX_TYPE();  
    desig.Value = "Manager";  
    
    SALARY__COMPLEX_TYPE salary = new SALARY__COMPLEX_TYPE();  
    salary.Value = "500000";  
    
    JOIN_DATE__COMPLEX_TYPE doj = new JOIN_DATE__COMPLEX_TYPE();  
    doj.Value = date;  
    
    recordSet[0] = new InsertRecord();  
    recordSet[0].EMP_NO = emp_no;  
    recordSet[0].NAME = name;  
    recordSet[0].DESIGNATION = desig;  
    recordSet[0].SALARY = salary;  
    recordSet[0].JOIN_DATE = doj;  
    
    try  
    {  
       result = client.Insert(recordSet);   
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    
    Console.WriteLine("Number of records inserted= " + result);  
    Console.WriteLine("Press any key to continue...");  
    Console.ReadLine();  
    
    

    Sie können den vorherigen Codeausschnitt ersetzen, um auch Select-, Update- oder Delete-Vorgänge auszuführen. Sie können die Codeausschnitte auch anfügen, um alle Vorgänge in einer einzelnen Anwendung auszuführen. Codeausschnitte zum Ausführen dieser Vorgänge finden Sie unter Vorgang auswählen, Aktualisierungsvorgang bzw . Löschvorgang .

  10. Schließen Sie den Client wie im folgenden Codeausschnitt beschrieben:

    client.Close();  
    Console.WriteLine("Press any key to exit...");  
    Console.ReadLine();  
    
  11. Erstellen Sie das Projekt, und führen Sie es dann aus. Die Anwendung fügt einen Datensatz in die MS_SAMPLE_EMPLOYEE Tabelle ein.

Vorgang auswählen

Der folgende Code zeigt einen Select-Vorgang, der auf die MS_SAMPLE_EMPLOYEE-Schnittstellentabelle abzielt. Der Select-Vorgang wählt den zuletzt in die Tabelle eingefügten Datensatz aus. Der zurückgegebene Datensatz wird in die Konsole geschrieben.

Console.WriteLine("The application will now select the last inserted record");  
SelectRecord[] selectRecords;  
try  
{  
   selectRecords = client.Select("*", "WHERE EMP_NO LIKE 10007");  
}  
catch (Exception ex)  
{  
   Console.WriteLine("Exception: " + ex.Message);  
   throw;  
}  

Console.WriteLine("The details of the newly added employee are:");  
Console.WriteLine("********************************************");  
for (int i = 0; i < selectRecords.Length; i++)  
{  
   Console.WriteLine("Employee ID         : " + selectRecords[i].EMP_NO);  
   Console.WriteLine("Employee Name       : " + selectRecords[i].NAME);  
   Console.WriteLine("Employee Desigation : " + selectRecords[i].DESIGNATION);  
   Console.WriteLine("Employee Salary     : " + selectRecords[i].SALARY);  
   Console.WriteLine();  
}  
Console.WriteLine("********************************************");  
Console.WriteLine("Press any key to continue ...");  
Console.ReadLine();  

Aktualisierungsvorgang

Der folgende Code zeigt einen Updatevorgang, der auf die MS_SAMPLE_EMPLOYEE-Schnittstellentabelle abzielt.

Console.WriteLine("The application will now update the employee name in the newly inserted record");  
string recordsUpdated;  
UpdateRecord updateRecordSet = new UpdateRecord();  
updateRecordSet.NAME = "Tom Smith";  
updateRecordSet.DESIGNATION = "Accountant";  

try  
{  
   recordsUpdated = client.Update(updateRecordSet, "WHERE EMP_NO LIKE 10007");  
}  
catch (Exception ex)  
{  
   Console.WriteLine("Exception: " + ex.Message);  
   throw;  
}  

Console.WriteLine("No of records updated: " + recordsUpdated);  
Console.WriteLine("Press any key to continue...");  
Console.ReadLine();  

Löschvorgang

Der folgende Code zeigt einen Delete-Vorgang, der auf die MS_SAMPLE_EMPLOYEE-Schnittstellentabelle ausgerichtet ist.

Console.WriteLine("The sample will now delete the record that it first inserted");  
string deletedRecords;  
try  
{  
   deletedRecords = client.Delete("WHERE EMP_NO LIKE 10007");  
}  
catch (Exception ex)  
{  
   Console.WriteLine("Exception: " + ex.Message);  
   throw;  
}  
Console.WriteLine("No of records deleted: " + deletedRecords);  
Console.WriteLine("Press any key to exit...");  
Console.ReadLine();  

Weitere Informationen

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