/
/
Variable واسطه انتقال داده میان گامهاست. از Toolbar استودیو «مدیریت متغیرها» را باز کنید. فهرست سه ستون عنوان متغیر، نام متغیر و مقدار دارد. در نوار کناری، «همه متغیرها»، «متغیرهای سیستمی» و «متغیرهای فرآیند» را برای محدودکردن نمایش انتخاب کنید.
perm و نام @@perm است.جستجوی کل جدول، فیلتر زیر ستونها، انتخاب ردیف و صفحهبندی در فهرست وجود دارد. دکمههای «تأیید» و «بستن» مربوط به پنجره مدیریتاند؛ «ذخیره متغیر» مربوط به جزئیات Variable است. نام Variable و مسیر داده آن را با عنوان نمایشی اشتباه نگیرید.
↑ بازگشت به فهرست آموزش| نام در رابط | کاربرد عنوانشده |
|---|---|
| @@processID | شماره Process؛ شناسه تعریف نسخه را با نمونه اجرا یکی ندانید. |
| @@RefrenceID | شماره ارجاع؛ املای نمایشدادهشده در فهرست همین شکل است. |
| @@ProcessCreationID | شماره ایجاد Process؛ شناسه نمونه اجرا. |
| @@CurrentRoleID | سمت فعلی. |
| @@CurrentUserID | کاربر فعلی. |
| @@FormRecordID | شماره Record فعلی Form. |
| @@StartFromService | آغاز Process از طریق سرویس. |
| @@FormID | شماره فرم ارسالی از سرویس شروع. |
| @@RecordID | شماره ردیف ارسالی از سرویس شروع. |
| @@CurrentSteps | شماره گام جاری. |
| @@MobileRecordData | داده ارسالی از شروع موبایلی. |
| @@CurrentOrganizationId | سازمان فعلی. |
املای Variableهای سیستمی را از انتخابگر همان استقرار بردارید. نام @@RefrenceID در فهرست، Property ReferenceID در پاسخ اجرا و ReferencesID در getProcessInfo() سه قرارداد نوشتاری متفاوتاند و نباید خودکار به یکدیگر تبدیل شوند.
ساختار داده با Node تولیدکننده ارتباط دارد. خروجی User Task با FormData نگهداری میشود و همراه آن FormID وجود دارد. خروجی Service Task و Nodeهای سرویسمحور با ServiceData و معمولاً به شکل آرایه Recordها در دسترس است.
| ساختار | Nodeهای ذکرشده در راهنمای انتساب |
|---|---|
| FormData | UserTask |
| ServiceData | ServiceTask، GraphMobileTask، SendTask، ReceiveTask، ScriptTask، MessageStartEvent، SignalStartEvent، SignalIntermediateCatchEvent، ErrorBoundaryEvent، GraphMobileStartEvent، MessageBoundaryEvent و CallActivityTask |
نمونه ساختار فرم، شامل Object، آرایه، SubForm و یک Property حاوی JSON رشتهای است:
{
"FormID": 22193,
"FormData": {
"Id": 22193,
"RegDate": "2023-12-02T17:38:43",
"FK_RoleId": 22,
"IsPlaceClosed": true,
"WorkingHours": {"Morning": "8 am to 2 pm", "Night": "5 pm to 11 pm"},
"History": [11, 12, 123, 546, 12, 13],
"Report": "{\"Employees\":[{\"Num\":12,\"Name\":\"Sample A\"},{\"Num\":13,\"Name\":\"Sample B\"}]}",
"EndWorkChkListSubmit": [{"Id":12329,"RegDate":"2023-12-02T17:38:43","FK_UserId":7037}]
}
}نمونه خروجی سرویس، دو ردیف دارد. Index بیرونی، ردیف ServiceData را تعیین میکند؛ Index آرایه داخلی، عضو آن Property را.
{
"ServiceData": [
{"Id":267,"Name":"Sample A","RegDateTime":"2024-04-12T10:14:44.35",
"Details":"{\"Children\":[{\"Num\":89,\"Name\":\"Child A\",\"Age\":\"25\"},{\"Num\":93,\"Name\":\"Child B\",\"Age\":\"23\"}]}",
"RelatedIds":[1,2,3],"FavoriteFood":{"Name":"Spaghetti","Comment":"17 from 20"}},
{"Id":325,"Name":"Sample B","RegDateTime":"2014-04-12T10:14:44.35",
"Details":"{\"Children\":[{\"Num\":12,\"Name\":\"Child C\",\"Age\":\"11\"},{\"Num\":13,\"Name\":\"Child D\",\"Age\":\"11\"}]}",
"RelatedIds":[3,4,5],"FavoriteFood":{"Name":"Pizza","Comment":"18 from 20"}}
]
}↑ بازگشت به فهرست آموزش| انتخاب | رفتار |
|---|---|
| هیچکدام / None | برای فیلد یا پارامتر مقدار در نظر گرفته نمیشود. |
| مقدار براساس متغیر | Variable را انتخاب و روش ساده یا پیشرفته خواندن آن را تعیین کنید. |
| مقدار ثابت | مقدار را دستی وارد کنید. |
| مقدار براساس تابع | تابع را به شکل متنی مطابق قرارداد همان ورودی فراخوانی کنید. |
روش ساده به تنظیم مسیر نیاز ندارد و اولین مقدار قابل برداشت را مصرف میکند. در ServiceData نمونه، اولین ستون اولین ردیف یعنی 267 خوانده میشود. این رفتار را به معنی خواندن خودکار Property دلخواه ندانید؛ برای ستون دیگر روش پیشرفته را انتخاب کنید.
نوع داده را FormData یا ServiceData انتخاب کنید. برای ServiceData، Index ردیف و سپس مسیر Property را وارد کنید. Indexها از صفر شروع میشوند. گزینه «همه دادهها» در FormData کل Object و در ServiceData کل آرایه را به JSON رشتهای تبدیل میکند؛ نتیجه، یک مقدار منفرد از اولین ردیف نیست.
↑ بازگشت به فهرست آموزش| نیاز | مسیر در بخش مسیر ذخیرهسازی | نتیجه در مثال |
|---|---|---|
| یک Property | ['RegDate'] | تاریخ ثبت |
| عضو دوم آرایه | ['History'][1] | 12 |
| Property داخل Object | ['WorkingHours']['Morning'] | 8 am to 2 pm |
| Property داخل JSON رشتهای | ['Report']*['Employees'][0]['Name'] | نام اولین عضو Employees پس از Parse رشته Report |
| اولین Record یک SubForm | ['EndWorkChkListSubmit'][0]['FK_UserId'] | 7037 |
در کنترلهایی که مسیر کامل را میپذیرند، پیشوند FormData پیش از مسیر قرار میگیرد؛ در کنترلهایی که نوع داده جدا انتخاب میشود، مسیر را مطابق راهنمای همان فیلد وارد کنید. نماد * مرز Parse کردن یک رشته JSON است و برای Object معمولی لازم نیست.
| نیاز | Index ردیف اصلی | مسیر |
|---|---|---|
| نام ردیف دوم | 1 | ['Name'] |
| عضو دوم RelatedIds ردیف اول | 0 | ['RelatedIds'][1] |
| Comment در FavoriteFood ردیف دوم | 1 | ['FavoriteFood']['Comment'] |
| Num اولین Child داخل JSON ردیف اول | 0 | ['Details']*['Children'][0]['Num'] |
| نام Child دوم در JSON ردیف دوم | 1 | ['Details']*['Children'][1]['Name'] |
برای داده تکردیفی، Index معمولاً 0 است. انتخاب Index ناموجود یا مسیر نادرست داده موردنظر را تولید نمیکند؛ ساختار واقعی Variable Log را پیش از تنظیم مصرفکننده بررسی کنید. JSON رشتهای باید معتبر باشد تا خواندن Property پس از * معنا داشته باشد.
«تنظیمات عنوان اختیاری» عنوان اختصاصی نمونه را برای مرحله تعیین میکند. عنوان واردشده از گام بعدی قابل مشاهده است. با فعال بودن «افزودن به ادامه عنوان قبل»، متن به عنوان قبلی متصل میشود؛ فاصله یا جداکننده را صریح در متن وارد کنید و به ایجاد خودکار خط جدید متکی نباشید. در حالت غیرفعال، عنوان جایگزین میشود. عنوان اختیاری همان ProcessCreationTitle است؛ Variableهای در دسترس تا پیش از اجرای گام جاری قابل استفادهاند و نباید خروجی هنوز تولیدنشده همین گام را برای آن فرض کرد.
برای درج داده در متن از قالبهای زیر استفاده کنید. وجود علامت Pipe در ابتدا و انتهای هر ارجاع الزامی است.
|V_VariableName|
|V_VariableName:ServiceData[0]['PropertyName']|
|V_VariableName:FormData['PropertyName']|
|V_VariableName:ServiceData[0]*['PropertyName']|
|V_VariableName:FormData*['PropertyName']|قالب بدون مسیر برای داده منفرد یا اولین مقدار است. دو قالب پایانی برای زمانیاند که قسمت انتخابشده JSON رشتهای است. نام Variable و نام Property واقعی را جایگزین نمونه کنید؛ پیشوند V_ متعلق به متن قالبدار است و با نمایش @@ در فهرست Variable یکسان نوشته نمیشود.
«تنظیمات اعلان شرح ارجاع» نیز متن متغیردار را میپذیرد و نوع شرح ارجاع سفارشی دارد؛ نمونه تصویر «اخطار» است. شرح ارجاع مربوط به گام را فعال و متن و نوع آن را تعیین کنید.
عنوان اجرای Process، عنوان Node و شرح ارجاع سه تنظیم مستقلاند. شرح نوشتهشده توسط کاربر در فرم نیز تنظیم دریافت و نمایش خود را در User Task دارد.
↑ بازگشت به فهرست آموزشپنل مدیریت متغیرها، تعریف Variable را نگه میدارد. مقدارهایی که هنگام عبور یک ProcessCreation از گامها تولید میشوند، متعلق به همان نمونه اجراییاند. متغیرهای سیستمی بهوسیله موتور و در زمان نیاز مقدار میگیرند و طراح آنها را حذف، ویرایش یا دستی پر نمیکند.
هنگام خواندن یک Variable، آخرین مقدار ثبتشده آن در نمونه جاری براساس زمان ثبت خوانده میشود. اگر Script Task در @@perm بنویسد و سپس Service Task مقدار جدیدی در همان Variable ثبت کند، User Task بعدی مقدار Service Task را میگیرد. وجود سابقه قدیمیتر، باعث برگشت خواندن به آن مقدار نمیشود.
مقدار ثابت تعریف Variable، مقدار پیشفرض است: موتور ابتدا آخرین مقدار اجرایی ثبتشده را جستجو میکند؛ اگر چنین مقداری موجود نباشد، پیشفرض تعریفشده خوانده میشود. بنابراین پیشفرض را با مقدار جدیدی که گامها تولید میکنند یکی ندانید.
@@processID به ورژن تعریف Process و @@CurrentSteps به تعریف گام جاری مربوطاند. در مقابل، @@ProcessCreationID شناسه اجرای مشخص Process و @@RefrenceID شناسه ارجاع اجرایی است. چند نمونه میتوانند به یک گام تعریفشده برسند، اما اجرای آنها یک نمونه یا یک ارجاع مشترک نیست. این شناسهها را در APIها و نگاشتها به جای یکدیگر قرار ندهید.
@@FormRecordID شناسه آخرین Record ثبتشده از Form را تا نقطه جاری Process میدهد؛ ثبت میتواند Insert یا Edit باشد. برای مثال، Service Task پس از User Task میتواند شناسه Record ثبتشده را از این Variable بخواند، بدون اینکه صرفاً برای شناسه رکورد، خروجی دستی جداگانه ساخته باشید. موتور این مقدار را از آخرین داده ثبتشده User Task پیدا میکند.
@@FormID و @@RecordID مفهوم دیگری دارند: اگر دکمه یک Form مستقل Process را آغاز کرده باشد، این دو شناسه Form مبدأ و ردیف مبدأ آغاز را در اختیار Process میگذارند. آنها را معادل آخرین Record ثبتشده در User Taskهای بعدی فرض نکنید.
@@StartFromService برای آغاز از Graph Mobile Start، Timer Start، Start By Catch Signal و Message Start برابر 1 است. برای Start عادی از منوی فرآیندهای قابل شروع، مقدار 0 است. @@CurrentOrganizationId سازمان جاری را میدهد؛ در محیط چندسازمانی، سازمان اجرا را مانند کاربر و نقش جاری از زمینه اجرای همان نمونه بخوانید.
مقدارهای قبلی Variable در تاریخچه اجرایی باقی میمانند. پس از پایان واقعی نمونه، تاریخچه متغیرها از بخش فعال به آرشیو منتقل میشود تا نگهداری اجرای جاری سبکتر باشد. در توضیح فنی موتور، پایان با وضعیت پایانیافته نمونه و نبود ارجاع منتظر همراه است؛ اگر شاخه دیگری از Process هنوز در انتظار باشد، رسیدن یک شاخه به End را پایان همه انتظارها فرض نکنید.
Variable واسط انتقال داده میان گامهاست؛ برای انتقال داده Form از یک User Task به User Task دیگر نیز خروجی مرحله مبدأ را در Variable نگهداری و در مرحله مقصد مصرف کنید.
↑ بازگشت به فهرست آموزش«عنوان اختیاری» مقدار عنوان ProcessCreation را تنظیم میکند؛ همین عنوان در ستون عنوان کارتابل ورودی و سایر نمایشهای عنوان نمونه دیده میشود. این تنظیم را با عنوان خود Node روی بوم و «شرح ارجاع» اشتباه نگیرید.
اگر «افزودن به عنوان قبلی» را فعال کنید، متن تازه به عنوان موجود افزوده میشود. سامانه قرار نیست جداکننده دلخواه را حدس بزند؛ فاصله، خط تیره یا عبارت رابط را خودتان در متن قرار دهید.
در این عنوان میتوان از Variableهای دارای مقدار تا پیش از گام جاری استفاده کرد. خروجیای را که همین گام قرار است تازه تولید کند، مبنای عنوان همان گام قرار ندهید. منبع مقدار میتواند FormData یا ServiceData و انتخاب همه دادهها یا مسیر عضو باشد.
اگر تا نقطهٔ جاری هیچ عنوان اختیاری برای نمونه اعمال نشده باشد، سامانه عنوان پیشفرض نمونه را میسازد. با اعمال عنوان اختیاری در گامهای بعد، نتیجهٔ افزودن یا جایگزینی در عنوان همین نمونه و نمایش کارتابل آن منعکس میشود.
↑ بازگشت به فهرست آموزششرح ارجاع، پیام مرتبط با گردش کار است و با عنوان نمونه تفاوت دارد. در Taskها، Gatewayها و بسیاری از Eventها میتوان آن را از متن یا Variable ساخت. هنگام نمایش شرح در Form، آخرین شرح ثبتشده خوانده میشود؛ ستون شرح ارجاع کارتابل نیز محل مستقل نمایش این پیام است.
نوع پیام بر رنگ نمایش اثر میگذارد: موفقیتآمیز/Success سبز، هشدار/Warning زرد و اخطار/Error قرمز است. برای نمونه، پس از مسیر رسیدگی به خطا میتوانید شرح را از Variable حاوی عنوان خطا بسازید و نوع آن را متناسب با پیام تعیین کنید.
در User Task، «نمایش شرح ارجاع» پیام قبلی را در بالای Form نشان میدهد. «ثبت شرح ارجاع» ورودی نوشتن شرح جدید توسط کاربر را فراهم میکند؛ با فعالکردن اجباریبودن، کاربر باید شرح را پر کند. گزینه انتخاب نوع شرح نیز تعیین موفقیتآمیز، هشدار یا اخطار را در اختیار کاربر میگذارد. نمایش شرح قبلی و الزام کاربر به نوشتن شرح تازه دو تنظیم مستقلاند.
↑ بازگشت به فهرست آموزشفرض کنید Provider سه ردیف زیر را برگرداند؛ ترتیب ستونها با Id شروع میشود و Detail در هر ردیف یک JSON رشتهای است. دادههای این تمرین نمونه آموزشیاند.
{"ServiceData":[
{"Id":1,"FirstName":"Max","LastName":"Payne","Detail":"{\"Job\":\"Detective\",\"Age\":36}"},
{"Id":2,"FirstName":"Lara","LastName":"Croft","Detail":"{\"Job\":\"Adventurer\",\"Age\":21}"},
{"Id":3,"FirstName":"Nathan","LastName":"Drake","Detail":"{\"Job\":\"Thief\",\"Age\":32}"}
]}
| فیلد مقصد | انتساب | نتیجه |
|---|---|---|
| اول | @@LookupData، حالت ساده | 1؛ اولین ستونِ اولین ردیف |
| دوم | @@LookupData:ServiceData[1]['FirstName'] | Lara |
| سوم | @@LookupData:ServiceData[0]['Id'] | 1 |
| چهارم | @@LookupData:ServiceData[2]['LastName'] | Drake |
| پنجم | @@LookupData:ServiceData[1]['Detail']*['Age'] | 21 |
Index ردیف از صفر شروع میشود. علامت * برای ورود به JSON رشتهایِ Detail است؛ برای Object ازپیشساختیافته آن را بیدلیل اضافه نکنید. اگر داخل Detail آرایهای وجود داشته باشد، پس از بازکردن JSON باید Index همان آرایه را نیز مشخص کنید.
برای انتقال همه ردیفها به SubForm سازگار، مسیر @@LookupData:ServiceData و گزینه «همه دادهها» را انتخاب کنید. نتیجه، آرایه داخلی است و wrapper با کلید ServiceData بهعنوان یک ردیف به SubForm داده نمیشود. در این حالت، Index و مسیر یک ستون کاربرد ندارند. در مقابل، FormData معمولاً Object یک فرم است و قبل از نام فیلد آن، Index ردیف سرویس قرار نمیگیرد.