1

在工作中,在 WSS 3.0 上安装 SP2 后,我们遇到了与 OnTaksCreated 的偶然行为相关的问题。有关此检查的更多信息“ http://fightingvssharepoint.blogspot.com/2009/06/ontaskcreated-in-wss-30-sp2.html ”。我们还没有找到解决办法,所以我们正在尝试另一种解决方案。包括取出 OnTaksCreted 并将其所有活动移至 OnTaskInit。如果您确实有解决 SP2 OnTaskCreated 问题的方法,请告诉我!但是,如果您不继续阅读,请...

自定义工作流程简介:在“任务”列表中创建新任务,设置工作流程状态并向“assignedTo”人员发送电子邮件。邮件正文中填写了最近创建的任务信息。为了检索此信息,需要调用“GetWorkflowTask”方法。该方法的签名是:

SPWorkflowTask 任务 GetWorkflowTask (int taskID)

此方法在 OnTaskCreated 中调用时可以正常检索任务。但是,如果我在 OnTaskInit 中调用它,则在 Createtask 活动之后检索 null。为什么?

谢谢!乔治。

4

2 回答 2

0

我以前见过这个错误,不幸的是它是不可预测的,我可以给你的是一个对我有用的解决方法,它涉及为你要求 SharePoint 创建的任务指定 listItemID(而不是 GUID),你可以从那里访问假设创建成功,则在任何未来事件上列出项目。如果您使用的列表获得大量流量,这可能由于竞争条件而无法工作......

再次“解决方法”,所以要小心... - 当您创建任务“onTaskCreateTask1”时,在 SPWorkflowTaskProperties.TaskItemID = x 中明确指定 taskItemID,其中 x 是您生成的值。
- 将生成的 taskItemID 存储在成员变量中 - 使用 getListItemFromID(x) 方法或使用 list.items[x] 方法/访问器访问列表

我没有写下面的代码,感谢 Martin Holy .. http://social.msdn.microsoft.com/Forums/en-US/sharepointworkflow/thread/26ff3ce1-6d6f-40a5-90b4-a7436acdfffe

/// <summary>
/// Because our task form's don't let us inject the ID we have to 
/// generate one beforehand.
/// </summary>
/// <param name="site"></param>
/// <param name="listId"></param>
/// <returns></returns>

public static int GetNextAvailableIdFromList(SPSite site, Guid listId)
{
    int nextAvailableID = -1;
    if (site.WebApplication.ContentDatabases.Count > 0)
    {
        string DBConnString = site.WebApplication.ContentDatabases[0].DatabaseConnectionString;
        SqlConnection con = new SqlConnection(DBConnString);
        try
        {
            con.Open();
            SqlCommand com = con.CreateCommand();
            com.CommandText = String.Format("select tp_NextAvailableId from AllLists where tp_ID = '{0}'", listId.ToString());

            nextAvailableID = (int)com.ExecuteScalar();
        }
        finally
        {
            con.Close();
        }
    }
    return nextAvailableID;
}
于 2009-11-01T02:15:42.167 回答
0

我有同样的问题OnTaskCreated,微软建议你不要使用OnTaskCreated,但要解决这个问题,请参阅这篇博文。

于 2010-04-08T11:16:33.220 回答