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

Dynamics crm CRM 2011工作流:查找以前的值,dynamics-crm,workflow-foundation-4,dynamics-crm-2011,Dynamics Crm,Workflow Foundation 4,Dynamics Crm 2011,我目前有一个工作流,当某个十进制字段更改时会触发该工作流 是否有可能通过工作流获得新旧值之间的差异?终于有时间测试了这一点,并且完全有可能使用工作流程序集检索工作流中的预值 以下是我所做的: 我在Contact上创建了一个工作流,在LastName上有一个触发器工作流包含对字段lastname的引用和自定义工作流程序集。我打开了一个联系人,将其姓氏从“Foo”改为“Bar” 自定义工作流程序集的代码: protected override void Execute(CodeActivityCon

我目前有一个工作流,当某个十进制字段更改时会触发该工作流


是否有可能通过工作流获得新旧值之间的差异?

终于有时间测试了这一点,并且完全有可能使用工作流程序集检索工作流中的预值

以下是我所做的:

我在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"));
    }
protected override void Execute(CodeActivityContext上下文)
{
IWorkflowContext工作流=context.GetExtension();
实体前映像=workflow.PreEntityImages.Values.FirstOrDefault();
字符串内容=检索PreImageLastName(preImage);
使用(StreamWriter=newstreamwriter(@“C:\temp\log.txt”,true))
{
writer.WriteLine(“编写工作流程序集”);
作者:写(内容);
}
}
公共字符串检索PreImageLastName(实体值)
{
如果(值==null)
返回“前映像为空”;
返回string.Format(“lastname前映像值:{0}”,value.GetAttributeValue(“lastname”);
}
这就是结果:

编写工作流程序集

lastname前图像值:Foo

希望这有助于任何人在未来的使用