CRM 2011工作流程:查找以前的值

时间:2011-06-02 07:46:54

标签: dynamics-crm workflow-foundation-4 dynamics-crm-2011

我目前有一个工作流程,当某个十进制字段发生变化时会触发该工作流程。

是否可以通过工作流程获得旧值和新值之间的差异?

1 个答案:

答案 0 :(得分:5)

最后有时间对此进行测试,并且完全可以使用工作流程程序集检索工作流程中的预值。

这就是我的所作所为:

我在Contact上创建了一个工作流,在LastName上有一个触发器。 工作流程包含对字段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

希望这可以帮助任何人将来使用。