SharePoint对文档库做审批的思路
SharePoint中做审批有几种途径:
- 启用文档库的审批:如果使用这种方法,是没有使用任何的工作流的。具有编写权限的人员编写内容且发布以后,具有审批权限的人员就可以对项目进行审批。没有经过审批的项目对于只读权限的用户是不可见的。这种方案只适合极其普通的情况下,例如一个小组中,组员编写了文档,组长进行审批。
- 使用系统自带的Approval工作流:这个方法只支持一级审批,多级审批无法实现。
- 使用SPD实现审批:这个方法可以实现多级审批,但是由于在SPD中设计的工作流的几个模板:启动、Collection data from a user等只能添加有限的几个域控件(文本框,下拉列表等),对于需要由用户来选择审批人或者复杂的UI操作则无法实现。但是对于在工作流中就固化好审批人等简单情况下则可以满足。
- 使用VS来开发工作流:使用VS来开发工作流,可以选择SharePoint顺序工作流,在这里面可以直接调用SharePoint中已经预置的一些动作。对于收集用户输入信息的表单模板,本质上是需要使用Content Type来关联表单,由工作流与Content Type进行关联来实现的。具体的实现方法有两种:一是使用InfoPath,这种方法在《亮剑》书中有记录。另外一种是使用aspx作为表单,这方面可能是由于搜索的关键词不正确,以至于在网上搜不到太多的资料。网友提供了一些实现后的XML文件说明了一些问题:
ContractWorkflowContentType.xml
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <ContentType ID="0x01080100C9C9515DE4E24001905074F980F93159" Name="ContractWorkflowContent" Group="CustomApprove" Description="a Custom Workflow" Version="0"> <FieldRefs> </FieldRefs> <XmlDocuments> <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url"> <FormUrls xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url"> <Display>_layouts/ContractWorkflow/ContractApproval.aspx</Display> <Edit>_layouts/ContractWorkflow/ContractApproval.aspx</Edit> </FormUrls> </XmlDocument> </XmlDocuments> </ContentType> </Elements>
workflow.xml
<?xml version="1.0" encoding="utf-8" ?> <!-- 自定义方括号中的文本。 填写时,请移除方括号,例如 Name="[名称]" ==> Name="MyWorkflow"--> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <Workflow Name="GAGCContractManagement" Description="合同审批工作流" Id="55460aba-ac20-45b2-af03-4423cd99a93b" CodeBesideClass="GAGCContractManagement.Workflow1" CodeBesideAssembly="GAGCContractManagement, Version=1.0.0.0, Culture=neutral, PublicKeyToken=91d0f3162c17f50c" TaskListContentTypeId="0x01080100C9C9515DE4E24001905074F980F93159" > <Categories/> <MetaData> <!-- 用于指定 InfoPath 工作流窗体的标记;对于您没有的窗体,请删除标记--> <!--<Association_FormURN>[关联窗体的 URN]</Association_FormURN> <Instantiation_FormURN>[实例化窗体的 URN]</Instantiation_FormURN> <Task0_FormURN>[任务(类型 0)窗体的 URN]</Task0_FormURN> <Task1_FormURN>[任务(类型 1)窗体的 URN]</Task1_FormURN>--> <!-- 修改窗体: 为每个修改窗体创建唯一的 GUID--> <!--<Modification_[唯一的 GUID]_FormURN>[修改窗体的 URN]</Modification_[唯一的 GUID]_FormURN> <Modification_[唯一的 GUID]_Name>[将在工作流状态页上显示为链接的修改名称]</Modification_[唯一的 GUID]_Name> --> <StatusPageUrl>_layouts/WrkStat.aspx</StatusPageUrl> </MetaData> </Workflow> </Elements>
feature.xml
<?xml version="1.0" encoding="utf-8" ?>
<Feature Id="7b7b6df2-1e5e-451c-a6c8-e6a558870fd3"
Title="GAGCContractManagement feature"
Description="My SharePoint Workflow Feature"
Version="12.0.0.0"
Scope="Site"
ReceiverAssembly="Microsoft.Office.Workflow.Feature, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
ReceiverClass="Microsoft.Office.Workflow.Feature.WorkflowFeatureReceiver"
xmlns="http://schemas.microsoft.com/sharepoint/%22>
<ElementManifests>
<ElementManifest Location="workflow.xml" />
<ElementManifest Location="ContractWorkflowContentType.xml" />
</ElementManifests>
<Properties>
<Property Key="GloballyAvailable" Value="true" />
<!-- RegisterForms 注册表项的值指示相对于功能文件位置的窗体路径。-->
<!-- 如果没有窗体,请使用 *.xsn-->
<Property Key="RegisterForms" Value="*.xsn" />
</Properties>
</Feature>
将来需要做的时候,可以在CodePlex上搜一下相关的信息来学习。
相关链接:
http://blogs.msdn.com/sharepoint/archive/2006/12/19/what-about-workflow-and-aspx-forms.aspx