抱歉,如果这有点让人困惑,因为我不知道该如何表达。我正在尝试创建一个从Microsoft CRM 2011中的帐户运行的工作流。此工作流的一部分要求我在帐户的“创建者”字段中检索用户的业务部门中包含的字段。但是,工作流只允许我访问“业务部门”本身,而不允许访问它的任何字段。
我想知道是否有一个简单的技巧或解决办法,可以让我访问这些数据。
谢谢!
作为参考,帐户有一个用户,他有一个业务部门,业务部门有一个我需要访问的字段。然而,CRM不想让我在访问字段时获得超过2层的深度。
发布于 2013-06-18 17:23:51
虽然笨拙,但如果你接受一点非正规化(暂时或其他),你就可以做到。为了举例,我假设您希望从BU获取"cost centre“字段。
在用户实体上添加一个字段以临时保存来自BU的值(因此使其类型和长度相同,在本例中为文本(100)),可以选择将其放在表单上。
为用户实体创建子工作流,以使用其BU中的“成本中心”值更新用户。使它只能作为孩子运行,而不是onDemand或其他任何东西。激活
在您的帐户工作流中,添加一个步骤以针对相关用户调用子工作流(例如,在您的案例中由创建)。添加一个步骤,等待用户记录上的新成本中心字段包含数据。现在,对用户记录中的值执行所需的任何操作,例如更新帐户,或执行一些分支逻辑。无论您执行什么操作,一旦使用了该值,请清除用户记录上的字段,或将此操作作为工作流的最后一步执行。
现在,由于用户不经常更改BU,您实际上可以继续并将该值永久保留在用户记录中,而不是子工作流,只需在创建新用户或更改BU时运行此命令,并将该值永久存储在用户记录中。是的,它是“非正规化”的,不是最纯粹的SQL设计,但是你不需要子工作流,你不需要等待状态,你不需要在结束时清除值,或者担心当两个帐户需要同时运行他们的工作流时会发生什么。我包含了上面更通用的方法,因为这可能适用于其他记录,这些记录确实经常更改它们的父项。
另请注意-您可以访问帐户的“所属业务单位”,但这将是所属用户的BU,而不是创建者,但是您的业务流程是否通常是同一个人?(例如,用户只有“用户拥有”深度的Create特权,所以只能创建他们自己的记录)。如果是这样,那么您可以直接从帐户获取BU,然后还可以获取BU上的任何字段(在某个条件下或更新帐户)
另一种不太理想但类似的方法-添加一个从Account到BU的关系(例如"created BU")。现在,您可以通过引用由用户的BU创建的值来更新帐户,然后在下一步中,从帐户中引用此值。这也是不规范的,并且不太可取,因为帐户的数量远远大于用户的数量,因此重复信息的级别要高得多。
发布于 2013-06-18 01:59:10
你不能再深入了解工作流的标准步骤了。
解决方案是创建一个自定义的工作流活动,您可以从本文开始:
http://msdn.microsoft.com/en-us/library/gg328515.aspx
https://stackoverflow.com/questions/17152578
复制相似问题