0

对不起,如果这有点令人困惑,因为我不知道如何措辞。我正在尝试创建一个从 Microsoft CRM 2011 中的帐户运行的工作流。此工作流的一部分要求我在帐户的“创建者”字段中检索包含在用户业务部门中的字段。但是,工作流将只允许我访问业务部门本身,而不是它的任何字段。

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

谢谢!

作为参考,帐户有一个用户,他有一个业务单位,业务单位有一个我需要访问的字段。然而,CRM 不想让我在访问字段时获得超过 2 层的深度。

4

2 回答 2

2

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

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

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

于 2013-06-17T17:59:09.747 回答
2

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

在用户实体上添加一个字段以临时保存来自 BU 的值(因此使其类型和长度相同,在本例中为 text(100)),可选择将其放在表单上。

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

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

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

只是一个额外的想法 - 您可以访问帐户的“拥有业务单位”,但这将是拥有用户的 BU,而不是创建者,但是您的业务流程是否通常是同一个人?(例如,用户只有“用户拥有”深度的创建权限,因此只能创建他们拥有的记录)。如果是这样,那么您可以直接从帐户获取 BU,然后也可以访问其上的任何字段(条件或更新帐户)

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

于 2013-06-18T09:23:50.707 回答