我的Workflow.xml的内容:
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Workflow
       Name="MyWorkflow"
        Description="This workflow"
        Id="9e22a7b0-4fef-411a-b8c2-4ff8cca31e85"
        CodeBesideClass="InfoPathWF.MyWorkflow"
        CodeBesideAssembly="InfoPathWF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=4bfa53b046e311f6"
        TaskListContentTypeId="0x01080100C9C9515DE4E24001905074F980F93160"
        AssociationUrl="_layouts/CstWrkflIP.aspx"
        InstantiationUrl="_layouts/IniWrkflIP.aspx"
        ModificationUrl="_layouts/ModWrkflIP.aspx">
    <Categories/>
    <!-- Tags to specify InfoPath forms for the workflow; delete tags for forms that you do not have -->
    <!--<MetaData>
      <Association_FormURN>urn:schemas-microsoft-com:office:infopath:bxd-apply1:-myXSD-2007-02-06T06-43-51</Association_FormURN>
      <Instantiation_FormURN>urn:schemas-microsoft-com:office:infopath:bxd-apply1:-myXSD-2007-02-06T06-43-51</Instantiation_FormURN>
      <Task0_FormURN>urn:schemas-microsoft-com:office:infopath:bxd-mark:-myXSD-2007-02-09T08-06-41</Task0_FormURN>
      <Modification_GUID_FormURN>modificationURN</Modification_GUID_FormURN>
      <Modification_GUID_Name>Name of Modification</Modification_GUID_Name>
      <StatusPageUrl>_layouts/WrkStat.aspx</StatusPageUrl>
    </MetaData>-->
  </Workflow>
</Elements>
 
Element元素中包含的Workflow子节点就是对工作流属性的描述。
Workflow的属性含义:
Name::工作流的名称,将会在站点集功能里标识工作流。
Description:工作流的描述,将会显示工作流介绍中
Id:工作流的Id,这里的Id是GUID,可以使用System.GUid.NewGuid()来获取,也可是使用下面我自己写的一个程序来获得GUid,可以放心的去取,因为对于我们有生之年,这种编号是用之不尽的。
CodeBesideClass:这个属性标记了工作流存在于哪一个命名空间下的哪一个类中。在这里我的工作流是存在于HelloSPWF命名空间下的ApplyWorkFlow类中的。
CodeBesideAssembly: 程序集信息,就是部署到GAC(Global Assembly Cache)中的程序集,可以由Reflector获取完整的程序集信息
TaskListContentTypeId:任务的内容类型ID,一般不需要修改。
AssociationUrl:Association表单的默认路径
InstantiationUrl:Instantiation表单的默认路径
ModificationUrl:Modification表单的默认路径
MetaData节点中保存了表单的标识信息,也是我们关心的一个节点。比如我们的一个工作流的应用中,会使用到联合表单(用于SPS管理层在部署工作流到一个项目的时候设定数据信息),初始化表单(工作流启动者填写的表单),还有任务处理表单(用于审批者处理审批信息的表单)。这个工作流使用到的表单由这些表单的URN(Uniform Resource Name,是URI的一个子集)唯一标识,然后存储在MetaData中。
Association_FormURN:联合表单的URN
Instantiation_FormURN:初始化表单的URN
TaskN_FormURN:任务编辑表单的URN,这里的N可以是0,1,2,....,n的自然数,表示不同的任务所使用到编辑表单,比如经理用到的编辑表单也许会和会计使用到的编辑表单有所不同。


我的feature.xml的内容
<?xml version="1.0" encoding="utf-8"?>
<Feature Id="05ff7822-8441-484e-b1e8-995f9f4393a6" Title="My WorkFlow" Description="My WorkFlow" 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/">
<ElementManifests>
  <ElementManifest Location="workflow.xml" />
</ElementManifests>
<Properties>
  <Property Key="GloballyAvailable" Value="true" />
  <!-- Value for RegisterForms key indicates the path to the forms relative to feature file location -->
  <!-- if you don't have forms, use *.xsn -->
  <!--<Property Key="RegisterForms" Value="*.xsn" />-->
</Properties>
</Feature>
Feature节点中的元素标识了工作流的功能描述:
Name::节点的名称,将会在站点集功能里标识工作流。
Description:节点的描述,将会显示工作流介绍中
Id:节点的Id,这里的Id是GUID。
ElementManifests:制定工作流的xml定义文件
  注:生成的DLL文件必须是强命名的,可以在VS命令行中输入sn -k c:/my.keys,不要忘记在AssemblyInfo.cs中输入[assembly:AssemblyKeyFile("My.keys")]