访问CRM 2011工作流中的多级字段

时间:2013-06-17 16:39:47

标签: workflow dynamics-crm-2011

很抱歉,如果这有点令人困惑,因为我不知道怎么说这个。我正在尝试创建一个在Microsoft CRM 2011中运行Account的工作流程。此工作流程的一部分要求我在帐户的“创建者”字段中检索用户业务单位中包含的字段。但是,工作流程只允许我访问业务单位本身,但不能访问其任何字段。

我想知道是否有一个简单的技巧或解决方法可以让我访问这些数据。

谢谢!

作为参考,该帐户有一个用户,他有一个业务部门,业务部门有一个我需要访问的字段。但是,CRM在访问字段时不希望让我获得超过2级的深度。

2 个答案:

答案 0 :(得分:2)

您无法深入了解工作流程的标准步骤。

解决方案是创建自定义工作流活动,您可以从这篇文章开始:

http://msdn.microsoft.com/en-us/library/gg328515.aspx

答案 1 :(得分:2)

如果你接受一些非规范化(暂时或其他),那么笨重但可行。我假设你想要从BU获得“成本中心”字段。

在User实体上添加一个字段以临时保存BU中的值(因此,使其类型和长度相同,在这种情况下为text(100)),可选择将其放在表单上。

为用户实体创建子工作流,以使用其BU中的“成本中心”值更新用户。使它只能作为孩子运行,而不是onmand或其他任何东西。激活

在“帐户”工作流程中,添加一个步骤以针对相关用户调用子工作流程(例如,在您的案例中为“创建者”)。 添加一个步骤以等待用户记录中的新成本中心字段包含数据。 现在使用用户记录中的值执行任何操作,例如更新Account,或执行某些分支逻辑。 无论您做什么,一旦使用了该值,请清除用户记录中的字段,或者将其作为工作流程的最后一步。

现在,由于用户不经常更改BU,您实际上可能只是继续将该值永久保留在用户记录上,而不是子工作流,只需在创建新用户时运行,或者更改BU,并将值永久存储在用户记录中。是的,它是'非规范化'并且不是最纯粹的SQL设计,但是你不需要子工作流,你不需要等待状态,你不必在最后清除值,或担心什么当两个帐户需要同时运行其工作流程时发生。我包含了上面更一般的方法,因为这可能适用于其他经常更改其父级的记录。

只是另外一个想法 - 您可以访问帐户的“拥有业务单位”,但这将是拥有用户的BU,而不是创建者,但是您的业务流程通常是同一个人? (例如,用户只有Create priviledge为“user owned”深度,因此只能创建他们拥有的记录)。 如果是这样,那么您可以直接从账户获取BU,然后是其中的任何字段(在某种情况下或更新账户)

不太理想但是类似方法的替代方案 - 添加从Account到BU的关系(例如“创建BU”)。现在,您可以通过参考Created By User的BU来更新帐户,然后在下一步中,从帐户中引用此值。这再次被非规范化,并且不太优选,因为账户数远远大于用户数,因此重复信息的水平要高得多。