我们正在创建相当大的工作流服务,因此,为了使事情变得更加清洁,我们决定将它们“拆分”为子活动。
这本身就很有效。
但是,我们注意到事件不再被跟踪 - 仅跟踪来自实际工作流的事件,而忽略部件活动中的事件(除非引发异常并崩溃)。
我已阅读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:
根据{{3}}链接,implementationVisibility
定义中根本没有<trackingProfile>
参数......发生了什么?
答案 0 :(得分:0)
虽然我不知道为什么会失败,但我发现通过IIS管理屏幕加载和设置跟踪配置文件不起作用。
当我将整个配置放入web.config
文件(跟踪配置文件定义并选择它作为我们工作流程的默认跟踪配置文件)时,它开始按预期工作。
如果有人感兴趣的话,这是决赛web.config
的重要部分。 :)
<system.serviceModel>
<tracking>
<profiles>
<trackingProfile name="My 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>
</workflow>
</trackingProfile>
</profiles>
</tracking>
<bindings />
<client />
<behaviors>
<serviceBehaviors>
<behavior>
<etwTracking profileName="My Tracking Profile"/>
(...)