Condividi tramite


Operazioni di inserimento, aggiornamento, eliminazione o selezione su tabelle e viste dell'interfaccia tramite il modello di servizio WCF

L'adapter Oracle E-Business individua un set di operazioni di base di inserimento, selezione, aggiornamento ed eliminazione nelle tabelle dell'interfaccia. Usando queste operazioni, è possibile eseguire semplici istruzioni Insert, Select, Update e Delete qualificate da una clausola WHERE in una tabella dell'interfaccia di destinazione. In questo argomento vengono fornite istruzioni su come eseguire queste operazioni usando il modello di servizio WCF.

Nota

L'adattatore Oracle E-Business supporta solo le operazioni Select nelle visualizzazioni dell'interfaccia.

Per altre informazioni sul modo in cui l'adattatore supporta queste operazioni, vedere Operazioni sulle tabelle di interfaccia e sulle viste dell'interfaccia.

Informazioni sugli esempi usati in questo argomento

Nell'esempio riportato in questo argomento vengono eseguite operazioni sulla tabella dell'interfaccia MS_SAMPLE_EMPLOYEE. La tabella viene creata eseguendo lo script fornito con gli esempi. Per altre informazioni sugli esempi, vedere Esempi per l'adapter Oracle EBS. Un esempio, Interface_Table_Ops, basato su questo argomento, viene fornito anche con gli esempi dell'adattatore Oracle E-Business.

Classe client WCF

Il nome del client WCF generato per le operazioni di base individuati dall'adapter Oracle E-Business è basato sul nome della tabella o della vista, come indicato nella tabella seguente.

Elemento Nome client WCF
Tabelle di interfaccia InterfaceTables_[APP_NAME][SCHEMA]\[TABLE_NAME]Client
Visualizzazioni dell'interfaccia InterfaceViews_[APP_NAME][SCHEMA]\[VIEW_NAME]Client

[APP_NAME] = Nome effettivo dell'applicazione Oracle E-Business Suite; ad esempio FND.

[SCHEMA] = Raccolta di artefatti; ad esempio APP.

[TABLE_NAME] = Nome della tabella; ad esempio, MS_SAMPLE_EMPLOYEE.

[VIEW_NAME] = Nome della visualizzazione; ad esempio, MS_SAMPLE_EMPLOYEE_View.

Firma del metodo per richiamare operazioni sulle tabelle

Nella tabella seguente vengono illustrate le firme del metodo per le operazioni di base in una tabella. Le firme sono le stesse per una vista, ad eccezione del fatto che lo spazio dei nomi e il nome della vista sostituiscono quelli della tabella.

Operazione Firma del metodo
Insert string Insert(InsertRecord[] RECORDSET);
Selezione SelectRecord[] Select(string COLUMN_NAMES, string FILTER);
Aggiornamento string Update(UpdateRecord RECORDSET, string FILTER);
Delete string Delete(string FILTER);

Ad esempio, il codice seguente mostra le firme del metodo per una classe client WCF generata per le operazioni Delete, Insert, Select e Update nella tabella dell'interfaccia MS_SAMPLE_EMPLOYEE nello schema APPS predefinito.

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 questo frammento di codice InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient è il nome della classe WCF nel plug-in OracleEBSBindingClient.cs generato dal plug-in Di riferimento del servizio adattatore.

Parametri per le operazioni di tabella

In questa sezione vengono forniti i parametri richiesti da ogni operazione di tabella

Selezionare l'operazione

COLUMN_NAMES FILTER
Elenco delimitato da virgole di nomi di colonna nella destinazione; ad esempio "EMP_NO, DESIGNAZIONE". L'elenco di colonne specifica le colonne della destinazione che devono essere restituite nel set di risultati. Le colonne non specificate nell'elenco di colonne verranno impostate sui valori predefiniti .NET nel set di record restituito. Per le colonne nillable, questo valore è Null. Contenuto di una clausola WHERE che specifica le righe di destinazione della query; ad esempio "Designazione = 'Manager'". È possibile impostare questo parametro su Null per restituire tutte le righe della destinazione.

Il valore restituito per un'operazione Select è un set di risultati fortemente tipizzato che contiene le colonne e le righe specificate.

Operazioni di inserimento

Inserisci tipo di operazione RECORDSET
Record multipli Raccolta di INSERTRECORDS da inserire nella tabella.

Il valore restituito per un'operazione di inserimento è il numero di righe inserite.

Operazione di aggiornamento

RECORDSET FILTER
Raccolta di record da aggiornare nella tabella. Contenuto di una clausola WHERE che specifica le righe di destinazione della query; ad esempio "Designazione = 'Manager'". È possibile impostare questo parametro su Null per restituire tutte le righe della destinazione.

Il valore restituito per un'operazione di aggiornamento è il numero di righe aggiornate.

Operazione di eliminazione

L'operazione Delete accetta come input una clausola WHERE che specifica le righe da eliminare. Il valore restituito per un'operazione di eliminazione è il numero di righe eliminate.

Creazione di un client WCF per richiamare operazioni su tabelle di interfaccia e viste di interfaccia

Il set generico di azioni necessarie per eseguire un'operazione su Oracle E-Business Suite tramite un client WCF prevede un set di attività descritte in Panoramica del modello di canale WCF con l'adapter Oracle E-Business Suite. In questa sezione viene descritto come creare un client WCF per richiamare operazioni di base di inserimento, selezione, aggiornamento, eliminazione in una tabella di interfaccia.

Per creare un client WCF per eseguire operazioni sulle tabelle

  1. Creare un progetto Visual C# in Visual Studio. Per questo argomento, creare un'applicazione console.

  2. Generare la classe client WCF per l'operazione Insert, Select, Update e Delete nella tabella dell'interfaccia MS_SAMPLE_EMPLOYEE. Per altre informazioni sulla generazione di una classe client WCF, vedere Generare un client WCF o un contratto di servizio WCF per gli artefatti della soluzione Oracle E-Business Suite.

    Importante

    Prima di generare la classe client WCF, assicurarsi di impostare la proprietà di associazione EnableBizTalkCompatibilityMode su false.

  3. Nella Esplora soluzioni aggiungere un riferimento a Microsoft.Adapters.OracleEBS e Microsoft.ServiceModel.Channels.

  4. Aprire il file Program.cs e aggiungere gli spazi dei nomi seguenti:

    • Microsoft.Adapters.OracleEBS

    • System.ServiceModel

  5. Aprire il file Program.cs e creare un client come descritto nel frammento di codice seguente.

    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 questo frammento di InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient codice è il client WCF definito in OracleEBSBindingClient.cs. Questo file viene generato dal plug-in Aggiungi riferimento al servizio adapter.

    Nota

    In questo frammento di codice si specifica in modo esplicito l'associazione e l'indirizzo dell'endpoint nel codice dell'applicazione. È possibile usare questi valori dal file di configurazione dell'applicazione, app.config, generati anche dal plug-in aggiungi riferimento al servizio adapter. Per altre informazioni sui diversi modi per specificare l'associazione client, vedere Configurare un'associazione client per Oracle E-Business Suite.

  6. Impostare le credenziali per il client.

    client.ClientCredentials.UserName.UserName = "myuser";  
    client.ClientCredentials.UserName.Password = "mypassword";  
    
  7. Poiché si esegue un'operazione su una tabella di interfaccia, è necessario impostare il contesto dell'applicazione. In questo esempio, per impostare il contesto dell'applicazione, specificare le proprietà di associazione OracleUserName, OraclePassword e OracleEBSResponsibilityName . Per altre informazioni sul contesto dell'applicazione, vedere Impostare il contesto dell'applicazione.

    binding.OracleUserName = "myOracleEBSUserName";  
    binding.OraclePassword = "myOracleEBSPassword";  
    binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";  
    
  8. Aprire il client come descritto nel frammento di codice seguente:

    try  
    {  
       Console.WriteLine("Opening Client...");  
       client.Open();  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    
  9. Richiamare l'operazione Di inserimento nella tabella MS_SAMPLE_EMPLOYEE.

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

    È possibile sostituire il frammento di codice precedente per eseguire anche le operazioni Select, Update o Delete. È anche possibile aggiungere i frammenti di codice per eseguire tutte le operazioni in una singola applicazione. Per i frammenti di codice su come eseguire queste operazioni, vedere Selezionare rispettivamente operazione, operazione di aggiornamento ed operazione di eliminazione .

  10. Chiudere il client come descritto nel frammento di codice seguente:

    client.Close();  
    Console.WriteLine("Press any key to exit...");  
    Console.ReadLine();  
    
  11. Compilare il progetto ed eseguirlo. L'applicazione inserisce un record nella tabella MS_SAMPLE_EMPLOYEE.

Selezionare l'operazione

Il codice seguente mostra un'operazione Select destinata alla tabella dell'interfaccia MS_SAMPLE_EMPLOYEE. L'operazione Select seleziona l'ultimo record inserito nella tabella. Il record restituito viene scritto nella console.

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

Operazione di aggiornamento

Il codice seguente mostra un'operazione di aggiornamento destinata alla tabella dell'interfaccia MS_SAMPLE_EMPLOYEE.

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

Operazioni di eliminazione

Nel codice seguente viene illustrata un'operazione Delete destinata alla tabella dell'interfaccia MS_SAMPLE_EMPLOYEE.

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

Vedere anche

Sviluppare applicazioni Oracle E-Business Suite usando il modello di servizio WCF