配置文件解析

QuickFlow采用C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\QuickFlow目录下的global.config

文件来存储配置信息,这个文件的内容如下:

<?xml version="1.0" encoding="utf-8"?>
<GlobalConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

  <CustomRoleUserProvider>QuickFlow.Core.SPRoleUserProvider,QuickFlow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ec1e0fe6e1745628</CustomRoleUserProvider> 

  <!--任务代理配置 -->
  <!--<TaskDelegationProvider>QuickFlow.Core.DefaultTaskDelegationProvider,QuickFlow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ec1e0fe6e1745628</TaskDelegationProvider>--> 

  <!--if DelegationListSiteUrl is empty, system will use current site-->
  <!--<DelegationListSiteUrl>http://codeartserver:81/sites/s1</DelegationListSiteUrl>-->
  <DelegationListUrl>Lists/QuickFlowDelegation</DelegationListUrl> 

  <!--是否对任务启用特殊权限-->
  <EnableSpecialPermissions>false</EnableSpecialPermissions>
  <!--具有任务管理权限的组-->
  <WorkflowAdminGroup>WorkflowAdmin</WorkflowAdminGroup> 

  <EventReceivers>
    <Receiver Enabled="false" Name="Exception" Type="QuickFlow.EventBus.ExceptionEventReceiver,QuickFlow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ec1e0fe6e1745628" />
    <Receiver Enabled="true" Name="Tracing" Type="QuickFlow.EventBus.TracingEventReceiver,QuickFlow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ec1e0fe6e1745628" />
  </EventReceivers>
</GlobalConfiguration>

各个配置节点的解释:

CustomRoleUserProvider,用来配置一个自定义的角色用户提供逻辑类,自定义角色提供程序见:QuickFlow教程(5): RuleDriven活动,角色提供程序自定义,邮件模板

TaskDelegationProvider,用来配置任务代理的实现,如果取消TaskDelegationProvider这行的注释,则采用默认的代理实现(采用一个列表存放代理信息),自定义代理提供程序见:QuickFlow之任务代理-TaskDelegation

TaskDelegationDelegationListSiteUrl,如果采用默认代理提供程序,可以指定代理配置列表的路径

EnableSpecialPermissions,如果设置为true,则每个任务的权限会绑定到任务操作人,否则,所有用户(具有任务列表操作权限)都具有操作任务的权限。

WorkflowAdminGroup,当EnableSpecialPermissions设置为true的时候,可以设置一个管理员组,这个组始终具有任务的操作权限,QuickFlow支持任务的Reassign,管理员要ReassignTask,必须首先能看到这个任务。

EventReceivers, 这个节点下配置事件处理器,建议将默认的Exception处理器启用,而Tracing处理器禁止(通过设置Enabled属性)。事件处理器也可以自定义,参考: SharePoint工作流解决方案QuickFlow系列(6)—事件总线(EventBus)

关于是否使用独立权限的任务

EnableSpecialPermissions配置项的引入是因为SharePoint的一个问题:

当使用独立权限的任务时(EnableSpecialPermissions=true),SharePoint的日志文件中会出现这样一条日志信息:
ERROR: request not found in the TrackedRequests. We might be creating and closing webs on different threads.

Detail: http://quickflow.codeplex.com/workitem/29739

这个信息并不会影响到系统的正常运行。当任务的权限直接继承任务列表时,这个信息就不会出现了。所以,你可以按照自己的实际情况来配置EnableSpecialPermissions的值:
如果你希望采用严格的权限控制,那么可以使用独立权限,这样,非任务操作人和管理员绝对无权查看和操作其他用户的任务。或者,可以使用非独立权限,然后在视图上进行过滤。这样通过界面上进行控制,理论上来说,性能上也会好些。

使用global_custom.config

QuickFlow的以前版本存在一个问题:每次更新QuickFlow.wsp解决方案的时候,global.config文件都会被覆盖成默认版本,如果修改了global.config文件的内容,每次更新的时候都需要重新修改。
101228后的版本提供了解决这个问题的方案:
安装QuickFlow.wsp后,将global.config复制一份,改名未global_custom.config,然后修改global_custom.config的内容即可。

QuickFlow的内部逻辑会优先加载global_custom.config文件,当global_custom.config文件不存在时,才会使用global.config, global_custom.config不会被打包进QuickFlow.wsp,这样,更新解决方案的时候也就不会被覆盖掉了。

注意:
1)修改global_custom.config或global.config后必须重启iis才会生效。
2)如果发现自己环境中的global.config跟本文内容不一致,请更新到最新版本。

posted on 2010-12-28 20:39  jianyi  阅读(1425)  评论(7编辑  收藏  举报