Тема: Workflow и Plugin
Показать сообщение отдельно
Старый 08.11.2012, 17:27   #1  
scint is offline
scint
Участник
 
43 / 14 (1) ++
Регистрация: 25.02.2009
Workflow и Plugin
Plugin
Entity: Task
Message: Create
Pipeline stage: Post
Ex. mode: Sync


В момент создания задачи происходит +1 в неком поле связанной (regarding) записи, для отслеживание количества открытых задач

if (context.InputParameters.Contains("Target") &&
context.InputParameters["Target"] is Entity)
{
Entity entity = (Entity)context.InputParameters["Target"];
try
{
if (entity.Attributes.Contains("regardingobjectid"))
{
EntityReference postid = (EntityReference)entity["regardingobjectid"];
if (postid.LogicalName == "xxx_partnershipopportunity")
{
Entity wr = new Entity("xxx_partnershipopportunity");
wr["xxx_partnershipopportunityid"] = postid.Id;
wr = service.Retrieve("xxx_partnershipopportunity", postid.Id, new ColumnSet("xxx_optioncounter"));
int number = Convert.ToInt32(wr["xxx_optioncounter"]) + 1;
wr["xxx_optioncounter"] = number;
service.Update(wr);
}
}

}

Работает хорошо при "ручном" создании Задач.
Работает хорошо при создании Задач с помощь workflow, в котором нету обращения к дочерним процессам.

А вот в случае следующего workflow, не правильно отрабатывает счетчик:
Entity:xxx_partnershipopportunity
Тип запуска: в ручную
Scope: Организация


Шаг 1
Запуск дочернего рабочего процесса, в рамках которого просто создаются 2 задачи

Шаг 2
Проверяем условие (абсолютно без разницы какое) и если да, то запускаем дочерний процесс, в рамках которого создается 1 задача

В результате в счетчик записывается 2, а не 3.

Люди добрые, подскажите в какую сторону копать.
Регистрировал уже плагин и в асинхроне и в sandbox, все равно 2е из 3х Задачи