【问题标题】:Repeated execution of code activity in SharePoint workflow?在 SharePoint 工作流中重复执行代码活动?
【发布时间】:2010-09-08 05:18:07
【问题描述】:

我有一个自定义工作流实现,需要更新外部数据库。我为文本目的创建了一个简单的工作流程,发现了一件奇怪的事情!

我的 Db 更新/插入代码放置在工作流的代码活动中。当在共享点自定义列表中的简单列表项上调用工作流时,似乎多次执行代码活动。这是我的工作流程:

我的代码是:

 private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
{
    workflowProperties.Item["Title"] = "Processed by workflow at "+ DateTime.Now;
    workflowProperties.Item.Update();      
    
}

private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
    Random rnd = new Random();

    string conStr = "Data Source=192.168.1.57\\TRIBIRD;Initial Catalog=XXXXXX;User ID=XXXXXX;Password=XXXXXXXXXX";
    SqlConnection connection = new SqlConnection(conStr);
    SqlCommand command = connection.CreateCommand();
    command.CommandType = System.Data.CommandType.Text;
    command.CommandText = "INSERT INTO XXXX VALUES(" + rnd.Next() + ",'THE CONTENT FROM SHAREPOINT WORKFLOW','EN',1,1,'BRT')";

    connection.Open();
    command.ExecuteNonQuery();
    command.Dispose();
    connection.Close();
}

在数据库中,我得到超过 1 行的工作流执行!有趣的是,在每次执行期间,添加的行数会有所不同。

为什么会这样?我的错误是什么?
欢迎任何想法和建议。

【问题讨论】:

    标签: sharepoint workflow sharepoint-2007 sharepoint-workflow


    【解决方案1】:

    确保您运行的是 SharePoint 的最新补丁和更新。

    2007 年的早期版本允许循环自触发(例如重新触发)。后来的版本没有(但仍然允许同循环触发器)。我怀疑这是问题所在,“级联”是由Update 方法开始的。只是预感。

    这应该在 SP2 中修复:Service Pack 2 prevents an on-change workflow from starting itself

    【讨论】:

    • @pst.. 感谢您的信息..对此有什么解决方案吗?我真正的工作流程将在两者之间有一个批准过程,只有在项目获得批准后,数据才会更新/插入到外部数据库中。有任何最佳实践或解决此问题的其他方法吗?
    • @Abdel 我用(希望)有用的链接更新了我的回复。如果此问题是由 on-change 事件引起的,则 SP2 应修复观察到的行为。当我创建了这样的工作流程(听起来)时,我会保持工作流程过程简短并保持项目本身的状态。然后我假设在工作流运行时项目不会在外部更改(工作流本身可能会更改项目,SP2 防止重新触发)。有了这个假设和 SP2 修复,一切正常。
    • @pst,我升级了,还是不行!!我将尝试再次重新部署工作流并测试...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多