Compartir a través de


Insertar, actualizar, eliminar o seleccionar operaciones en tablas y vistas de interfaz mediante el modelo de servicio WCF

El adaptador de Oracle E-Business detecta un conjunto de operaciones básicas de inserción, selección, actualización y eliminación en tablas de interfaz. Mediante estas operaciones, puede realizar instrucciones Insert, Select, Update y Delete sencillas calificadas por una cláusula WHERE en una tabla de interfaz de destino. En este tema se proporcionan instrucciones sobre cómo realizar estas operaciones mediante el modelo de servicio WCF.

Nota

El adaptador de Oracle E-Business solo admite operaciones Select en vistas de interfaz.

Para obtener más información sobre cómo el adaptador admite estas operaciones, vea Operaciones en tablas de interfaz y vistas de interfaz.

Acerca de los ejemplos usados en este tema

En el ejemplo de este tema se realizan operaciones en la tabla de interfaz MS_SAMPLE_EMPLOYEE. La tabla se crea mediante la ejecución del script proporcionado con los ejemplos. Para obtener más información sobre los ejemplos, consulte Ejemplos para el adaptador de Oracle EBS. También se proporciona un ejemplo, Interface_Table_Ops, que se basa en este tema, con los ejemplos de adaptadores de Oracle E-Business.

Clase de cliente WCF

El nombre del cliente WCF generado para las operaciones básicas que detecta el adaptador de Oracle E-Business se basa en el nombre de la tabla o vista, como se muestra en la tabla siguiente.

Artefacto Nombre del cliente WCF
Tablas de interfaz InterfaceTables_[APP_NAME][SCHEMA]\[TABLE_NAME]Client
Vistas de interfaz InterfaceViews_[APP_NAME][SCHEMA]\[VIEW_NAME]Client

[APP_NAME] = Nombre real de la aplicación Oracle E-Business Suite; por ejemplo, FND.

[SCHEMA] = Colección de artefactos; por ejemplo, APLICACIONES.

[TABLE_NAME] = El nombre de la tabla; por ejemplo, MS_SAMPLE_EMPLOYEE.

[VIEW_NAME] = El nombre de la vista; por ejemplo, MS_SAMPLE_EMPLOYEE_View.

Firma de método para invocar operaciones en tablas

En la tabla siguiente se muestran las firmas de método para las operaciones básicas de una tabla. Las firmas son las mismas para una vista, salvo que el espacio de nombres y el nombre de la vista reemplazan a los de la tabla.

Operación Firma del método
Insertar string Insert(InsertRecord[] RECORDSET);
Seleccionar SelectRecord[] Select(string COLUMN_NAMES, string FILTER);
Actualizar string Update(UpdateRecord RECORDSET, string FILTER);
Eliminar string Delete(string FILTER);

Por ejemplo, en el código siguiente se muestran las firmas de método para una clase de cliente WCF generada para las operaciones Delete, Insert, Select y Update en la tabla de interfaz de MS_SAMPLE_EMPLOYEE en el esquema APPS predeterminado.

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

En este fragmento de código, InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient es el nombre de la clase WCF en oracleEBSBindingClient.cs generada por el complemento Add Adapter Service Reference.

Parámetros para las operaciones de tabla

En esta sección se proporcionan los parámetros necesarios para cada operación de tabla.

Seleccionar operación

COLUMN_NAMES FILTER
Lista delimitada por comas de nombres de columna en el destino; por ejemplo, "EMP_NO, DESIGNACIÓN". La lista de columnas especifica las columnas del destino que se deben devolver en el conjunto de resultados. Las columnas no especificadas en la lista de columnas se establecerán en sus valores predeterminados de .NET en el conjunto de registros devuelto. En el caso de las columnas nillables, este valor es NULL. El contenido de una cláusula WHERE que especifica las filas de destino de la consulta; por ejemplo, "Designación = 'Administrador'". Puede establecer este parámetro en NULL para devolver todas las filas del destino.

El valor devuelto de una operación Select es un conjunto de resultados fuertemente tipado que contiene las columnas y filas especificadas.

Operación de inserción

Insertar tipo de operación RECORDSET
Registro múltiple Colección de INSERTRECORDS que se debe insertar en la tabla.

El valor devuelto de una operación De inserción es el número de filas insertadas.

Operación de actualización

RECORDSET FILTER
Colección de registros que se deben actualizar en la tabla. El contenido de una cláusula WHERE que especifica las filas de destino de la consulta; por ejemplo, "Designación = 'Administrador'". Puede establecer este parámetro en NULL para devolver todas las filas del destino.

El valor devuelto de una operación update es el número de filas actualizadas.

Operación de eliminación

La operación Delete toma como entrada una cláusula WHERE que especifica las filas que se van a eliminar. El valor devuelto de una operación Delete es el número de filas eliminadas.

Crear un cliente WCF para invocar operaciones en tablas de interfaz y vistas de interfaz

El conjunto genérico de acciones necesarias para realizar una operación en Oracle E-Business Suite mediante un cliente WCF implica un conjunto de tareas descritas en Información general del modelo de canal WCF con el adaptador de Oracle E-Business Suite. En esta sección se describe cómo crear un cliente WCF para invocar operaciones básicas de inserción, selección, actualización, eliminación en una tabla de interfaz.

Para crear un cliente WCF para realizar operaciones en tablas

  1. Cree un proyecto de Visual C# en Visual Studio. Para este tema, cree una aplicación de consola.

  2. Genere la clase de cliente WCF para la operación Insertar, Seleccionar, Actualizar y Eliminar en la tabla de interfaz de MS_SAMPLE_EMPLOYEE. Para obtener más información sobre cómo generar una clase de cliente WCF, vea Generar un cliente WCF o un contrato de servicio WCF para artefactos de solución de Oracle E-Business Suite.

    Importante

    Antes de generar la clase de cliente WCF, asegúrese de establecer la propiedad de enlace EnableBizTalkCompatibilityMode en false.

  3. En el Explorador de soluciones, agregue referencia a Microsoft.Adapters.OracleEBS y Microsoft.ServiceModel.Channels.

  4. Abra el archivo Program.cs y agregue los siguientes espacios de nombres:

    • Microsoft.Adapters.OracleEBS

    • System.ServiceModel

  5. Abra el archivo Program.cs y cree un cliente como se describe en el fragmento de código siguiente.

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

    En este fragmento de código, InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient es el cliente WCF definido en OracleEBSBindingClient.cs. El complemento Add Adapter Service Reference (Agregar referencia del servicio de adaptador) genera este archivo.

    Nota

    En este fragmento de código, se especifica explícitamente la dirección de enlace y punto de conexión en el código de la aplicación. Puede usar estos valores desde el archivo de configuración de la aplicación, app.config, también generado por el complemento Agregar referencia de servicio de adaptador. Para obtener más información sobre las distintas formas de especificar el enlace de cliente, consulte Configuración de un enlace de cliente para Oracle E-Business Suite.

  6. Establezca las credenciales del cliente.

    client.ClientCredentials.UserName.UserName = "myuser";  
    client.ClientCredentials.UserName.Password = "mypassword";  
    
  7. Dado que está realizando una operación en una tabla de interfaz, debe establecer el contexto de la aplicación. En este ejemplo, para establecer el contexto de la aplicación, especifique las propiedades de enlace OracleUserName, OraclePassword y OracleEBSResponsibilityName . Para más información sobre el contexto de la aplicación, consulte Establecimiento del contexto de la aplicación.

    binding.OracleUserName = "myOracleEBSUserName";  
    binding.OraclePassword = "myOracleEBSPassword";  
    binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";  
    
  8. Abra el cliente como se describe en el fragmento de código siguiente:

    try  
    {  
       Console.WriteLine("Opening Client...");  
       client.Open();  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    
  9. Invoque la operación Insertar en la tabla 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();  
    
    

    También puede reemplazar el fragmento de código anterior para realizar operaciones Select, Update o Delete. También puede anexar los fragmentos de código para realizar todas las operaciones en una sola aplicación. Para obtener fragmentos de código sobre cómo realizar estas operaciones, consulte Operación de selección, Operación de actualización y Operación de eliminación , respectivamente.

  10. Cierre el cliente como se describe en el fragmento de código siguiente:

    client.Close();  
    Console.WriteLine("Press any key to exit...");  
    Console.ReadLine();  
    
  11. Compile el proyecto y ejecútelo. La aplicación inserta un registro en la tabla MS_SAMPLE_EMPLOYEE.

Seleccionar operación

El código siguiente muestra una operación Select que tiene como destino la tabla de interfaz MS_SAMPLE_EMPLOYEE. La operación Seleccionar selecciona el último registro insertado en la tabla. El registro devuelto se escribe en la consola.

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

Operación de actualización

El código siguiente muestra una operación de actualización destinada a la tabla de interfaz 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();  

Operación de eliminación

En el código siguiente se muestra una operación Delete destinada a la tabla de interfaz 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();  

Consulte también

Desarrollo de aplicaciones de Oracle E-Business Suite mediante el modelo de servicio WCF