Freigeben über


Ausführen von Vorgängen für Geschäftskomponenten mit dem Siebel-Adapter mithilfe des WCF-Dienstmodells

Sie können einen WCF-Client erstellen, der auf eine Siebel-Geschäftskomponente abzielt. Anschließend können Sie den WCF-Client verwenden, um Abfrage-, Lösch-, Zuordnen-, Dissociate- und untergeordnete Datensatzabfragevorgänge für die Geschäftskomponente auf dem Siebel-System auszuführen. Siebel-Geschäftsobjekte werden unter dem Knoten Geschäftsobjekte im Visual Studio-Plug-In Adapterdienstverweis hinzufügen angezeigt. Die Geschäftskomponenten, aus denen die einzelnen Geschäftsobjekte bestehen, werden unter dem Knoten angezeigt, der diesem Objekt entspricht. Sie können die Schritte unter Übersicht über das WCF-Dienstmodell mit dem Siebel-Adapter ausführen, um einen WCF-Client für eine Geschäftskomponente zu generieren, die auf bestimmte Vorgänge abzielt, und den Client zum Aufrufen dieser Vorgänge für die Geschäftskomponente zu verwenden.

Hinweis

Dieses Thema enthält Informationen zum Ausführen grundlegender Vorgänge (Einfügen, Aktualisieren, Abfragen, Löschen) für Geschäftskomponenten. Weitere Informationen zum Ausführen von Abfragevorgängen für Associate, Dissociate und untergeordnete Datensätze finden Sie unter Ausführen von Vorgängen für Geschäftskomponenten mit MVG-Feldern mithilfe des WCF-Dienstmodells.

Der folgende Code verwendet einen WCF-Client zum Ausführen von Insert-, Update- und Delete-Vorgängen für einen Datensatz in der Geschäftskomponente Account des Geschäftsobjekts Account. Zwischen jedem Vorgang wird ein Abfragevorgang ausgeführt, um die Ergebnisse zu überprüfen. Der WCF-Client in diesem Beispiel wird aus einer Konfigurationsdatei initialisiert, die vom Add Adapter Service Reference Plug-In generiert wird. Ein Beispiel für eine generierte Konfigurationsdatei finden Sie unter Konfigurieren eines WCF-Clients für ein Siebel-System.

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

Weitere Informationen

Entwickeln von Siebel-Anwendungen mithilfe des WCF-Dienstmodells