Run Operations on Business Components with the Siebel adapter using the WCF Service Model
You can create a WCF client that targets a Siebel business component. You can then use the WCF client to perform Insert, Update, Query, Delete, Associate, Dissociate, and child record query operations on the business component on the Siebel system. Siebel business objects are surfaced under the Business Objects node in the Add Adapter Service Reference Visual Studio Plug-in. The business components that compose each business object are surfaced under the node corresponding to that object. You can follow the steps in Overview of the WCF Service Model with the Siebel Adapter to generate a WCF client for a business component that targets specific operations and use the client to invoke these operations on the business component.
Note
This topic provides information about performing basic operations (Insert, Update, Query, Delete) on business components. For more information about performing Associate, Dissociate, and child record query operations, see Run Operations on Business Components with MVG Fields by Using the WCF Service Model
The following code uses a WCF client to perform Insert, Update, and Delete operations on a record in the Account business component of the Account business object. Between each operation, a Query operation is performed to verify the results. The WCF client in this example is initialized from a configuration file that is generated by the Add Adapter Service Reference Plug-in. For an example of a generated configuration file, see Configure a WCF Client for a 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();
}
}
}
}
}