使用 WCF 服務模型搭配 Siebel 配接器在商務元件上執行作業
您可以建立以 Siebel 商務元件為目標的 WCF 用戶端。 然後,您可以使用 WCF 用戶端,在 Siebel 系統上的商務元件上執行 Insert、Update、Query、Delete、Associate、Dissociate 和子記錄查詢作業。 Siebel 商務物件會顯示在 [新增配接器服務參考 Visual Studio 外掛程式] 的 [Business Objects] 節點底下。 組成每個商務物件的商務元件會顯示在對應至該物件的節點底下。 您可以遵循 使用 Siebel 配接器概觀 WCF 服務模型 中的步驟,為以特定作業為目標的商務元件產生 WCF 用戶端,並使用用戶端在商務元件上叫用這些作業。
注意
本主題提供有關在商務元件上執行基本作業的資訊, (插入、更新、查詢、刪除) 。 如需執行關聯、解除關聯和子記錄查詢作業的詳細資訊,請參閱 使用 WCF 服務模型在商務元件上執行作業與 MVG 欄位
下列程式碼會使用 WCF 用戶端,在 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();
}
}
}
}
}