配置文件解析
QuickFlow采用C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\QuickFlow目录下的global.config
文件来存储配置信息,这个文件的内容如下:
QuickFlow.Core.SPRoleUserProvider,QuickFlow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ec1e0fe6e1745628 Lists/QuickFlowDelegation false WorkflowAdmin
各个配置节点的解释:
CustomRoleUserProvider,用来配置一个自定义的角色用户提供逻辑类,自定义角色提供程序见:
TaskDelegationProvider,用来配置任务代理的实现,如果取消TaskDelegationProvider这行的注释,则采用默认的代理实现(采用一个列表存放代理信息),自定义代理提供程序见:
TaskDelegationDelegationListSiteUrl,如果采用默认代理提供程序,可以指定代理配置列表的路径
EnableSpecialPermissions,如果设置为true,则每个任务的权限会绑定到任务操作人,否则,所有用户(具有任务列表操作权限)都具有操作任务的权限。
WorkflowAdminGroup,当EnableSpecialPermissions设置为true的时候,可以设置一个管理员组,这个组始终具有任务的操作权限,QuickFlow支持任务的Reassign,管理员要ReassignTask,必须首先能看到这个任务。
EventReceivers, 这个节点下配置事件处理器,建议将默认的Exception处理器启用,而Tracing处理器禁止(通过设置Enabled属性)。事件处理器也可以自定义,参考:
关于是否使用独立权限的任务
EnableSpecialPermissions配置项的引入是因为SharePoint的一个问题:
当使用独立权限的任务时(EnableSpecialPermissions=true),SharePoint的日志文件中会出现这样一条日志信息:ERROR: request not found in the TrackedRequests. We might be creating and closing webs on different threads.Detail:
这个信息并不会影响到系统的正常运行。当任务的权限直接继承任务列表时,这个信息就不会出现了。所以,你可以按照自己的实际情况来配置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跟本文内容不一致,请更新到最新版本。