-1
Dynamics CRM 2016 ONPREMISEに2つの同様のプラグインが1つに統合されています。Dynamics CRM 2016の2つの同様のプラグインONPREMISEを1つにマージする
彼らは
同じエンティティに登録- 、
- 更新メッセージ、3つのフィールド、4つのフィールドの他のチェック値の
- 1のプラグインチェック値によってトリガの両方です。すべてが指定された値に等しい場合は、次に進みます。そうでない場合は、戻る。 4.古いレコードから新しいレコードに値を設定、マップ、または計算します。 2つのプラグインは2つのフィールドセットを処理します。
- 新しいレコードを作成します。
私は "if else-if"構造と考えることができます。しかし、それはとても素朴に見えます。誰にもアドバイスはありますか?
他のプラグインは、他の3つのフィールドをチェックし、同様のアクションを実行して、他のフィールドを設定またはマップして新しいレコードを作成します。
おかげで、自分自身のメソッドに抽象扱いにくい述語に私が好きな
protected void ExecuteApplication(LocalPluginContext localContext)
{
IPluginExecutionContext context = null;
IOrganizationService service = null;
ITracingService tracer = null;
context = localContext.PluginExecutionContext;
service = localContext.OrganizationService;
tracer = localContext.TracingService;
try
{
// ensure we have an application and update message
Entity application = new Entity(applicationEntityName);
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
application = (Entity)context.InputParameters["Target"];
if (!application.LogicalName.ToLower().Equals(this.applicationEntityName))
{
return;
}
}
else
{
return;
}
if (context.MessageName.ToLower() != "update")
{
return;
}
// Fetch data from PreImage
Entity postImageApplication = context.PostEntityImages["PostImage"];
//check three fields are not null
if (application.GetAttributeValue<OptionSetValue>("statuscode") == null ||
postImageApplication.GetAttributeValue<EntityReference>("new_service").Name == null ||
postImageApplication.GetAttributeValue<EntityReference>("new_source").Name == null)
{
return;
}
if (
application.GetAttributeValue<OptionSetValue>("statuscode").Value == 881780003 &&
postImageApplication.GetAttributeValue<EntityReference>("new_service").Name == "CIC"
)
// process if the update meets the criteria
{
Entity newApplication = new Entity("new_application");
// set
newApplication.Attributes.Add("new_effectiveapplication", true);
newApplication.Attributes.Add("new_confirmdate", DateTime.Now);
newApplication.Attributes.Add("new_signdate", DateTime.Now);
//mapped
if (postImageApplication.Attributes.Contains("new_client"))
{
newApplication.Attributes.Add("new_client", postImageApplication["new_client"]);
}
if (postImageApplication.Attributes.Contains("new_servicecentre"))
{
newApplication.Attributes.Add("new_servicecentre", postImageApplication["new_servicecentre"]);
}
service.Create(newApplication);
}
else
{
return;
}
コードを見ることなく何かを提案すること – Nicknow
方法...いくつかのコードを表示してください? –