一般一个工作流工程里面会包含很多工作流任务表单。我们在Visual Studio 2005开发的时候如何让程序知道在某个任务的时候给用户显示相应的工作流任务表单呢?

我们在设计工作流的时候,创建每个任务项的CreateTask Activity的对应有一个SPWorkflowTaskProperties类型的TaskProperties属性。我们在创建一个Task时候一般的过程类似:

private void CreateTask1(object sender, EventArgs e)
{
	this.taskID_ReviewerApproval = Guid.NewGuid(); //initialize the task id
	this.workflowTask1Properties.Title = "Reviewer: Please review this document";
	this.workflowTask1Properties.AssignedTo = this.ReviewerName;
	this.workflowTask1Properties.Description = this.instruction;
	this.workflowTask1Properties.TaskType = 0; 
	this.workflowTask1Properties.ExtendedProperties["Comment"] = "";
	this.workflowTask1Properties.ExtendedProperties["Instruction"] = this.instruction;
	this.workflowTask1Properties.ExtendedProperties["CurrentReviewer"] = this.ReviewerName;
}
一般如果你的工作流中只有一个任务表单,上面红色标识的“this.workflowTask1Properties.TaskType = 0;”这句可以不写。
但是,如果你有多个不同的任务表单,就必须包括这句代码来指定使用哪个任务表单。
TaskType的值和Workflow.xml中的Metadata中的Task*_FormURN有如下对应关系:
<MetaData>
    <Instantiation_FormURN>urn:schemas-microsoft-com:office:infopath:SMWorkflowDemoStartForm:-myXSD-2006-05-21T19-13-08</Instantiation_FormURN>
    <Association_FormURN>urn:schemas-microsoft-com:office:infopath:SMWorkflowDemoStartForm:-myXSD-2006-05-21T19-13-08</Association_FormURN>
    <Task0_FormURN>urn:schemas-microsoft-com:office:infopath:SMWorkflowDemoApproveForm:-myXSD-2006-04-27T03-00-28</Task0_FormURN>
    <Task1_FormURN>urn:schemas-microsoft-com:office:infopath:SMWorkflowDemoReviseForm:-myXSD-2006-04-27T03-11-15</Task1_FormURN>
    <Task2_FormURN>urn:schemas-microsoft-com:office:infopath:SMWorkflowDemoApproveForm:-myXSD-2006-04-27T03-00-28</Task2_FormURN> 
    <StatusPageUrl>_layouts/WrkStat.aspx</StatusPageUrl>
</MetaData>
TaskType为0的对应Task0_FormURN,TaskType为1的对应Task1_FormURN,以此类推。如果不指定TaskType的值,默认使用Task0_FormURN。


原文来自:http://blog.joycode.com/ipark/archive/2007/02/11/93478.aspx