Insérer, mettre à jour, supprimer ou sélectionner des opérations sur des tables et des vues d’interface à l’aide du modèle de service WCF
L’adaptateur Oracle E-Business découvre un ensemble d’opérations d’insertion, de sélection, de mise à jour et de suppression de base sur les tables d’interface. À l’aide de ces opérations, vous pouvez effectuer des instructions Insert, Select, Update et Delete simples qualifiées par une clause WHERE sur une table d’interface cible. Cette rubrique fournit des instructions sur la façon d’effectuer ces opérations à l’aide du modèle de service WCF.
Notes
L’adaptateur Oracle E-Business prend uniquement en charge les opérations Select sur les vues d’interface.
Pour plus d’informations sur la prise en charge de ces opérations par l’adaptateur, consultez Opérations sur les tables d’interface et les vues d’interface.
À propos des exemples utilisés dans cette rubrique
L’exemple de cette rubrique effectue des opérations sur la table d’interface MS_SAMPLE_EMPLOYEE. La table est créée en exécutant le script fourni avec les exemples. Pour plus d’informations sur les exemples, consultez Exemples pour l’adaptateur Oracle EBS. Un exemple, Interface_Table_Ops, basé sur cette rubrique, est également fourni avec les exemples d’adaptateurs Oracle E-Business.
Classe de client WCF
Le nom du client WCF généré pour les opérations de base découvertes par l’adaptateur Oracle E-Business est basé sur le nom de la table ou de la vue, comme indiqué dans le tableau suivant.
Artefact | Nom du client WCF |
---|---|
Tables d’interface | InterfaceTables_[APP_NAME][SCHEMA]\[TABLE_NAME]Client |
Affichages d’interface | InterfaceViews_[APP_NAME][SCHEMA]\[VIEW_NAME]Client |
[APP_NAME] = nom réel de l’application Oracle E-Business Suite ; par exemple, FND.
[SCHEMA] = Collection d’artefacts ; par exemple, APPLICATIONS.
[TABLE_NAME] = Nom de la table ; par exemple, MS_SAMPLE_EMPLOYEE.
[VIEW_NAME] = Nom de la vue ; par exemple, MS_SAMPLE_EMPLOYEE_View.
Signature de méthode pour les opérations d’appel sur des tables
Le tableau suivant montre les signatures de méthode pour les opérations de base sur une table. Les signatures sont les mêmes pour une vue, sauf que l’espace de noms et le nom de la vue remplacent ceux de la table.
Opération | Signature de méthode |
---|---|
Insérer | string Insert(InsertRecord[] RECORDSET) ; |
Sélectionnez | SelectRecord[] Select(string COLUMN_NAMES, string FILTER) ; |
Update | string Update(UpdateRecord RECORDSET, string FILTER) ; |
Supprimer | string Delete(string FILTER) ; |
Par exemple, le code suivant montre les signatures de méthode pour une classe de client WCF générées pour les opérations Delete, Insert, Select et Update sur la table d’interface MS_SAMPLE_EMPLOYEE sous le schéma APPS par défaut.
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);
}
Dans cet extrait de code, InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient est le nom de la classe WCF dans oracleEBSBindingClient.cs généré par le plug-in Add Adapter Service Reference.
Paramètres pour les opérations de table
Cette section fournit les paramètres requis par chaque opération de table
Sélectionner Opération
COLUMN_NAMES | FILTER |
---|---|
Liste délimitée par des virgules de noms de colonnes dans la cible ; par exemple, « EMP_NO, DÉSIGNATION ». La liste de colonnes spécifie les colonnes de la cible qui doivent être retournées dans le jeu de résultats. Les colonnes non spécifiées dans la liste des colonnes seront définies sur leurs valeurs par défaut .NET dans le jeu d’enregistrements retourné. Pour les colonnes nillables, cette valeur est null. | Contenu d’une clause WHERE qui spécifie les lignes cibles de la requête ; par exemple, « Désignation = 'Manager' ». Vous pouvez définir ce paramètre sur null pour renvoyer toutes les lignes de la cible. |
La valeur de retour d’une opération Select est un jeu de résultats fortement typé qui contient les colonnes et les lignes spécifiées.
Opération d’insertion
Insérer un type d’opération | RECORDSET |
---|---|
Enregistrement multiple | Collection d’INSERTRECORDS qui doit être insérée dans la table. |
La valeur de retour d’une opération Insert est le nombre de lignes insérées.
Opération de mise à jour
RECORDSET | FILTER |
---|---|
Collection d’enregistrements qui doivent être mis à jour dans la table. | Contenu d’une clause WHERE qui spécifie les lignes cibles de la requête ; par exemple, « Désignation = 'Manager' ». Vous pouvez définir ce paramètre sur null pour renvoyer toutes les lignes de la cible. |
La valeur de retour d’une opération de mise à jour est le nombre de lignes mises à jour.
Opération de suppression
L’opération Delete prend comme entrée une clause WHERE qui spécifie les lignes à supprimer. La valeur de retour d’une opération De suppression est le nombre de lignes supprimées.
Création d’un client WCF pour appeler des opérations sur des tables d’interface et des vues d’interface
L’ensemble générique d’actions requis pour effectuer une opération sur Oracle E-Business Suite à l’aide d’un client WCF implique un ensemble de tâches décrites dans Vue d’ensemble du modèle de canal WCF avec l’adaptateur Oracle E-Business Suite. Cette section explique comment créer un client WCF pour appeler des opérations d’insertion, de sélection, de mise à jour et de suppression de base sur une table d’interface.
Pour créer un client WCF pour effectuer des opérations sur des tables
Créez un projet Visual C# dans Visual Studio. Pour cette rubrique, créez une application console.
Générez la classe de client WCF pour les opérations Insert, Select, Update et Delete sur la table d’interface MS_SAMPLE_EMPLOYEE. Pour plus d’informations sur la génération d’une classe de client WCF, consultez Générer un client WCF ou un contrat de service WCF pour les artefacts de solution Oracle E-Business Suite.
Important
Avant de générer la classe de client WCF, veillez à définir la propriété de liaison EnableBizTalkCompatibilityMode sur false.
Dans le Explorateur de solutions, ajoutez une référence à
Microsoft.Adapters.OracleEBS
etMicrosoft.ServiceModel.Channels
.Ouvrez le fichier Program.cs et ajoutez les espaces de noms suivants :
Microsoft.Adapters.OracleEBS
System.ServiceModel
Ouvrez le fichier Program.cs et créez un client comme décrit dans l’extrait de code ci-dessous.
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);
Dans cet extrait de code,
InterfaceTables_FND_APPS_MS_SAMPLE_EMPLOYEEClient
est le client WCF défini dans OracleEBSBindingClient.cs. Ce fichier est généré par le plug-in Add Adapter Service Reference.Notes
Dans cet extrait de code, vous spécifiez explicitement la liaison et l’adresse de point de terminaison dans le code de votre application. Vous pouvez utiliser ces valeurs du fichier de configuration de l’application, app.config, également générées par le plug-in Add Adapter Service Reference. Pour plus d’informations sur les différentes façons de spécifier la liaison cliente, consultez Configurer une liaison cliente pour Oracle E-Business Suite.
Définissez les informations d’identification pour le client.
client.ClientCredentials.UserName.UserName = "myuser"; client.ClientCredentials.UserName.Password = "mypassword";
Étant donné que vous effectuez une opération sur une table d’interface, vous devez définir le contexte de l’application. Dans cet exemple, pour définir le contexte d’application, vous spécifiez les propriétés de liaison OracleUserName, OraclePassword et OracleEBSResponsibilityName . Pour plus d’informations sur le contexte d’application, consultez Définir le contexte d’application.
binding.OracleUserName = "myOracleEBSUserName"; binding.OraclePassword = "myOracleEBSPassword"; binding.OracleEBSResponsibilityName = "myOracleEBSResponsibility";
Ouvrez le client comme décrit dans l’extrait de code ci-dessous :
try { Console.WriteLine("Opening Client..."); client.Open(); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; }
Appelez l’opération Insertion sur la table 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();
Vous pouvez remplacer l’extrait de code précédent pour effectuer également des opérations Sélectionner, Mettre à jour ou Supprimer. Vous pouvez également ajouter les extraits de code pour effectuer toutes les opérations dans une seule application. Pour obtenir des extraits de code sur la façon d’effectuer ces opérations, consultez Sélectionner une opération, Mettre à jour l’opération et Supprimer l’opération respectivement.
Fermez le client comme décrit dans l’extrait de code ci-dessous :
client.Close(); Console.WriteLine("Press any key to exit..."); Console.ReadLine();
Générez le projet, puis exécutez-le. L’application insère un enregistrement dans la table MS_SAMPLE_EMPLOYEE.
Sélectionner une opération
Le code suivant montre une opération Select qui cible la table d’interface MS_SAMPLE_EMPLOYEE. L’opération Sélectionner sélectionne le dernier enregistrement inséré dans la table. L’enregistrement retourné est écrit dans la 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();
Opération de mise à jour
Le code suivant montre une opération de mise à jour qui cible la table d’interface 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();
Opération de suppression
Le code suivant montre une opération Delete qui cible la table d’interface 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();
Voir aussi
Développer des applications Oracle E-Business Suite à l’aide du modèle de service WCF