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

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

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

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


 

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

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

0 رأی
1 جواب میانگین بازدید روزانه 0.1799 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1171 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.0942 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.2469 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1657 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.1671 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.1784 بازدید
سوال 1 سال قبل در تالار برنامه نویسی توسط nirvana (94 امتیاز)
0 رأی
2 جواب میانگین بازدید روزانه 0.4594 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.1753 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1863 بازدید
کانال تلگرام جواب یاب
...