شرح صورت مسئله: در فرآیندهایی که یک Pool با رویداد پایان از نوع پیام خاتمه مییابد و در همان سند فرایندی Pool بعدی با رویداد شروع از نوع پیام شروع میشود، نیاز است بعد از رویداد شروع پیام، با استفاده از کد زیر شروعکننده این Pool را مشخص کنیم تا در بخش شروعکننده، آرشیو فعالیتها و همچنین فرآیندهای اجرایی نمایش داده شود.
using System;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using Chargoon.Didgah.BPMS.CommonApi;
namespace Chargoon.Didgah.BPMS.Runtime
{
public class ScriptTask : IScriptTask
{
public IExecution Execution { get; set; }
public void Execute()
{
// اتصال به دیتا بیس، BPMSConnection نام رشته اتصال است.//
SqlConnection conn = new SqlConnection(Execution.GetConnectionString(“BPMSConnection”));
using ( SqlCommand cmd = new SqlCommand()) {
cmd.Connection = conn;
cmd.CommandType =CommandType.Text;
// کوئری SQL که در آن نام شروعکننده فرایند را در جدول ProcessInstances درج میکنیم. //
cmd.CommandText =@” UPDATE [Didgah_BPMS].[dbo].[bpm_ProcessInstances]
SET [StarterStaffId]=(SELECT [LastIntractorStaffId] FROM [Didgah_BPMS].[dbo].[bpm_ProcessInstances]
WHERE [ProcessId]=@ProcessId AND [BusinessKey]=@BusinessKey AND [Status]=3 )
WHERE [ProcessName]=N‘نام فرایند با شروعکننده از نوع پیام‘ AND [BusinessKey]= @BusinessKey ” ;
cmd.Parameters.AddWithValue(“@BusinessKey”,Execution.GuidValue(“___BusinessKey”));
cmd.Parameters.AddWithValue(“@ProcessId”, Execution.IntegerValue(“___ProcessId”));
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
}