Richiamare programmi simultanei in Oracle E-Business Suite usando il modello di servizio WCF
Oracle E-Business Suite espone programmi simultanei che è possibile eseguire per eseguire operazioni specifiche sulle applicazioni Oracle. Ogni applicazione Oracle dispone di un set di programmi simultanei standard (uguali per tutte le operazioni) e di determinati programmi simultanei specifici di un'applicazione Oracle. L'adapter Oracle E-Business espone tutti i programmi simultanei come operazioni che i client dell'adattatore possono richiamare. Per altre informazioni sul modo in cui l'adattatore supporta programmi simultanei, vedere Operazioni sui programmi simultanei.
Nota
Per i programmi simultanei che non espongono i relativi metadati, l'adapter Oracle E-Business espone 100 parametri facoltativi per ognuno di questi programmi simultanei. Per richiamare correttamente questi programmi simultanei, l'utente deve consultare la documentazione di Oracle E-Business Suite per individuare i parametri per un programma simultaneo che richiede un valore e quindi specificarli. Un esempio di tale programma simultaneo è Journal Import (nome effettivo: GLLEZL) nell'applicazione General Ledger .
Informazioni sugli esempi usati in questo argomento
Nell'esempio riportato in questo argomento viene richiamato il MS_SAMPLE_COPY_EMP_DATA programma simultaneo, seguito dal Get_Status programma simultaneo per conoscere lo stato del primo programma simultaneo. Questi programmi simultanei vengono richiamati dall'applicazione Libreria oggetti applicazione. Il MS_SAMPLE_COPY_EMP_DATA viene creato eseguendo lo script fornito con gli esempi. Per altre informazioni sugli esempi, vedere Esempi per l'adapter Oracle EBS. Un esempio, ConcurrentProgram_ServiceModel, 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 richiamare i programmi simultanei dall'adapter Oracle E-Business è elencato nella tabella seguente.
Elemento | Nome client WCF |
---|---|
Programma simultaneo | ConcurrentPrograms_[APP_NAME]Client |
[APP_NAME] = Nome effettivo dell'applicazione Oracle E-Business Suite; ad esempio FND.
Firma del metodo per richiamare programmi simultanei
Nella tabella seguente viene illustrata la firma del metodo per i programmi simultanei.
Operazione | Firma del metodo |
---|---|
Programma simultaneo | tipo restituito><pubblico <Concurrent_program_name>(param 1, param 2, ...) |
Ad esempio, il codice seguente mostra le firme del metodo per una classe client WCF generata per il MS_SAMPLE_COPY_EMP_DATA e Get_Status programmi simultanei.
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 questo frammento di codice ConcurrentPrograms_FNDClient è il nome della classe WCF nel plug-in OracleEBSBindingClient.cs generato dal plug-in aggiungi riferimento al servizio adapter. MS_SAMPLE_COPY_EMP_DATA è il nome del metodo per richiamare il programma simultaneo. GetStatusForConcurrentProgram è il nome del metodo per richiamare il programma simultaneo per ottenere lo stato del primo programma simultaneo.
Nota
GetStatusForConcurrentProgram è il nome effettivo del Get_Status programma simultaneo.
Creazione di un client WCF per richiamare programmi simultanei
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 servizio WCF con l'adapter Oracle E-Business Suite. Questa sezione descrive come creare un client WCF per richiamare il MS_SAMPLE_COPY_EMP_DATA e Get_Status programmi simultanei.
Per creare un client WCF
Creare un progetto Visual C# in Visual Studio. Per questo argomento, creare un'applicazione console.
Generare la classe client WCF per i programmi MS_SAMPLE_COPY_EMP_DATA e Get_Status simultanei. 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.
Nella Esplora soluzioni aggiungere un riferimento a
Microsoft.Adapters.OracleEBS
eMicrosoft.ServiceModel.Channels
.Aprire il file Program.cs e aggiungere gli spazi dei nomi seguenti:
Microsoft.Adapters.OracleEBS
System.ServiceModel
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"); ConcurrentPrograms_FNDClient client = new ConcurrentPrograms_FNDClient(binding, address);
In questo frammento di
ConcurrentPrograms_FNDClient
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. È anche 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.
Impostare le credenziali per il client.
client.ClientCredentials.UserName.UserName = "myuser"; client.ClientCredentials.UserName.Password = "mypassword";
Poiché si richiamano programmi simultanei in un'applicazione Oracle E-Business Suite, è 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";
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; }
Richiamare il MS_SAMPLE_COPY_EMP_DATA e Get_Status programmi simultanei.
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; }
Chiudere il client come descritto nel frammento di codice seguente:
client.Close();
Compilare il progetto ed eseguirlo. L'applicazione richiama il MS_SAMPLE_COPY_EMP_DATA e restituisce un ID richiesta. L'ID viene quindi passato al programma simultaneo Get_Status, che infine fornisce lo stato del programma della colonna MS_SAMPLE_COPY_EMP_DATA .
Vedere anche
Sviluppare applicazioni Oracle E-Business Suite usando il modello di servizio WCF