شرح صورت مسئله:
درج شماره درخواست روی فرم:
فرض کنید در یک فرآیند نیاز است که روی فرم یک فعالیت کاربر (UserTask) شماره درخواست را که از 1000 شروع میشود به همراه یک پیشوند پییش فرض را نمایش دهیم.
با استفاده از کد زیر درون یک فعالیت-کدنویسی (ScriptTask) و همچنین نام فیلدی که شماره درخواست را نشان میدهد را درون بخش پارامترهای خروجی فعالیت کدنویسی (ScriptTask) و درون بخش پارامترهای ورودی فعالیت کاربر(UserTask) بعدی تعریف کنیم. در اینجا این فیلدها RequstNum هستند.
using System;
using System.Data;
using System.Data.SqlClient;
using Chargoon.Didgah.BPMS.CommonApi;
namespace Chargoon.Didgah.BPMS.Runtime
{
public class ScriptTask : IScriptTask
{
public IExecution Execution { get; set; }
public void Execute()
{
//تعریف دو متغییر Prefixو FormNum از جنس رشته که متغییر Prefix به عنوان پیشوند برای شماره درخواست میتوان استفاده کرد برای مثال در اینجا مقدار “/الف” را دارد و متغییر FormNum که در آن شماره درخواست مقداردهی میشود.//
string FormNum=””;
string Prefix = “/الف”;
// اتصال به دیتابیس . BPMSConnection نام رشته اتصال است.//
SqlConnection sqlConnection = new SqlConnection(Execution.GetConnectionString(“BPMSConnection”));
// با استفاده از SqlCommand کوئری مینویسیم.//
using (SqlCommand SqlCommand = new SqlCommand())
{
SqlCommand.Connection = sqlConnection;
SqlCommand.CommandType = CommandType.Text;
//کوئری SQL که در آن از دستور count(Id) از جدول ProcessInstances استفاده میکنیم با شرط //
// ProcessId=N که در آن N ،ProcessId فرایند است که این عدد را از جدول Process به دست میآوریم.//
// برای مثال در اینجا 13 قرار دادهایم.//
SqlCommand.CommandText = @”
select count(Id)
FROM[Demo_Didgah_BPMS].[dbo].[bpm_ProcessInstances]
where ProcessId=13″;
sqlConnection.Open();
// تبدیل خروجی کوئری به رشته و ریختن آن در متغییر FormNum .//
FormNum = SqlCommand.ExecuteScalar().ToString();
sqlConnection.Close();
}
//حال با توجه به اینکه میخواهیم شماره درخواست از 1000 شروع شود طبق شرطهای زیر عمل میکنیم://
// متغییر IntFormNum را درون فیلدی که روی فرم هست و قرار است شماره درخواست (RequstNum) را نمایش دهد میریزیم.//
int IntFormNum = Convert.ToInt32(FormNum);
if (IntFormNum >=0 && IntFormNum <10)
Execution.SetVariable(“RequstNum”,”000″+ IntFormNum.ToString()+Prefix);
else if(IntFormNum >=10 && IntFormNum <100)
Execution.SetVariable(“RequstNum”,”00″+ IntFormNum.ToString()+Prefix);
else if(IntFormNum >=100 && IntFormNum <1000)
Execution.SetVariable(“RequstNum”,”0″+ IntFormNum.ToString()+Prefix);
else
Execution.SetVariable(“RequstNum”,IntFormNum.ToString()+Prefix);
}
}
}