Sharepoint 2007 VS:ONTASKCHANGE中的SharePoint 2007工作流未为InfoPath任务项触发

Sharepoint 2007 VS:ONTASKCHANGE中的SharePoint 2007工作流未为InfoPath任务项触发,sharepoint-2007,workflow,sharepoint-workflow,Sharepoint 2007,Workflow,Sharepoint Workflow,我正在使用VisualStudio2008为MOSS(SP 2007)SP2创建一个顺序工作流功能 “我的任务列表”是一个包含InfoPath表单的文档库,工作流中的CreateTask活动正在完美地创建这些表单(它们在浏览器中工作,所有提升的属性字段都按预期工作,等等)。尽管WF实例与另一个任务列表相关联(无法在WF关联表单上选择库,也无法将我的IP表单发布到库以外的任何位置) 附件是一个截图部分的WF我有麻烦与。。。所有4个启用的活动都具有相同的关联令牌(“taskToken”),其所有者

我正在使用VisualStudio2008为MOSS(SP 2007)SP2创建一个顺序工作流功能

“我的任务列表”是一个包含InfoPath表单的文档库,工作流中的CreateTask活动正在完美地创建这些表单(它们在浏览器中工作,所有提升的属性字段都按预期工作,等等)。尽管WF实例与另一个任务列表相关联(无法在WF关联表单上选择库,也无法将我的IP表单发布到库以外的任何位置)

附件是一个截图部分的WF我有麻烦与。。。所有4个启用的活动都具有相同的关联令牌(“taskToken”),其所有者是复制者

我的While活动条件是一个代码条件,目前它只是“返回”True

每次输入任何方法时,我都会向WF历史记录列表中写入一条消息,并在我的历史记录列表末尾看到以下内容(WF状态为“正在进行”):

  • 在createTask1中
  • 在OnTaskCreated1中
  • 在approvalTaskIsComplete中(暂时使用我的条件方法)
  • 就这样。无论我更新任务多少次,WF都会保持在那里

    我认为我的任务与WF的关联存在问题。在WF状态页面的历史记录列表上方,我看到我的任务被列出,但URL无效(它指向的列表甚至不存在)

    我的createTask方法的超级基本伪代码如下所示:

    private void createTask1_MethodInvoking() {
        WriteToHistoryList("in createTask1");
    
        // create task form in doc lib:
        string newTaskName = [new unique name for task];
        using (MemoryStream) {
            XmlTextWriter writer;
            // build XML doc for InfoPath form using writer
            web.Files.Add(taskListURL + newTaskName + ".xml", writer.trimmedBufferBytes);
        }
    
        // get the new task item:
        SPQuery = [CAML query using newTaskName];
        SPListItem newTaskItem = [item from CAML query];
    
        // associate new task form with WF (theoretically):
        ((CreateTask)sender).TaskId = newTaskItem.UniqueId;
        this.currentTaskID = newTaskItem.UniqueId; // this is a public guid on my WF class, bound in the properties of the OnTaskCreated, OnTaskChanged, and OnTaskCompleted as the taskID
    
        SPWorkflowTaskProperties props = new SPWorkflowTaskProperties();
        props.AssignedTo = [me];
        props.DueDate = [tomorrow];
        props.Title = "Test Title"; // NOT the actual task title, but this is what's showing up on the WF Status page
        ((CreateTask)sender).TaskProperties = props;
        this.currentTaskProps = props; // Another public property of the WF class, bound as the AfterProperties property of the later task Activities
    
    }
    
    设置浇铸发送者的TaskId和TaskProperties,并将类上的公共属性设置为这些值对我来说似乎是多余和错误的(如果这是一个并行复制器,我会怎么做?),但是在猜测我的任务没有正确地与OnTaskChanged活动关联后(在它的TaskID属性只是默认的“空”GUID之前),我添加了
    this.currentTaskID
    this.currentTaskProps


    有什么想法我可能遗漏了什么或做错了什么吗?

    我已经找到了解决这个问题的方法,尽管如果有人知道如何让它工作,我更愿意使用我原来的方法

    我现在所做的不同之处在于:

  • 将我的任务表单发布到本地位置,然后在我的VS项目中包含已发布的.xsn(添加现有)
  • 在(Feature.xml的)my-Feature/ElementManifests元素中,为.xsn添加了一个ElementFile元素
  • 在my Elements/Workflow/MetaData(Elements.xml或Workflow.xml,具体取决于项目模板)中,添加了一个Task0_FormURN元素,其“urn:”字符串为-PUBLISHED-.xsn
  • 将我的所有CreateTask代码替换为以下内容(代码/预格式化在FF中不适用,抱歉):

    CreateTask task=发送方作为CreateTask

    task.TaskId=Guid.NewGuid()

    task.TaskProperties=新的SPWorkflowTaskProperties()

    task.TaskProperties.TaskType=0;//与Task0\u FormURN元素匹配

    task.TaskProperties.Title=新名称

    task.TaskProperties.AssignedTo=[me]

    this.currentTaskID=task.TaskId

    this.currentTaskProps=task.TaskProperties

  • 我没有将我的值分配给任务表单的主数据源,而是使用ItemMetadata.xml(搜索它)将每个表单字段指定为辅助数据源中的字段,并设置这些值,如:

    task.TaskProperties.ExtendedProperties[“type”]=this.requestItem.type()


  • 然后,将正确的任务放置在“工作流状态”页面上,OnTaskChanged活动将正常启动。

    我找到了解决此问题的方法,不过如果有人知道如何使其工作,我更愿意使用我的原始方法

    我现在所做的不同之处在于:

  • 将我的任务表单发布到本地位置,然后在我的VS项目中包含已发布的.xsn(添加现有)
  • 在(Feature.xml的)my-Feature/ElementManifests元素中,为.xsn添加了一个ElementFile元素
  • 在my Elements/Workflow/MetaData(Elements.xml或Workflow.xml,具体取决于项目模板)中,添加了一个Task0_FormURN元素,其“urn:”字符串为-PUBLISHED-.xsn
  • 将我的所有CreateTask代码替换为以下内容(代码/预格式化在FF中不适用,抱歉):

    CreateTask task=发送方作为CreateTask

    task.TaskId=Guid.NewGuid()

    task.TaskProperties=新的SPWorkflowTaskProperties()

    task.TaskProperties.TaskType=0;//与Task0\u FormURN元素匹配

    task.TaskProperties.Title=新名称

    task.TaskProperties.AssignedTo=[me]

    this.currentTaskID=task.TaskId

    this.currentTaskProps=task.TaskProperties

  • 我没有将我的值分配给任务表单的主数据源,而是使用ItemMetadata.xml(搜索它)将每个表单字段指定为辅助数据源中的字段,并设置这些值,如:

    task.TaskProperties.ExtendedProperties[“type”]=this.requestItem.type()

  • 然后将正确的任务放置在“工作流状态”页面上,并且OnTaskChanged活动正确启动