Invocación de programas simultáneos en Oracle E-Business Suite mediante el modelo de servicio WCF
Oracle E-Business Suite expone programas simultáneos que puede ejecutar para realizar operaciones específicas en aplicaciones oracle. Cada aplicación de Oracle tiene un conjunto de programas simultáneos estándar (que son iguales en todas las operaciones) y determinados programas simultáneos específicos de una aplicación de Oracle. El adaptador de Oracle E-Business expone todos los programas simultáneos como operaciones que los clientes adaptadores pueden invocar. Para obtener más información sobre cómo el adaptador admite programas simultáneos, vea Operaciones en programas simultáneos.
Nota
Para los programas simultáneos que no exponen sus metadatos, el adaptador de Oracle E-Business expone 100 parámetros opcionales para cada uno de estos programas simultáneos. Para invocar correctamente estos programas simultáneos, el usuario debe consultar la documentación de Oracle E-Business Suite para averiguar los parámetros de un programa simultáneo que requiera un valor y, a continuación, especificarlos. Un ejemplo de este programa simultáneo es Journal Import (nombre real: GLLEZL) en la aplicación General Ledger .
Acerca de los ejemplos usados en este tema
En el ejemplo de este tema se invoca el MS_SAMPLE_COPY_EMP_DATA programa simultáneo, seguido del Get_Status programa simultáneo para conocer el estado del primer programa simultáneo. Estos programas simultáneos se invocan desde la aplicación Biblioteca de objetos de aplicación. El MS_SAMPLE_COPY_EMP_DATA se crea ejecutando el 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, ConcurrentProgram_ServiceModel, que se basa en este tema, con los ejemplos de adaptadores de Oracle E-Business.
La clase de cliente WCF
El nombre del cliente WCF generado para invocar los programas simultáneos por el adaptador de Oracle E-Business se muestra en la tabla siguiente.
Artefacto | Nombre de cliente de WCF |
---|---|
Programa simultáneo | ConcurrentPrograms_[APP_NAME]Cliente |
[APP_NAME] = Nombre real de la aplicación Oracle E-Business Suite; por ejemplo, FND.
Firma de método para invocar programas simultáneos
En la tabla siguiente se muestra la firma del método para los programas simultáneos.
Operación | Firma del método |
---|---|
Programa simultáneo | public <return type><Concurrent_program_name>(param 1, param 2, ...) |
Por ejemplo, en el código siguiente se muestran las firmas de método para una clase de cliente WCF generada para el MS_SAMPLE_COPY_EMP_DATA y Get_Status programas simultáneos.
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);
}
En este fragmento de código, ConcurrentPrograms_FNDClient es el nombre de la clase WCF en oracleEBSBindingClient.cs generada por el complemento Agregar referencia de servicio de adaptador. MS_SAMPLE_COPY_EMP_DATA es el nombre del método para invocar el programa simultáneo. GetStatusForConcurrentProgram es el nombre del método para invocar el programa simultáneo para obtener el estado del primer programa simultáneo.
Nota
GetStatusForConcurrentProgram es el nombre real del programa simultáneo Get_Status .
Crear un cliente WCF para invocar programas simultáneos
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 servicio WCF con el adaptador de Oracle E-Business Suite. En esta sección se describe cómo crear un cliente WCF para invocar el MS_SAMPLE_COPY_EMP_DATA y Get_Status programas simultáneos.
Para crear un cliente WCF
Cree un proyecto de Visual C# en Visual Studio. En este tema, cree una aplicación de consola.
Genere la clase de cliente WCF para el MS_SAMPLE_COPY_EMP_DATA y Get_Status programas simultáneos. Para obtener más información sobre cómo generar una clase de cliente WCF, consulte Generación de un cliente WCF o un contrato de servicio WCF para artefactos de soluciones 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.
En el Explorador de soluciones, agregue referencia a
Microsoft.Adapters.OracleEBS
yMicrosoft.ServiceModel.Channels
.Abra el archivo Program.cs y agregue los siguientes espacios de nombres:
Microsoft.Adapters.OracleEBS
System.ServiceModel
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"); ConcurrentPrograms_FNDClient client = new ConcurrentPrograms_FNDClient(binding, address);
En este fragmento de código,
ConcurrentPrograms_FNDClient
es el cliente WCF definido en OracleEBSBindingClient.cs. El complemento Agregar referencia del servicio adaptador genera este archivo.Nota
En este fragmento de código, especificará explícitamente el enlace y la dirección del punto de conexión en el código de la aplicación. Tambié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 del servicio 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.
Establezca las credenciales para el cliente.
client.ClientCredentials.UserName.UserName = "myuser"; client.ClientCredentials.UserName.Password = "mypassword";
Dado que está invocando programas simultáneos en una aplicación de Oracle E-Business Suite, 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 obtener 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";
Abra el cliente tal y 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; }
Invoque el MS_SAMPLE_COPY_EMP_DATA y Get_Status programas simultáneos.
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; }
Cierre el cliente como se describe en el fragmento de código siguiente:
client.Close();
Compile el proyecto y ejecútelo. La aplicación invoca el MS_SAMPLE_COPY_EMP_DATA y devuelve un identificador de solicitud. A continuación, el identificador se pasa al programa simultáneo Get_Status , que finalmente proporciona el estado del programa de columnas de MS_SAMPLE_COPY_EMP_DATA .
Consulte también
Desarrollo de aplicaciones de Oracle E-Business Suite mediante el modelo de servicio WCF