activiti assignment expretion برای انتصاب به کاندیدای تسک در فرآیند wise activiti

0 رأی
میانگین بازدید روزانه 0.1339 بازدید

جهت انتخاب چند سمت براي انتصاب به كانديداي تسك در فرايند ازچه روشي استفاده مي شود؟

سوال 9 ماه قبل در تالار برنامه نویسی توسط mmajlesi (5 امتیاز)
تغییر تالار 9 ماه قبل توسط Saeed Zarinfam

1 جواب

0 رأی

معمولا در تخصیص کارِ یک کار از تلفیقی از معیارهای مختلف استفاده می‌شود: مثلا "نقش و سازمان" یا "سطح سمت و سازمان". کم پیش می‌آید که یک یا چند سمت به صورت استاتیک به عنوان مسئول کار تعیین شود.
ولی اگر چنین چیزی می‌خواهید، باید در یک اسکریپت، idهای سمت‌های مورد نظر را در یک کالکشن به عنوان متغیر فرآیند ذخیره کنید و سپس در "معیار تخصیص کار: سمت (Post)" فیلد Expression را با این متغیر مقداردهی کنید.

آپدیت:

معیارهای تخصیص کار باهم and میشوند. بنابراین، استفاده از دو معیارِ هم نوعِ سمت (Post) با مقادیر مختلف، باعث خالی‌شدن نتیجه‌ی ارزیابی خواهد شد.

مفهوم کاندید شدن برای تسک: هنگام اجرای فرآیند و رسیدن به آن تسک، معیارهای تخصیص کارِ آن تسک evaluate می‌شوند. اگر نتیجه بیش از یک سمت باشد، کار به صف کارهای هر یک از کاندیدها اضافه می‌شود و هر کدام که زودتر کار را تصاحب کرد، مسئول انجام کار می‌شود (و کار از صف کار بقیه کاندیدها خارج می‌شود).

راه حل پیشنهادی: اگر چند سمت می‌توانند تسکی را انجام دهند، یک نقش ایجاد کنید و به هر یک از آن سمت‌ها تخصیص دهید. در تخصیص کار آن تسک از آن نقش استفاده کنید.

استفاده از چند سمت مشخص: اگر می‌خواهید، چند سمت مشخص را به صورت مستقیم کاندید انجام کار کنید باید در sequence flow قبل از تسک (یا هر مولفه‌ای که قطعا قبل از تسک موردنظر اجرا می‌شود) یک Execution Listener از نوع اسکریپت اضافه کنید. و مشابه این اسکریپت (به زبان groovy) را وارد کنید:

import ir.asta.wise.portal.security.service.query.expression.Restrictions;
import ir.asta.wise.portal.security.service.query.post.PostCriterion;
	
String[] values = ["1001", "1002"];
def posts = postQueryFactory.create().add(new PostCriterion(Restrictions.in("code", values))).executeQuery();
def postIds = [];
for (def post : posts) {
	postIds.add(post.getId());
}
execution.setVariable("taskAssigneePostIds", postIds);

دقت کنید، اسکریپت بالا سمت‌های با کد 1001 و 1002 را لود می‌کند و idهای آنها را در یک متغیر از جنس لیست (به نام postIds) قرار می‌دهد و حاصل را در یک متغیر فرآیندی (به نام taskAssigneePostIds) قرار می‌دهد.

حال در تخصیص کارِ تسک مورد نظر باید از معیار Post و با expression با مقدار زیر استفاده کرد:

${taskAssigneePostIds}


 

جواب 9 ماه قبل توسط mofarn (1,342 امتیاز)
ویرایش 9 ماه قبل توسط mofarn
با سلام و تشكر از شما ؛ لطفاً در رابطه با روش نوشتن اسكريپت راهنمايي بفرماييد . اگر در ويكي در اين رابطه توضيح داده شده است ؛ آدرس پيج مربوطه را ارسال فرماييد.
سؤال ديگر اينكه اگر چند پست كانديداي يك تسك باشند ؛ بين آنها شرط  OR اعمال ميشود ؟ بعنوان مثال ؛ رييس فروش علاوه بر مجوزهاي كارمندان خود ؛ مجوز تاييد را خواهد داشت ؛ چگونه از طريق POST ميتوان پياده ساري كرد؟( فرض كنيد نخواهيم از روش اسكريپت استفاده نماييم .)
سلام، پاسخ ویرایش شد.

سوال های مشابه

0 رأی
1 جواب میانگین بازدید روزانه 0.1876 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1258 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.1234 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.4351 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.237 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.1851 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.2167 بازدید
سوال 10 ماه قبل در تالار برنامه نویسی توسط nirvana (72 امتیاز)
0 رأی
2 جواب میانگین بازدید روزانه 1.6375 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.2941 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.2343 بازدید
کانال تلگرام جواب یاب
...