Compartir a través de


Ejecutar operaciones en componentes empresariales con el adaptador de Siebel mediante el modelo de servicio WCF

Puede crear un cliente WCF destinado a un componente empresarial de Siebel. A continuación, puede usar el cliente WCF para realizar operaciones de consulta de inserción, actualización, consulta, eliminación, asociación, desasociación y registro secundario en el componente empresarial del sistema Siebel. Los objetos empresariales siebel se muestran en el nodo Objetos de negocio del complemento Agregar referencia de servicio de adaptador de Visual Studio. Los componentes empresariales que componen cada objeto de negocio se muestran bajo el nodo correspondiente a ese objeto. Puede seguir los pasos descritos en Información general del modelo de servicio WCF con el adaptador de Siebel para generar un cliente WCF para un componente empresarial destinado a operaciones específicas y usar el cliente para invocar estas operaciones en el componente empresarial.

Nota

En este tema se proporciona información sobre cómo realizar operaciones básicas (Insertar, Actualizar, Consulta, Eliminar) en componentes empresariales. Para obtener más información sobre cómo realizar operaciones de consulta de registros asociados, desasociar y secundarios, vea Ejecutar operaciones en componentes empresariales con campos de MVG mediante el modelo de servicio WCF.

En el código siguiente se usa un cliente WCF para realizar operaciones de inserción, actualización y eliminación en un registro del componente empresarial Account del objeto de negocio Account. Entre cada operación, se realiza una operación de consulta para comprobar los resultados. El cliente WCF de este ejemplo se inicializa a partir de un archivo de configuración generado por el complemento Add Adapter Service Reference. Para obtener un ejemplo de un archivo de configuración generado, vea Configurar un cliente WCF para un sistema Siebel.

  
using System;  
using System.Collections.Generic;  
using System.Text;  
  
using System.ServiceModel;  
using microsoft.lobservices.siebel._2007._03.BusinessObjects;  
using microsoft.lobservices.siebel._2007._03;  
  
namespace Business_Component_Operations  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            BusinessObjects_Account_Account_OperationClient client = null;  
  
            try  
            {  
  
                client = new BusinessObjects_Account_Account_OperationClient("SiebelBinding_BusinessObjects_Account_Account_Operation");  
                client.ClientCredentials.UserName.UserName = "YourUserName";  
                client.ClientCredentials.UserName.Password = "YourPassword";  
  
                Console.WriteLine("Opening connection to " + client.Endpoint.Address.Uri.Host);  
                client.Open();  
                AccountInsertRecord[] air = new AccountInsertRecord[1];  
                air[0] = new AccountInsertRecord();  
                Random r = new Random();  
                int count = r.Next();  
  
                air[0].Name = "Anil" + count.ToString();  
                Console.WriteLine("Inserting " + air[0].Name + " ...");  
                client.Insert(air);  
  
                //Query for the record.  
                Console.WriteLine("Querying to check inserted record ...");  
                AccountQueryInputRecord aqir = new AccountQueryInputRecord();  
                short viewmode = new short(); viewmode = 3;  
                string[] fields = new string[2];  
                fields[0] = "Name";  
                fields[1] = "Id";  
                aqir.QueryFields = fields;  
                aqir.SearchExpr = "[Name] LIKE \"Anil*\"";  
                AccountQueryRecord[] aqr = client.Query(viewmode, aqir);  
                Console.WriteLine(aqr.Length + " records returned");  
                string[] ids = new string[1];  
                AccountUpdateRecord[] aur = new AccountUpdateRecord[1];  
                aur[0] = new AccountUpdateRecord();  
                foreach (AccountQueryRecord rec in aqr)  
                {  
                    Console.WriteLine("Name: " + rec.Name);  
                    Console.WriteLine("Id: " + rec.Id);  
                    Console.WriteLine("");  
                    ids[0] = rec.Id;  
                    aur[0].Name = rec.Name;  
                    aur[0].Id = rec.Id;  
                }  
  
                //Update it.  
  
                aur[0].Name = "Anil" + count.ToString() + "modified";  
                Console.WriteLine("Update the record to " + aur[0].Name + " ...");  
                client.Update(viewmode, aur);  
                //query again  
                aqr = client.Query(viewmode, aqir);  
                Console.WriteLine(aqr.Length + " records returned");  
                foreach (AccountQueryRecord rec in aqr)  
                {  
                    Console.WriteLine("Name: " + rec.Name);  
                    Console.WriteLine("Id: " + rec.Id);  
                    Console.WriteLine("");  
                }  
  
                //Delete it.  
                Console.WriteLine("Deleting record ...");  
                client.Delete(viewmode, ids, "");  
  
                //Check again.  
                Console.WriteLine("Check that " + aur[0].Name + " is not present");  
                aqr = client.Query(viewmode, aqir);  
  
                Console.WriteLine(aqr.Length + " records returned");  
                foreach (AccountQueryRecord rec in aqr)  
                {  
                    Console.WriteLine(rec.Name);  
                    Console.WriteLine(rec.Id);  
  
                }  
  
                // Wait for <RETURN> to end sample.  
                Console.WriteLine("\nHit <RETURN> to finish");  
                Console.ReadLine();  
  
            }  
            catch (Exception e)  
            {  
                Console.WriteLine(e.Message);  
            }  
            finally  
            {  
                // Close the client.  
                if (client != null)  
                {  
                    if (client.State == CommunicationState.Opened)  
                        client.Close();  
                    else  
                        client.Abort();  
                }  
            }  
        }  
    }  
}  

Consulte también

Desarrollo de aplicaciones de Siebel mediante el modelo de servicio WCF