SharePoint对文档库做审批的思路

    SharePoint中做审批有几种途径:

  1. 启用文档库的审批:如果使用这种方法,是没有使用任何的工作流的。具有编写权限的人员编写内容且发布以后,具有审批权限的人员就可以对项目进行审批。没有经过审批的项目对于只读权限的用户是不可见的。这种方案只适合极其普通的情况下,例如一个小组中,组员编写了文档,组长进行审批。
  2. 使用系统自带的Approval工作流:这个方法只支持一级审批,多级审批无法实现。
  3. 使用SPD实现审批:这个方法可以实现多级审批,但是由于在SPD中设计的工作流的几个模板:启动、Collection data from a user等只能添加有限的几个域控件(文本框,下拉列表等),对于需要由用户来选择审批人或者复杂的UI操作则无法实现。但是对于在工作流中就固化好审批人等简单情况下则可以满足。
  4. 使用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

http://blogs.msdn.com/sharepoint/archive/2006/11/26/developing-workflows-in-vs-part-4-design-and-bind-your-forms.aspx

posted @ 2010-01-06 13:45  吴东雷  阅读(874)  评论(0编辑  收藏  举报