Наконец-то было время проверить это, и вполне возможно получить предварительные значения в рабочем процессе, используя сборку рабочего процесса.
Вот что я сделал:
Я создал рабочий процессв контакте, с триггером на LastName. Рабочий процесс содержит ссылку на поле фамилия и пользовательскую сборку рабочего процесса .Я открыл контакт и изменил его фамилию с 'Foo' на 'Bar'
Код пользовательской сборки рабочего процесса:
protected override void Execute(CodeActivityContext context)
{
IWorkflowContext workflow = context.GetExtension<IWorkflowContext>();
Entity preImage = workflow.PreEntityImages.Values.FirstOrDefault();
string content = RetrievePreImageLastname(preImage);
using (StreamWriter writer = new StreamWriter(@"C:\temp\log.txt", true))
{
writer.WriteLine("writing workflow assembly");
writer.Write(content);
}
}
public string RetrievePreImageLastname(Entity value)
{
if (value == null)
return "PreImage is Empty";
return string.Format("lastname pre image value: {0}", value.GetAttributeValue<string>("lastname"));
}
И это был вывод:
запись сборки рабочего процесса
фамилия, предварительное значение изображения: Foo
Надеюсь, что это поможет любому в будущем.