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

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

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

سوال 8 ماه قبل در تالار برنامه نویسی توسط mmajlesi (5 امتیاز)
تغییر تالار 8 ماه قبل توسط 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}


 

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

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

0 رأی
1 جواب میانگین بازدید روزانه 0.1969 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1358 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.1229 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.5535 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.2533 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.247 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.2464 بازدید
سوال 8 ماه قبل در تالار برنامه نویسی توسط nirvana (70 امتیاز)
+1 رأی
1 جواب میانگین بازدید روزانه 0.4236 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.2835 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.2152 بازدید
کانال تلگرام جواب یاب
...