【发布时间】:2014-01-09 15:57:01
【问题描述】:
我们正在创建相当大的工作流服务,因此,为了让事情更干净,我们决定将它们“拆分”为子活动。
这个,就其本身而言,效果很好。
但是,我们注意到不再跟踪事件 - 仅跟踪来自实际工作流的事件,而忽略部分活动中的事件(除非发生异常并崩溃)。
我已阅读 here,发现我缺少 implementationVisibility 属性 - 默认情况下,它设置为工作流的根范围。
所以我创建了一个自定义跟踪配置文件,定义如下:
<trackingProfile name="CRM Game HealthMonitoring Tracking Profile" implementationVisibility="All">
<workflow activityDefinitionId="*">
<workflowInstanceQueries>
<workflowInstanceQuery>
<states>
<state name="Started" />
<state name="UnhandledException" />
<state name="Persisted" />
<state name="Unsuspended" />
<state name="Aborted" />
<state name="Canceled" />
<state name="Completed" />
<state name="Terminated" />
</states>
</workflowInstanceQuery>
</workflowInstanceQueries>
<activityStateQueries>
<activityStateQuery activityName="*">
<states>
<state name="Closed" />
</states>
</activityStateQuery>
</activityStateQueries>
<customTrackingQueries>
<customTrackingQuery name="*" activityName="*" />
</customTrackingQueries>
<faultPropagationQueries>
<faultPropagationQuery faultSourceActivityName="*" faultHandlerActivityName="*" />
</faultPropagationQueries>
<bookmarkResumptionQueries>
<bookmarkResumptionQuery name="*" />
</bookmarkResumptionQueries>
</workflow>
</trackingProfile>
然后我打开了特定工作流的 AppFabric 配置,并将此配置文件添加到配置中。
遗憾的是,最终结果是跟踪工作与以前完全一样,就好像根本没有使用跟踪配置文件一样。
编辑:正在使用新的跟踪配置文件,因为现在跟踪书签恢复事件。但是,仍然只跟踪工作流根活动的事件。
我做错了什么?
PS。有没有办法为所有工作流程设置默认跟踪配置文件?
编辑 2:
根据this 链接,<trackingProfile> 定义中根本没有implementationVisibility 参数...这是怎么回事?
【问题讨论】:
-
您是如何拆分这些活动的?它们都是设计活动还是编码活动?
-
@Jota 拆分是通过将原始工作流的部分复制粘贴到设计的活动中来完成的。由于以前确实存在编码活动,因此它们现在已被复制到设计为“部件”的部件中。
-
好的。您可能没有在编码活动内部向元数据添加一些实现活动。 “就好像根本没有使用跟踪配置文件一样”。是不是可能根本没有真正使用配置?你能展示更多的配置吗?你看过this了吗?
-
@Jota 请注意我对问题所做的编辑。我所说的“好像没有使用跟踪配置文件”的意思是我认为没有使用 MY 跟踪配置文件。在全球范围内,跟踪正在发挥作用,正如我所写的,它正在跟踪主根工作流程中发生的事情。
-
这很奇怪。我自己无法重现它,我已经尝试了所有可能的方案:拆分的 XAML 活动、拆分的编码活动、两者的混合等等。我已经没有想法了。这可能是 TrackingParticipant 本身的问题。例如,用它来代替“*”,准确地指定活动名称,看看会发生什么。