WCF サービス モデルを使用して Siebel アダプターを使用してビジネス コンポーネントに対する操作を実行する
Siebel ビジネス コンポーネントを対象とする WCF クライアントを作成できます。 その後、WCF クライアントを使用して、Siebel システム上のビジネス コンポーネントに対して、挿入、更新、クエリ、削除、関連付け、関連付け解除、および子レコードのクエリ操作を実行できます。 Siebel ビジネス オブジェクトは、[アダプター サービス参照の追加] Visual Studio プラグインの [ビジネス オブジェクト] ノードの下に表示されます。 各ビジネス オブジェクトを構成するビジネス コンポーネントは、そのオブジェクトに対応するノードの下に表示されます。 「 Siebel アダプターを使用した WCF サービス モデルの概要」の 手順に従って、特定の操作を対象とするビジネス コンポーネント用の WCF クライアントを生成し、クライアントを使用してビジネス コンポーネントでこれらの操作を呼び出すことができます。
Note
このトピックでは、ビジネス コンポーネントに対する基本的な操作 (挿入、更新、クエリ、削除) の実行について説明します。 関連付け、関連付け解除、および子レコードのクエリ操作の実行の詳細については、「WCF サービス モデルを使用して MVG フィールドを使用してビジネス コンポーネントに対する操作を実行する」を参照してください。
次のコードでは、WCF クライアントを使用して、Account ビジネス オブジェクトの Account ビジネス コンポーネント内のレコードに対して挿入、更新、および削除の操作を実行します。 各操作の間に、クエリ操作が実行され、結果が確認されます。 この例の WCF クライアントは、アダプター サービス参照プラグインの追加によって生成される構成ファイルから初期化されます。 生成された構成ファイルの例については、「 Siebel システム用に WCF クライアントを構成する」を参照してください。
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();
}
}
}
}
}