跟踪配置文件实施可见性属性没有影响?

时间:2014-01-08 14:17:17

标签: workflow-foundation-4

我们正在创建相当大的工作流服务,因此,为了使事情变得更加清洁,我们决定将它们“拆分”为子活动。

这本身就很有效。

但是,我们注意到事件不再被跟踪 - 仅跟踪来自实际工作流的事件,而忽略部件活动中的事件(除非引发异常并崩溃)。

我已阅读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>参数......发生了什么?

1 个答案:

答案 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"/>
          (...)