/
/
Pool محدودهٔ اصلی نمودار فرآیند را مشخص میکند. Lane کارهای داخل آن محدوده را بر اساس مجری دستهبندی میکند. در GraphBPMS، Lane علاوه بر نظمدادن به نمودار، محل تعیین دسترسی مجریان است؛ بنابراین جابهجایی یک UserTask بین دو Lane میتواند گیرندهٔ کار را تغییر دهد.
برای ساخت مدل، ابتدا مسئولیتها را مشخص کنید، سپس Laneها را بسازید و دسترسی هرکدام را تنظیم کنید. ترتیب اجرای کارها را اتصالها و Gatewayها تعیین میکنند؛ بالا یا پایین بودن Lane بهتنهایی ترتیب اجرا ایجاد نمیکند.
| جزء | چه چیزی را مشخص میکند؟ | نمونهٔ نام مناسب |
|---|---|---|
| Pool | محدوده و عنوان فرآیندی که مدل میکنید | درخواست مرخصی |
| Lane | مسئولیت یا گروه مجریان یک یا چند گام | درخواستکننده، بررسیکننده، مدیر واحد |
| UserTask داخل Lane | کاری که گیرنده باید با فرم انجام دهد | ثبت درخواست، بررسی درخواست |
| Sequence Flow | مسیر حرکت از یک گام به گام بعد | ارسال برای بررسی، برگشت برای اصلاح |
نام Lane را بر اساس مسئولیت بنویسید. نام «بررسیکننده» میتواند ثابت بماند، حتی وقتی شخص بررسیکننده در هر درخواست از روی فرم تعیین میشود. نوشتن نام شخص روی Lane، دسترسی آن شخص را ثبت نمیکند؛ دسترسی باید در پنجرهٔ تنظیمات تعیین شود.
جزئیات اتصال عناصر و ابزارهای انتخاب در استودیوی فرآیند توضیح داده شده است. تنظیم فرم هر کار، ورودی و خروجی آن را در Taskها و Activityها انجام دهید.
↑ بازگشت به فهرست آموزشعنوان Pool و گروه ماژول را پیش از ذخیرهٔ نهایی بررسی کنید. گروه ماژول، محل دستهبندی فرآیند در سامانه است؛ Lane، تقسیم مسئولیتهای داخل نمودار است. این دو را جایگزین یکدیگر نگیرید.
با انتخاب Pool یا Lane، ابزارهای تغییر ساختار در کنار عنصر نمایش داده میشوند. بسته به عنصر انتخابشده میتوانید Lane را در بالا یا پایین اضافه کنید یا محدوده را به دو Lane تقسیم کنید.
برای بزرگتر کردن محدوده، دستگیرههای تغییر اندازه را بکشید. فضای کافی برای عنوانها و مسیرهای برگشت نگه دارید تا خطوط از روی نوشتهٔ گامها عبور نکنند. از ابزار جابهجایی و ایجاد فاصلهٔ بوم برای مرتبکردن مدل استفاده کنید.
پیش از انتقال یک UserTask، گیرندهٔ مقصد را مشخص کنید. سپس کار را داخل Lane مقصد ببرید و بررسی کنید که عنصر واقعاً در محدودهٔ همان Lane قرار گرفته است. خطوط ورودی و خروجی، نام اقدامها و نگاشت فرم را بازبینی کنید.
اگر هدف فقط مرتبکردن شکل است، جابهجایی کار بین Laneها ممکن است تصمیم درستی نباشد. محل کار را داخل همان Lane اصلاح کنید. اگر مسئولیت تغییر کرده است، انتقال کار را با تنظیم دسترسی Lane مقصد همراه کنید.
برای حذف، عنصر موردنظر را انتخاب و Remove را بزنید. پیش از حذف Lane، کارها و اتصالهای داخل آن را بررسی کنید؛ حذف یک محدوده میتواند عناصر وابسته را نیز از نمودار خارج کند. برای بازگرداندن تغییر اخیر بوم، از برگرداندن استفاده کنید.
پس از حذف یا تقسیم Lane، مطمئن شوید گامهای موردنیاز باقی ماندهاند، در Lane درست قرار دارند و هیچ خطی بیمقصد نشده است.
↑ بازگشت به فهرست آموزشPool محدوده Process را در بوم مشخص میکند و Lane مسئولیت و دسترسی بخشهای آن را تعیین میکند. برای تنظیم Pool خود محدوده را انتخاب کنید؛ انتخاب یک Node داخل آن پنل همان Node را باز میکند. پنل Participant شامل شناسه، عنوان، توضیحات، گروه ماژول و تصویر است. انتخاب تصویر و حذف تصویر دو کنترل جدا هستند؛ در نبود تصویر، حذف میتواند غیرفعال باشد.
Lane عنوان، توضیحات و دکمه «تنظیمات دسترسی» دارد. عنوان Lane بهتنهایی کاربر یا نقش مجاز را مشخص نمیکند؛ دسترسی را در پنجره مربوط تنظیم کنید. شناسه Lane برای تشخیص خود عنصر مدل است و با RoleID یا UserID برابر نیست.
تنظیمات دسترسی پنج دسته اصلی دارد: مبتنی بر نقش، مبتنی بر کاربر، ترکیب نقش و کاربر، چارت سازمانی و داده یک Variable. نوع انتخابشده باید با داده و سناریوی ارجاع سازگار باشد.
↑ بازگشت به فهرست آموزش| روش | زمان استفاده | داده یا انتخاب لازم |
|---|---|---|
| مبتنی بر چارت | گیرنده نسبت سازمانی با مجری دارد | ردهٔ همسطح، سطح بالاتر یا سطح پایینتر |
| مبتنی بر نقش | مسئولیت به یک سمت تعلق دارد | یک یا چند نقش |
| مبتنی بر کاربر | شخص مشخص باید کار را دریافت کند | یک یا چند کاربر |
| مبتنی بر نقش و کاربر | هم شخص و هم سمت او اهمیت دارد | ترکیب کاربر و نقش |
| مبتنی بر متغیر | گیرنده برای هر نمونه از داده تعیین میشود | متغیر، نوع شناسه و روش خواندن مقدار |
دسترسی Lane با سطح دسترسی مدیریتی فرآیند متفاوت است. دسترسی مدیریتی تعیین میکند چه کسی فرآیند را ویرایش، کپی یا مدیریت کند؛ دسترسی Lane تعیین میکند کار در اجرا به چه مجری برسد. تنظیمات مدیریتی در لیست فرآیندها قرار دارد.
برای محدودکردن دسترسی، گیرندگان مجاز را صریح انتخاب کنید و فهرست انتخابشدهها را پیش از ذخیره بررسی کنید.
برای محدودکردن دسترسی، گیرندگان مجاز را صریح انتخاب کنید؛ خالیکردن فهرست را معادل منع دسترسی همه نگیرید.
Laneها گامها را براساس مسئولان اجرا تفکیک میکنند. از پنل Lane، «تنظیمات سطح دسترسی» را باز کنید و مشخص کنید کارهای این محدوده به چه کاربر، نقش یا ترکیبی از آنها برسند. همین دسترسی در Lane حاوی Start عادی، تعیین میکند چه کسی Process را در فهرست فرآیندهای قابل شروع ببیند.
| روش | نتیجه انتساب |
|---|---|
| براساس نقش | یک یا چند نقش انتخاب میشود و افراد دارای آن نقشها مسئول گامهای Lane هستند. |
| براساس کاربر | شخص مشخص انتخاب میشود؛ انتساب به نقش خاصی از او محدود نیست. |
| براساس کاربر و نقش | شخص مشخص با نقش مشخص انتخاب میشود. اگر همان شخص با نقش دیگری وارد شود، آن ارجاع را در نقش دیگر نمیبیند. |
پیشنیاز این روش، تعریف سلسلهمراتب نقشهاست. در «پیکربندی سیستم» به صفحه نقشها بروید و «چارت سازمانی» را باز کنید. نقشها و زیرمجموعههای آنها میتوانند سلسلهمراتب چندسطحی بسازند.
در Lane، روش مبتنی بر چارت، نقش مقصد را هنگام اجرا از جای نقش جاری در همان ساختار محاسبه میکند. گزینههای همسطح، سطح بالاتر و سطح پایینتر برای این محاسبه وجود دارند. برای مثال، وقتی نقش جاری کارمند است، انتخاب سطح بالاتر، نقش مافوق تعریفشده در چارت را مقصد قرار میدهد. بنابراین نام مافوق را از نمودار واقعی سازمان بخوانید و عنوان ثابت مدیر را برای همه نقشها فرض نکنید.
برای انتخاب مسئول در زمان اجرا، خروجی مرحله قبلی را به Variable متصل کنید. مثال کاربردی، Form انتخاب یک یا چند جانشین از فهرست کاربران است؛ Lane بعدی شناسههای انتخابشده را از Variable میخواند و کار را به همان گیرندگان میدهد. همین الگو برای فهرست نقشها نیز کاربرد دارد.
نوع شناسه را با داده هماهنگ کنید: داده کاربری با روش کاربر و داده نقش با روش نقش مصرف میشود. در روش پیشرفته، منبع FormData یا ServiceData و مسیر عضو را تعیین کنید؛ برای نمونه ServiceData[1]['Roles'] فیلد Roles ردیف دوم را میخواند. اگر چند شناسه در یک فیلد هستند، آنها را با کاما جدا کنید.
زوج کاربر/نقش قرارداد متفاوتی دارد: هر مورد باید UserID و RoleID را با هم مشخص کند. داده میتواند Object، آرایه Object، JSON رشتهای متناظر یا نتیجه Provider با ستونهای مربوط باشد. مقدار تکفیلدی شناسه کاربر یا نقش، زوج کامل گیرنده را مشخص نمیکند.
در محیط چندسازمانی، OrganizationID نیز همراه UserID و RoleID الزامی است. این مؤلفه تعیین میکند شخص با کدام نقش در کدام سازمان گیرنده باشد. در محیط تکسازمانی نیازی به تفکیک چند سازمان نیست؛ ارسال شناسه همان سازمان نیز مجاز است.
[{"UserID":12,"RoleID":34,"OrganizationID":1}]گزینه «نمایش کارتابل ورودی بر اساس کاربر جاری» برای بازگشت نمونه به همان Lane معنای مشخصی دارد: اگر نمونه قبلاً از Lane عبور کرده و فردی در آن اقدام کرده باشد، در بازگشت کار به آخرین کاربر اقدامکننده همان Lane میرسد. این عنوان را معادل کاربر آغازکننده یا همه دارندگان نقشهای مجاز ندانید.
برای مثال، دسترسی پایه Lane ممکن است شامل چند نقش و صدها کاربر باشد، اما هنگام بازگشت، این گزینه گیرنده را به آخرین فردی محدود میکند که در همان Lane اقدام کرده است. اگر Lane چندین گام داشته باشد نیز معیار، آخرین اقدام در همان Lane است.
↑ بازگشت به فهرست آموزشاز این روش زمانی استفاده کنید که کار باید به مسئولیت سازمانی برسد؛ مثلاً بررسی درخواست بر عهدهٔ نقش «مدیر واحد» است.
کاربری که چند نقش دارد ممکن است برای مشاهده یا انجام کار لازم باشد نقش جاری خود را تغییر دهد. عضویت یک حساب در چند نقش، به این معنا نیست که کارتابل همهٔ نقشها همیشه در یک نمای جاری نمایش داده میشود. در بررسی نتیجه، هم حساب واردشده و هم نقش جاری را در نظر بگیرید.
وقتی کار باید به شخص معینی برسد، مبتنی بر کاربر را انتخاب کنید و کاربر یا کاربران را از فهرست برگزینید. این روش برای مسئولیتهایی مناسب است که شخص، مستقل از تغییر نقش جاری، دریافتکنندهٔ موردنظر است.
در Lane آغاز، با انتخاب یک کاربر مشخص میتوانید شروع فرآیند را به همان شخص محدود کنید. با انتخاب صریح همه کاربران، دامنهٔ مجاز شروع را بازتر میکنید. نام نمایشی شخص و شناسهٔ کاربری او را تطبیق دهید تا همنام بودن کاربران باعث انتخاب اشتباه نشود.
برای انتخاب مجری بر اساس ساختار سازمانی، مبتنی بر چارت را باز و رابطهٔ لازم را انتخاب کنید:
| ردهٔ چارت | کاربرد |
|---|---|
| همسطح | ارجاع به ردهٔ همسطح در ساختار سازمانی |
| سطح بالاتر | ارجاع به ردهٔ بالاتر |
| سطح پایینتر | ارجاع به ردهٔ پایینتر |
نتیجه به ساختار چارت و سمت مرتبط با اجرای فرآیند وابسته است. پیش از انتخاب این روش، ارتباط نقشها در چارت را آماده کنید. نام «مدیر» در عنوان یک Lane یا یک نقش، بهتنهایی رابطهٔ بالادستی ایجاد نمیکند.
نیازمند تأیید فنی: در انتخاب «همسطح»، شمول یا حذف خود نقش مبدأ و نیز اینکه انتساب به اولین نقش یافتهشده محدود است یا همهٔ نقشهای منطبق را شامل میشود، باید در نسخهٔ مقصد بررسی شود. این ابهام به همین دو جزئیات محدود است؛ جهتهای همسطح، بالاتر و پایینتر همچنان براساس ساختار چارت تعیین میشوند.
برای ارجاع از کارشناس یک واحد به مدیر همان واحد، نقش کارشناس را زیر نقش مدیریت مربوط در چارت قرار دهید و دسترسی Lane بررسی را مبتنی بر چارت ← سطح بالاتر تنظیم کنید. مبنای حرکت در چارت، نقش آخرین اقدامکننده است. در نتیجه، اگر دو کارشناس در دو واحد متفاوت کار را ارسال کنند، رابطهٔ بالادستی نقش هرکدام مقصد را تعیین میکند؛ انتخاب یک نقش ثابت برای همهٔ درخواستها این رفتار را ایجاد نمیکند.
گیرنده باید با نقش مقصد وارد کارتابل شود. اگر چند نفر عضو همان نقش مدیریتی باشند، همهٔ اعضای واجد دسترسی آن نقش میتوانند کار را ببینند. برای محدودکردن رسیدگی به یک شخص مشخص، روش نقش و کاربر یا ارجاع مبتنی بر متغیر را متناسب با نیاز انتخاب کنید.
اگر یک شخص باید فقط در یک سمت مشخص مجری باشد، روش مبتنی بر نقش و کاربر را انتخاب کنید. ترکیب نقش و کاربر را تکمیل کنید و ردیفهای انتخابشده را پیش از ذخیره بررسی کنید.
این روش برای حالتی کاربرد دارد که یک حساب چند مسئولیت دارد و صرف تعیین نام شخص یا صرف تعیین نقش کافی نیست. در ارجاع پویا نیز دادهٔ خروجی باید ارتباط شخص با نقش را حفظ کند؛ دو فهرست جداگانهٔ نامرتبط، بیانکنندهٔ زوجهای موردنظر نیستند.
عضویت یک حساب در چند نقش با نقش جاری آن در زمان اقدام یکسان نیست. برای آزمون مبتنی بر نقش، نقش جاری حساب را کنترل کنید؛ برای آزمون مبتنی بر کاربر، از حساب دیگری استفاده کنید. تعویض نقش در همان حساب، آزمون منفیِ «کاربر غیرمجاز» محسوب نمیشود.
دسترسی صفحهٔ کارتابل یا فرآیندهای قابل شروع را جدا از مجوز Lane بررسی کنید. حسابی ممکن است صفحه را ببیند اما مجاز به انجام گام نباشد، یا گیرندهٔ گام باشد اما مسیر ورود به صفحه را نداشته باشد. برای منع دسترسی، از انتخاب صریح گیرندگان مجاز و تنظیم روش مناسب استفاده کنید؛ فهرست خالی را بدون بررسی رفتار کنترل معادل ممنوعیت همگانی نگیرید.
در این حالت نقشهای مجاز را از فهرست موجود به فهرست انتخابشدهها اضافه کنید یا از انتخاب همه نقشها استفاده کنید. جستجو و فیلتر جدولها برای یافتن نقش است؛ وجود نقش در فهرست اولیه به معنی انتخاب آن نیست.
در این حالت هویت کاربران انتخاب میشود. گزینه همه کاربران و فهرست انتخابشدهها را با نقشهای انتخابشده اشتباه نگیرید. کنترل «نمایش کارتابل ورودی براساس کاربر جاری» در این نمای دسترسی غیرفعال است.
هر ردیف یک زوج RoleID و UserID است. حضور یک نقش در چند ردیف با کاربران متفاوت، چند زوج مستقل میسازد؛ نباید نقشها و کاربران را به دو فهرست جدا تبدیل کرد و همه ترکیبهای ممکن را مجاز دانست.
گزینه «نمایش کارتابل ورودی براساس کاربر جاری» در دسترسی نقشمحور اجازه میدهد هنگام بازگشت مسیر به Lane، کار به کاربری برسد که آخرین بار در آن Lane اقدام کرده است. این تنظیم را از گزینه «اولین کاربر از نقش» در User Task جدا نگه دارید؛ محل تنظیم و مسئلهای که حل میکنند متفاوت است.
در نوع چارت سازمانی، رابطه سلسلهمراتبی نقشها مبنای انتخاب گیرنده است. کنترلهای همسطح، سطوح بالاتر و سطوح پایینتر، جهت حرکت در چارت را مشخص میکنند. انتخاب تعداد یا محدوده سطح را با ساختار واقعی سازمان هماهنگ کنید.
چارت از صفحه مدیریت نقشها قابل دسترسی است. درخت چارت، جایگاه نقشها را نشان میدهد و فهرست نقشها برای انتساب به گره منتخب استفاده میشود. پیش از اتکا به دسترسی سلسلهمراتبی، انتساب نقش به گره صحیح را کنترل کنید؛ عنوان مشابه دو نقش دلیلی بر یکسان بودن جایگاه آنها نیست.
از مبتنی بر متغیر زمانی استفاده کنید که گیرنده پیش از اجرا ثابت نیست: درخواستکننده جانشین را در فرم انتخاب میکند یا باید کار به آغازکنندهٔ همان نمونه بازگردد.
در این روش سه تصمیم جداگانه دارید:
اگر متغیر، خودِ شناسهٔ موردنیاز را نگه میدارد، حالت ساده را انتخاب کنید. برای مثال، متغیر کاربر فعلی با نوع دادهٔ مبتنی بر کاربر میتواند شناسهٔ مجری جاری را تأمین کند؛ برای سمت، متغیر سمت فعلی و نوع دادهٔ مبتنی بر نقش متناسب هستند.
عدد «شمارهٔ فرآیند»، «شمارهٔ ارجاع» یا «شمارهٔ رکورد فرم» شناسهٔ کاربر نیست. وجود متغیر در فهرست، به معنی مناسببودن آن برای تعیین مجری نیست.
برای استفاده از دادهٔ خروجی سرویس یا پرسوجو در حالت ساده، نام فیلد شناسه را با نوع دسترسی هماهنگ کنید:
| نوع دسترسی | نام فیلد در دادهٔ خروجی |
|---|---|
| مبتنی بر نقش | RoleID |
| مبتنی بر کاربر | UserID |
مثال: نمونهٔ ساختار خروجی وبسرویس در این حالت، آرایهای با فیلدهای
RoleIDوUserIDاست.Valueدر نمونهٔ زیر جای مقدار هر شناسه قرار گرفته است؛ آن را عیناً بهعنوان شناسه استفاده نکنید.
[{'RoleID': 'Value', 'UserID': 'Value'}]
برای خروجی پرسوجو نیز این فیلدها را در نتیجهٔ SELECT برگردانید؛ شکل انتخاب ستونها SELECT RoleID, UserID FROM ... است. بخش ... باید با منبع واقعی پرسوجوی شما تکمیل شود.
خروجی یک UserTask میتواند اطلاعات رکورد فرم را در متغیر نگه دارد. برای ارجاع به شخص انتخابشده در فرم، باید فیلد همان شخص را از FormData بخوانید.
Janeshin، مسیر عضو فرم چنین است:FormData['Janeshin']
در همین مثال، حالت سادهٔ خروجی فرم میتواند شناسهٔ رکورد ثبتشده را برگرداند. آن شناسه برای بازکردن همان رکورد در UserTask بعدی کاربرد دارد، اما شناسهٔ جانشین نیست. برای نمایش رکورد، ورودی Id فرم را تنظیم کنید؛ برای ارجاع، فیلد گیرنده را بخوانید. این دو تنظیم مستقلاند.
مقدار متغیر دسترسی میتواند یک شناسهٔ کاربر یا چند شناسهٔ جداشده با ویرگول باشد. اگر قرار است کار به چند نفر برسد، شناسهٔ همهٔ کاربران موردنظر را در مقدار گیرنده قرار دهید و نوع دادهٔ متغیر را مبتنی بر کاربر انتخاب کنید.
نکته: مقدار گیرنده باید شناسهٔ کاربر باشد؛ نام نمایشی شخص یا شناسهٔ رکورد درخواست، جای آن را نمیگیرد. در خروجی فرم نیز فیلد حامل این شناسهها را با روش پیشرفته بخوانید.
اگر شناسههای گیرندگان در یکی از اعضای خروجی ServiceTask قرار دارند، متغیر خروجی سرویس را در Lane انتخاب کنید و روش خواندن را پیشرفته قرار دهید. مسیر عضو با ServiceData آغاز میشود؛ شمارهٔ داخل کروشه، ردیف خروجی و نام عضو پس از آن، فیلد حامل شناسهها را مشخص میکند.
مثال: اگر فیلد
AccessPermissionدر اولین ردیف خروجی سرویس شناسههای گیرندگان را نگه دارد، مسیر دسترسی زیر را وارد کنید.AccessPermissionنام فیلد این مثال است؛ نام عضو را با خروجی واقعی سرویس خود تطبیق دهید.
ServiceData[0]['AccessPermission']
اندیس 0 به اولین ردیف اشاره میکند. اگر دادهٔ موردنظر در ردیف دیگری قرار دارد، اندیس همان ردیف را تعیین کنید. سپس نوع دادهٔ متغیر را بر اساس شناسههای نقش یا کاربر موجود در مقدار انتخاب کنید.
تنظیم خروجی سرویس، ساخت متغیر، تفاوت ServiceData و FormData، مسیرهای تودرتو و خواندن JSON رشتهای با جداکنندهٔ * در Taskها و Activityها آمده است. اگر پس از ارجاع به چند نفر باید همه اقدام کنند یا درصدی از رأیها کافی است، Gatewayها و تنظیمات اقدام همان UserTask را نیز تکمیل کنید. دسترسی چندنفره بهتنهایی حد نصاب تصمیم را تعیین نمیکند.
این مثال فقط اولین عضو را انتخاب میکند. اگر هدف ارجاع به چند نفر است، انتخاب [0] همهٔ دریافتکنندگان را برنمیگرداند. خروجی و تنظیم دسترسی را متناسب با تعداد مجریان طراحی کنید و نام واقعی ستون یا عضو را از نتیجهٔ سرویس بردارید.
در ارجاع چندنفره، مقدار میتواند چند شناسه را در قالب موردپشتیبانی فراهم کند؛ از جمله شناسههای جداشده با ویرگول. برای خروجی نقش و کاربر، ساختار زوجها باید حفظ شود. پیش از اتصال، خروجی منبع داده را بررسی کنید تا نام اشخاص، مقدار خالی یا شناسهٔ رکورد تجاری به جای شناسهٔ مجری تحویل نشود.
برای دادهٔ نقش و کاربر، اعضای هر گیرنده باید UserId و RoleId داشته باشند؛ یعنی مشخص شود هر کاربر با کدام نقش مجاز است. رشتهٔ چند شناسهٔ کاربر مانند 12,18 فقط فهرست کاربر را بیان میکند و جای این زوجها را نمیگیرد. نام اعضای خروجی سرویس را با قرارداد گیرندگان تطبیق دهید و نوع دسترسی را مطابق همان داده انتخاب کنید.
«کاربر فعلی» را معادل «آغازکنندهٔ فرآیند» فرض نکنید. با گردش کار، شخصی که در حال اقدام است میتواند تغییر کند. اگر در گامهای بعدی به آغازکننده نیاز دارید، شناسهٔ او را در ابتدای اجرا در دادهٔ فرآیند نگه دارید و در ارجاعهای بعدی همان مقدار را استفاده کنید.
برای نگهداشتن شناسهٔ آغازکننده در متغیر:
نکته: اگر هدف فقط برگشت کار به آخرین اقدامکنندهٔ همان Lane است، گزینهٔ نمایش کارتابل ورودی براساس کاربر جاری این نیاز را مستقیماً پوشش میدهد. روش آن در بخش «برگشت کار به آخرین اقدامکنندهٔ Lane» آمده است.
دو روش کاربردی عبارتاند از ذخیرهٔ شناسه در فیلد درخواستکنندهٔ فرم و نگهداشتن آن در متغیر مشخص فرآیند. در هر دو روش، مقدار آغازکننده باید پیش از تغییر مجری ثبت شده باشد و با خروجی گامهای بعدی بازنویسی نشود.
اگر فیلد درخواستکننده را از متغیر سیستمی پر میکنید، دسترسی ویرایش آن را در فرم متناسب با نیاز ببندید یا آن را در گام ثبت مخفی کنید. مخفیبودن فیلد با خالیبودن مقدار یکسان نیست؛ مقداردهی و ثبت داده را جدا کنترل کنید.
وقتی گیرندگان در زمان اجرا تعیین میشوند، Variable حاوی دسترسی را انتخاب کنید و سپس نوع داده آن را مشخص کنید. Variable باید پیش از ورود به Lane مقدار گرفته باشد؛ انتخاب نام آن بدون تولید داده مناسب، گیرنده معتبر ایجاد نمیکند.
برای دسترسی نقشمحور، خروجی باید فیلد RoleID و برای دسترسی کاربرمحور، فیلد UserID داشته باشد. در دسترسی ترکیبی هر ردیف باید زوج RoleID و UserID همان مجوز را نگه دارد. برای سرویس، نمونه ساختار [{"RoleID":12,"UserID":25}] است؛ برای Query نیز ستونها باید با همین نامهای قراردادی برگردند.
اگر شناسهها داخل یک Property مشخص ذخیره شدهاند، مسیر آن Property را بدهید. مقدار میتواند یک شناسه یا چند شناسه جداشده با کاما مانند 1,2,3,4 باشد. حالت پیشرفته برای نوع مبتنی بر نقش یا مبتنی بر کاربر است؛ پشتیبانی آن را به زوج نقش–کاربر تعمیم ندهید.
| محل داده | نمونه و تفسیر |
|---|---|
| خروجی سرویس | ServiceData[0]['AccessPermission']؛ اولین ردیف خروجی. خروجی یکردیفی هم index صفر دارد. |
| ردیف دوم سرویس | ServiceData[1]['Roles']؛ index یک، ردیف دوم را انتخاب میکند. |
| داده فرم | FormData['AccessPermission']؛ Property ریشه داده فرم. |
| زیرمجموعه فرم | FormData['Children'][0]['AccessPermission']؛ انتخاب عضو آرایه و سپس Property. |
| رشته JSON در Property | ServiceData[0]['Content']*['Token']['PrivateToken']؛ ستاره به معنی عبور از رشته حاوی JSON است. این نمونه فقط قرارداد مسیرخوانی را نشان میدهد و داده توکن، مجوز Lane محسوب نمیشود. |
نام Propertyها و ساختار آرایه باید با داده واقعی یکسان باشد. خطای index، اشتباه در نام فیلد یا انتخاب حالت ساده برای دادهای که فقط ستون AccessPermission دارد، مانع استخراج گیرنده صحیح میشود. ساختار Variable را پیش از ارجاع در محیط تست مشاهده کنید.
↑ بازگشت به فهرست آموزشدر شروع عادی، مجریان Lane آغاز تعیین میکنند چه کسانی امکان شروع آن فرآیند را داشته باشند. برای محدودکردن شروع، دسترسی همان Lane را تغییر دهید؛ تغییر Lane بررسیکننده، مجوز شروع را جایگزین نمیکند.
در بررسی دسترسی، نقش جاری حساب اهمیت دارد. اگر فرآیند با نقش مشخص مجاز شده است، بررسی را در همان نقش انجام دهید. اگر با کاربر مشخص مجاز شده است، تغییر نقش همان حساب الزاماً شخص را از فهرست کاربران مجاز خارج نمیکند.
اگر فرآیند در فهرست قابل شروع دیده نمیشود، علاوه بر Lane آغاز، نسخهٔ فعال و وضعیت فرآیند را در لیست فرآیندها بررسی کنید. برای شروعهای پیام، سرویس و تایمر، تنظیمات اختصاصی Eventها نیز لازم است.
در الگویی که اولین User Task در Lane آغاز قرار دارد، اجرای آغاز میتواند زوج کاربر و نقش آغازکننده را برای همان کار حفظ کند. این رفتار را به همهٔ اعضای نقش در هر مرحله تعمیم ندهید. عبور پیکان از مرز Lane نیز بهخودیخود اثبات نمیکند که کار به شخص دیگری رسیده است؛ گیرندهٔ محاسبهشده و نقش جاری را بررسی کنید.
گزینهٔ نمایش کارتابل ورودی براساس کاربر جاری در پنجرهٔ دسترسی Lane، برای حفظ مجری در مسیرهای برگشتی کاربرد دارد. پس از اینکه شخصی در آن Lane اقدام کرد و فرآیند از Lane عبور کرد، با برگشت فرآیند، دسترسی به آخرین کاربر و مقام اقدامکنندهٔ همان Lane اختصاص مییابد.
این تنظیم برای Lane مشترکی مناسب است که چند کاربر واجد دسترسی دارد، اما اصلاح یک درخواست باید به همان شخصی برسد که قبلاً روی آن کار کرده است.
این گزینه با دریافت مقدار متغیر کاربر فعلی یک کار واحد انجام نمیدهد. یکی از سابقهٔ اقدام در Lane برای بازگشت استفاده میکند؛ دیگری مقدار یک متغیر را در تعیین گیرنده میخواند. همچنین حفظ مجری، نگاشت اطلاعات فرم را انجام نمیدهد؛ برای اصلاح همان درخواست باید ورودی فرم نیز درست باشد.
↑ بازگشت به فهرست آموزشدر مسیر برگشت از بررسی مدیر، @@CurrentUserID لزوماً شناسه درخواستکننده اولیه نیست؛ مقدار آن به کاربر جاریِ اجرای همان نقطه مربوط است. بنابراین ارجاع مستقیم Lane برگشت به این Variable، راه عمومی نگهداشتن آغازکننده نیست.
اگر هدف برگشت به آخرین اقدامکننده همان Lane است، گزینه «نمایش کارتابل ورودی براساس کاربر جاری» را مطابق توضیح همین مقاله به کار ببرید. اگر هدف همواره آغازکننده اولیه است، هویت او را پیش از تغییر مجری در Variable اختصاصی نگه دارید و Lane مقصد را از آن مقدار دهید. یک الگوی آموزشی این است که Service Task شناسه کاربر آغاز را دریافت و همان مقدار را برگرداند، سپس خروجی در Variable ثبت شود؛ شرط این الگو آن است که ثبت هویت پیش از عبور به مجری دیگر انجام شود.
در آزمون، درخواست را با یک کاربر آغاز و با کاربر دیگری بررسی و برگردانید. بررسی کنید کار برگشتی به مخاطب انتخابشده میرسد و صرف عضویت افراد دیگر در نقش عمومی Lane، آنها را مخاطب برگشت نمیکند. رفتار ویژه اولین User Task که مستقیم به Start وصل است، قاعده همه User Taskهای آن Lane نیست.
↑ بازگشت به فهرست آموزشپس از ذخیره، نتیجه را بر اساس رفتار موردنیاز بررسی کنید:
| وضعیت | چه چیزی را بررسی کنید؟ |
|---|---|
| فرآیند برای کاربر مجاز قابل شروع نیست | Lane آغاز، نوع دسترسی، حساب و نقش جاری، نسخهٔ فعال و وضعیت فرآیند |
| کار به نقش میرسد اما به شخص موردنظر اختصاص ندارد | انتخاب روش نقش در برابر کاربر یا نقش و کاربر |
| گیرنده از فرم انتخاب شده ولی کار به فرد دیگری میرسد | مقدار ذخیرهشوندهٔ فیلد، نام فنی عضو، نوع شناسه و مسیر FormData |
| ارجاع پویا با مقدار خالی روبهرو میشود | اجرای گام تولید داده پیش از Lane مقصد و ذخیرهٔ خروجی در متغیر درست |
| کار برگشتی بین مجریان مشترک پخش میشود | گزینهٔ حفظ آخرین اقدامکننده و سابقهٔ اقدام در همان Lane |
| گیرنده درست است ولی فرم خالی یا رکورد دیگری باز میشود | نگاشت Id و حالت فرم در UserTask؛ دسترسی Lane این مورد را تعیین نمیکند |
| پس از انتقال یک Task گیرنده تغییر کرده است | Lane مقصد و عضویت واقعی عنصر در آن |
| خطای دسترسی در اجرا ثبت میشود | مقدار متغیر، وجود کاربر یا نقش مقصد و دادهٔ گیرنده و گردش همان درخواست در کارتابل سوابق |
در یک بررسی کامل، فقط رسیدن درخواست به یک حساب را کنترل نکنید. شروع مجاز، شروع غیرمجاز، گیرندهٔ انتخابشده از فرم، تغییر نقش حساب، دادهٔ خالی و مسیر برگشت را متناسب با مدل خود بررسی کنید. در فرآیندهای قابل شروع درخواست را آغاز و وصول آن را در کارتابل ورودی گیرنده بررسی کنید. برای پیگیری اقدامها، کارتابل سوابق را باز کنید.
↑ بازگشت به فهرست آموزش