Sharepoint - 尝试将任务字段的值放入工作流程中

时间:2009-04-16 18:45:21

标签: sharepoint workflow

我正在制作一个sharepoint状态机工作流程。第一个状态具有“创建具有内容类型的任务”作为任务。内容类型有一个名为“isApproved”的字段。我没有使用任何infopath表格。我试图获取fthat字段的值来评估文档是否被批准。无论我做什么,我都会得到“对象未设置为对象的实例”。

我尝试了以下所有方法:

createTaskWithContentType1_TaskProperties1.ExtendedProperties["isApproved"].ToString();
onTaskChanged1_AfterProperties1.ExtendedProperties["isApproved"].ToString(); 
onTaskChanged1.AfterProperties1.ExtendedProperties["isApproved"].ToString();

我做错了什么???

3 个答案:

答案 0 :(得分:1)

我曾经遇到类似的问题,我必须获得字段ID才能访问该字段。我就这样做了:

Guid isApprovedFieldId = worflowProperties.TaskList.Fields["isApproved"].Id;  
string approvalStatus = (string)(onTaskChanged1_AfterProperties1.ExtendedProperties[isApprovedFieldId]);  

答案 1 :(得分:0)

我知道这个答案来得太晚了,但我认为很多人都喜欢这个帖子......

字段“isApproved”是示例工作流中msft通常使用的infopath任务表单的函数。此字段在基本内容类型任务中肯定不可用,这些任务实际上只是与InfoPath完全无关的简单SharePoint任务表单和“isApproved”字段。您需要做的是获取任务的后缀,查询“状态”字段并确定用户是否完成了任务。如果您向名为“已批准”的任务添加了另一列,则使用taskItem [“fieldName”]方法而不是[扩展属性]查询该字段。

希望这有助于某人!

答案 2 :(得分:0)

阿伦,

除了Abs说的话。我还建议您在获取其ID之前检查该字段是否实际存在。像这样......

if (worflowProperties.TaskList.Fields["isApproved"] != null)
{
   Guid isApprovedFieldId = worflowProperties.TaskList.Fields["isApproved"].Id;  
   string approvalStatus = (string)(onTaskChanged1_AfterProperties1.ExtendedProperties[isApprovedFieldId]);
}