Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint 2010 具有自定义内容类型的Sharepoint工作流出现问题_Sharepoint 2010 - Fatal编程技术网

Sharepoint 2010 具有自定义内容类型的Sharepoint工作流出现问题

Sharepoint 2010 具有自定义内容类型的Sharepoint工作流出现问题,sharepoint-2010,Sharepoint 2010,我遇到了一个在visual studio中编写的自定义审批工作流问题。它使用自定义内容类型创建审批任务。我在SharePoint企业环境中开发了工作流,但客户机正在试图在基础服务器上运行它。我遇到的问题是将内容类型分配给任务列表时。无论何时运行工作流,我都无法编辑列表项或更新任务项。一旦我从任务列表中删除了内容类型,我就可以很好地查看和编辑所有记录。我确实在日志中获得了以下事件: System.NullReferenceException:对象引用未设置为实例 指一个物体。在 Microsoft

我遇到了一个在visual studio中编写的自定义审批工作流问题。它使用自定义内容类型创建审批任务。我在SharePoint企业环境中开发了工作流,但客户机正在试图在基础服务器上运行它。我遇到的问题是将内容类型分配给任务列表时。无论何时运行工作流,我都无法编辑列表项或更新任务项。一旦我从任务列表中删除了内容类型,我就可以很好地查看和编辑所有记录。我确实在日志中获得了以下事件:

System.NullReferenceException:对象引用未设置为实例 指一个物体。在 Microsoft.SharePoint.Publishing.CachedListItem.GetWorkflowInfo(SPListItem 项目)位于Microsoft.SharePoint.Publishing.CachedListItem

为了使其更有趣,我能够在未分配内容类型时运行工作流,并创建审批任务,然后在之后添加内容类型,然后成功编辑和更新两个记录

还有一点代码。。。。这是我使用内容类型方法创建的任务:

private void createTaskWithContentType1_MethodInvoking(object sender, EventArgs e)
    {
        //set the primary approval task as not completed
        this.primaryApprovalTaskCompleted = false;

        //get the primary approver
        var field = workflowProperties.Item.Fields.GetField("primaryApprover") as SPFieldUser;
        var fieldValue = field.GetFieldValue(workflowProperties.Item[field.Id].ToString()) as SPFieldUserValue;

        createTaskWithContentType1.TaskProperties.AssignedTo = fieldValue.User.LoginName;

        createTaskWithContentType1.TaskProperties.DueDate = DateTime.Now.AddHours(4);

        createTaskWithContentType1.TaskProperties.Title = "Primary Approval for Batch Job ID: " + workflowProperties.Item["batchJobId"].ToString();

        createTaskWithContentType1.TaskProperties.SendEmailNotification = true;

    }
以及我的内容类型的xml:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Field ID="{46F9442F-19E3-4818-8FE7-719E5961C8A1}" Name="ApprovalStatus" DisplayName="Approval Status" Type="Choice" Required="TRUE" Sealed="TRUE" Overwrite="True" >
    <CHOICES>
      <CHOICE>Approve</CHOICE>
      <CHOICE>Reject</CHOICE>
    </CHOICES>
  </Field>

  <Field ID="{B485C5E5-A85C-4C09-AE96-F7FC71FB4A3D}" Name="ApprovalNotes" DisplayName="Approval Notes" Type="Text" Overwrite="True" />


  <ContentType ID="0x01080100922FA9051D1C471DA956E627E6B3B81E"
           Name="ApprovalContentType"
           Group="Custom Content Types"
           Description="Approval Content Type"
           Version="0" 
           Overwrite="True">
     <FieldRefs>
      <RemoveFieldRef ID="{a8eb573e-9e11-481a-a8c9-1104a54b2fbd}" Name="Priority" Hidden="TRUE"/>
      <RemoveFieldRef ID="{c3a92d97-2b77-4a25-9698-3ab54874bc6f}" Name="Predecessors" Hidden="TRUE"/>
      <RemoveFieldRef ID="{c15b34c3-ce7d-490a-b133-3f4de8801b76}" Name="Status" Hidden="TRUE"/>
      <RemoveFieldRef ID="{d2311440-1ed6-46ea-b46d-daa643dc3886}" Name="PercentComplete" Hidden="TRUE"/>
      <RemoveFieldRef ID="{7662cd2c-f069-4dba-9e35-082cf976e170}" Name="Body" Hidden="TRUE"/>
      <FieldRef
    ID="{46F9442F-19E3-4818-8FE7-719E5961C8A1}"
    Name="ApprovalStatus" Sealed="TRUE" Required="TRUE"/>
      <FieldRef
    ID="{B485C5E5-A85C-4C09-AE96-F7FC71FB4A3D}"
    Name="ApprovalNotes"/>
    </FieldRefs>

  </ContentType>
</Elements>

批准
拒绝

好的,那么这个问题的解决方案。。。这个问题与我使用内容类型对象的创建任务有关。我可以用创建任务对象替换它,然后通过代码设置对象的内容类型。仍然让我困惑的是,为什么这在我的两个测试场上都有效,但在我的客户机上却失败了…

好吧,那么这一个的解决方案。。。这个问题与我使用内容类型对象的创建任务有关。我可以用创建任务对象替换它,然后通过代码设置对象的内容类型。仍然让我困惑的是,为什么这在我的两个测试场上都有效,但在我的客户机上失败了…

我有同样的问题,并用以下代码解决了

   <ContentType ID="0x01080100C2CC93E34F784038BE7CA4CFD86BD58E"
                Name="taskCT"
                Group="Custom Content Types"
                Description="My Content Type"
                Inherits="FALSE"
                Version="0">


只需在内容类型id中的
0x0108
0x010801
[remamaging guid))之后添加
01
,这样一切都可以正常工作。这是一个bug,微软给出了这个解决方案

我有同样的问题,并通过以下代码解决

   <ContentType ID="0x01080100C2CC93E34F784038BE7CA4CFD86BD58E"
                Name="taskCT"
                Group="Custom Content Types"
                Description="My Content Type"
                Inherits="FALSE"
                Version="0">


只需在内容类型id中的
0x0108
0x010801
[remamaging guid))之后添加
01
,这样一切都可以正常工作。这是一个bug,微软给出了这个解决方案

如何设置创建任务对象的内容类型id?我对使用“创建内容类型为的任务”的工作流有相同的问题,希望尝试您的解决方案。您如何设置“创建任务”对象的内容类型id?我在使用内容类型为“创建任务”的工作流时遇到了相同的问题,希望尝试一下您的解决方案。