شرح صورت مسئله: ممکن است اقدامکننده یک فعالیت کاربر توسط کاربر در فرمهای قبلی فرایند انتخاب شود. یکی از این روشها انتخاب اقدامکننده از یک فیلد رشته با ویجت نمایشی combo Box است. برای مثال در فرم زیر برای فیلد اقدامکننده، ممکن است گزینه “آقای مهدی عامری” یا “آقای محمد اکبری” یا “خانم سمانه علیپور” انتخاب شود و با پاس دادن این فیلد به فعالیت کاربر موردنظر فرد انتخابی اقدامکننده فعالیت کاربر شود.
در بخش پارامترهای خروجی فعالیت کاربر که در فرم مربوط به آن فیلد اقدامکننده مقداردهی میشود، نام انگلیسی فیلد اقدامکننده که در مدل دادهای تعریف کردهاید ( در اینجا FieldName) را قرار دهید و همین نام را در بخش پارامترهای ورودی فعالیت کاربر که قرار است گزینه انتخابی، اقدامکنندهاش باشد قرار دهید.
حال در بخش اقدامکننده از نوع کدنویسی مانند کد زیر مینویسیم:
using System;
using Chargoon.Didgah.BPMS.CommonApi;
namespace Chargoon.Didgah.BPMS.Runtime
{
public class OwnerSelector : IOwnerSelector
{
public IExecution Execution { get; set; }
public Owner GetOwner()
{
//تعریف یک متغییر از نوع عددصیح
int StaffId = 0;
//فراخوانی فیلد روی فرم که اقدامکننده از روی آن انتخاب میشود (اقدامکننده در تصویر بالا)
switch(Execution.StringValue(“FieldName”))
{
بررسی گزینه انتخابی و تخصیص StaffId مشخص هر فرد که این عدد را از دیتابیس به دست میآوریم و مقداردهی آن درون متغییر عدد صحیحی که در// ابتدا تعریف کردیم.
case “آقای مهدی عامری”:
StaffId = 64;
break;
case “آقای محمد اکبری”:
StaffId = 135;
break;
case “خانم سمانه علیپور”:
StaffId = 158 break;
//اگر هیچ یک از گزینههای فیلد اقدامکننده انتخاب نشده باشد، این فرد به صورت پیشفرض اقدامکننده فعالیت کاربر باشد
default:
“___StarterStaffId” مقدار StaffId شروعکننده فرایند است که برای مثال اینجا فرد شروعکننده//
//به عنوان اقدامکننده این فعالیت کاربر انتخاب میشود
StaffId = Execution.IntegerValue(“___StarterStaffId”);
break;
}
پاس دادن متغییر عدد صحیحی که در ابتدا تعریف کردیم که درون این متغییر مقدار StaffId فرد انتخاب شده وجود دارد، به تابع// Owner
return new Owner(StaffId);
}
}
}
||||