0 امتیاز
قبل در برنامه نویسی توسط (5 امتیاز)
دوباره دسته بندی کردن قبل توسط

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

1 پاسخ

0 امتیاز
قبل توسط (1.4هزار امتیاز)
ویرایش شده قبل توسط

معمولا در تخصیص کارِ یک کار از تلفیقی از معیارهای مختلف استفاده می‌شود: مثلا "نقش و سازمان" یا "سطح سمت و سازمان". کم پیش می‌آید که یک یا چند سمت به صورت استاتیک به عنوان مسئول کار تعیین شود.
ولی اگر چنین چیزی می‌خواهید، باید در یک اسکریپت، 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}


 

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

سوالات مشابه

0 امتیاز
1 پاسخ 855 بازدید
0 امتیاز
1 پاسخ 341 بازدید
0 امتیاز
0 پاسخ 418 بازدید
0 امتیاز
1 پاسخ 369 بازدید
+1 امتیاز
1 پاسخ 399 بازدید
+1 امتیاز
1 پاسخ 292 بازدید
0 امتیاز
2 پاسخ 970 بازدید
+1 امتیاز
1 پاسخ 311 بازدید
...