آموزش تریگرها (Triggers) در پراسس میکر

تریگر (trigger) قطعه ای از کد PHP است که می تواند در یک فرآیند وارد شود. تریگرها چارچوب مناسبی را برای انجام محاسبات پیچیده و افزودن قابلیت های اضافی به فرآیندها ارائه می دهند.

یک تریگر ProcessMaker مانند یک اسکریپت PHP تجزیه می شود، بنابراین می توان از متغیرها و توابع عادی PHP در داخل تریگرها همراه با متغیرهای موردی ProcessMaker و متغیرهای سیستم  استفاده کرد.

 

زمان بندی تریگر

تریگر ها را می توان در بسیاری از نقاط در طول فرآیند شلیک کرد:

  1. قبل از اجرای یک مرحله (یعنی Dynaforms، اسناد ورودی و اسناد خروجی).
  2. پس از اجرای یک مرحله
  3. قبل از این که کاربری تعیین شود (تعیین می شود) که روی کار بعدی در این فرآیند کار کند.
  4. قبل از این که یک پرونده به کار بعدی در فرآیند هدایت شود.
  5. پس از این که یک پرونده به کار بعدی در این فرآیند هدایت شد.

 

چه زمانی تریگر ها را شلیک کنیم؟

 

   قبل از یک مرحله

   اگر مرحله Dynaform است، این نقطه خوبی برای تنظیم هر متغیر موردی است که در زمینه های Dynaform نمایش داده می شود. اگر مرحله یک سند خروجی است، می توان متغیرهای موردی را طوری تنظیم کرد که در قالب سند خروجی استفاده شوند.

   بعد از یک مرحله

   پس از یک مرحله Dynaform، داده های فیلدهای Dynaform به عنوان متغیرهای بزرگ وجود دارد، اما هنوز به پایگاه داده ارسال نشده است و هرگونه فایل بارگذاری     شده در فیلدهای File هنوز در سیستم فایل ذخیره نشده است. این نکته خوبی برای تغییر داده ها قبل از ارسال است.

هشدار: اگر die ،()exit() یا عملکرد دیگری فراخوانی شود که تکمیل تریگر را متوقف کند، از ذخیره شدن داده ها و فایل های Dynaform در پایگاه داده جلوگیری می کند. برای استفاده از die() یا exit() در یک تریگر، آن را قبل از مرحله بعدی (یا قبل از تعیین تکلیف در آخرین مرحله کار) روشن کنید. متناوباً با PMFSendVariables (APPLICATION ، ...) تماس بگیرید تا متغیرها در حالت فعلی قبل از فراخوانی die() یا exit() ذخیره شوند.

   قبل از واگذاری

   اگر وظیفه بعدی در این فرآیند از تخصیص مبتنی بر ارزش استفاده می کند، این نقطه خوبی برای تنظیم متغیر مورد استفاده برای تعیین کاربر بعدی است. توجه داشته باشید که قبل از تخصیص، تریگرها همیشه فعال می شوند، حتی در کارهای نهایی زمانی که هیچ تکلیف کاربر برای کار بعدی وجود ندارد.

   قبل از مسیریابی

   این یک نقطه خوب برای تنظیم هر متغیری است که توسط شرایط برای هدایت جریان به فعالیت بعدی (کار یا فرایند فرعی) استفاده می شود.

    بعد از مسیریابی

   در این مرحله سابقه کار بعدی قبلاً در پایگاه داده در جدول wf_  .APP_DELEGATION نوشته شده است، بنابراین می توان با پرس و جوهای پایگاه داده مشورت کرد. قبل از این مرحله، وظیفه بعدی و کاربر بعدی را نمی توان به طور دقیق مشخص کرد.

 

متغیرهای case

تریگرها علاوه بر متغیرهای معمولی PHP، می توانند از متغیرهای case استفاده کنند که متغیرهایی هستند که اطلاعات مربوط به یک case در ProcessMaker را در خود نگه می دارند و فقط در حین اجرای آن مورد قابل استفاده هستند. این متغیرها را می توان با کلیک بر روی متغیرها در منوی Process Objects روی نقشه فرآیند تعریف کرد. کنترل های موجود در Dynaforms مانند TextBox ،DropDown ،Grids و غیره می توانند به یک متغیر حروف مرتبط شوند تا مقادیر وارد شده در آن کنترل را نگه دارند. هنگامی که یک کاربر روی دکمه ارسال در Dynaform کلیک می کند، مقادیر موجود در کنترل ها در متغیرهای case آن ها ذخیره می شوند که وقتی داده ها به عنوان مقدار متغیر case وارد می شوند، به طور خودکار برای هر کنترل ایجاد می شوند.

نه تنها می تواند متغیرهای مورد دسترسی را که در لیست متغیرها تعریف شده اند فعال کند، بلکه می تواند متغیرهای case اضافی را نیز تعریف کند. اگر Dynaform بعدی در case از متغیر در یک فیلد استفاده کند، مقدار فیلد به طور خودکار روی مقدار متغیر تنظیم می شود. هنگامی که Dynaform ارسال می شود، مقدار فیلد به متغیر case آن اختصاص داده می شود.

به عنوان مثال، یک تریگر می تواند متغیر caseApplicationDate را تعریف کرده و تاریخ فعلی را در آن ذخیره کند. یک Dynaform بعدی حاوی فیلدی که متغیر آنApplicationDate است، آن تاریخ را نمایش می دهد. کاربر می تواند تاریخ را در Dynaform تغییر دهد که مقدار ذخیره شده در متغیر حروفApplicationDate را تغییر می دهد. یک محرک بعدی می تواند ApplicationDate را بررسی کرده و بر اساس آن تاریخ محاسباتی انجام دهد.

متغیرهای case مانند متغیرهای PHP معمولی تعریف می شوند، با این تفاوت که برای شناسایی آنها به جای $ از، @@, @%, @#, @?, @$ and @= استفاده می کنند. مثلا:

@@myVariable = "Hello world!";

توجه داشته باشید که متغیرهای case فقط وقتی دامنه آن ها باز است. برای ایجاد متغیرهای global که در هر صورت قابل دسترسی است، از این راه حل استفاده کنید.

 

قوانین تایپ متغیرهای موردی

هنگام ارجاع به یک متغیر موردی در یک تریگر، قوانین تایپ زیر را در نظر بگیرید:

    variable_name
    متغیر به عنوان یک رشته تجزیه می شود. اگر در اصل نوع دیگری باشد، به یک رشته تبدیل می شود. بنابراین -1 ، 0 و 12.45 به ترتیب "-1" ، "0" و "12.45" می شوند.
    @٪ variable_name
    متغیر به صورت یک عدد صحیح (یک عدد کامل) تجزیه خواهد شد. اگر در اصل نوع دیگری باشد، به یک عدد صحیح تبدیل می شود. یک عدد واقعی به یک عدد کامل تبدیل می شود، بنابراین 12.99 تبدیل به 12 می شود. بخش اعشاری این عدد کاهش می یابد و هیچ گردشی در تبدیل وجود ندارد. رشته ای که شامل اعداد است به یک عدد کامل تبدیل می شود، بنابراین "655" و "34.19" به ترتیب 655 و 34 می شوند.
    @#variable_name
    متغیر به عنوان یک نوع شناور (یک عدد واقعی با اعشار) تجزیه می شود.
    @؟ variable_name
    متغیر به عنوان رشته ای که در URL استفاده می شود تجزیه می شود. رشته با رمزگذاری PHP() تبدیل می شود، بنابراین همه فاصله ها به صورت مثبت (+) در می آیند و همه نویسه هایی که حروف نیستند، به جز زیر خط (_)، با٪ و سپس 2 رقم هگزادسیمال جایگزین می شوند، به طوری که رشته بتواند در داده های ارسال شده به/از فرم های WWW استفاده شود.
    @$ variable_name
    متغیر به عنوان یک رشته برای استفاده در پرس و جو SQL تجزیه می شود. قبل از هر علامت نقل قول (') یک عکس برگشتی وجود دارد.
    @= نام متغیر
    نوع متغیر تغییر نمی کند و به عنوان نوع اصلی آن تجزیه می شود. همیشه هنگام ارجاع به اشیاء و آرایه ها از این استفاده کنید.

به عنوان مثال، این عبارت از سه متغیر موردی استفاده می کند که به ترتیب به عنوان یک رشته، یک عدد صحیح و نوع اصلی آن تجزیه می شوند.
other_value = @٪ any_number + @= سن - 10؛

جایی که:

    any_number می تواند یک عدد از قسمت متن در Dynaform باشد. این متغیر به عنوان یک عدد صحیح تجزیه می شود.
    سن می تواند زمینه ای در هر Dynaform باشد، اما نوع آن تغییر نمی کند.

تبدیل نوع متغیرهای موردی تنها زمانی اتفاق می افتد که متغیر یک مقدار R باشد، به این معنی که آن چیزی است که در سمت راست یک دستور تخصیص قرار دارد و از موارد زیر اختصاص داده شده است:

L-value (اختصاص داده شده به) = R-value (اختصاص داده شده از) ؛

اگر یک متغیر case یک مقدار L باشد یا به آن اختصاص داده شود، هیچ نوع تبدیل رخ نمی دهد. مثلا:

$x  = @#y;    //R-value, so transformed to float before assignment
$a  = @@b;    //R-value, so transformed to string before assignment
@#c = "40.0"; //@#c is a L-value, so assigned a string and no type conversion
@@d = 40.0;   //@#d is a L-value, so assigned a float and no type conversion

 

توجه به این نکته ضروری است که variable_name از قوانین PHP برای تعریف نام متغیر پیروی می کند. این بدان معناست که یک نام متغیر مورد معتبر در ProcessMaker با یک حرف یا زیر خط شروع می شود و به دنبال آن هر تعداد حروف، اعداد یا زیرخط ها وجود دارد.

متغیرهای موردی به حروف بزرگ حساس هستند، بنابراین myvar ،MyVar و MYVAR سه متغیر متفاوت هستند. در صورت انتقال مقادیر بین تریگرها و Dynaforms، مطمئن شوید که نام متغیر موردی در تریگر با نام متغیر مورد استفاده در قسمت Dynaform یکسان باشد.

متغیرهای موردی ProcessMaker جدا از متغیرهای معمولی PHP ذخیره می شوند، بنابراین یک تریگر با $ myVar و myVar دو متغیر متفاوت خواهد داشت. ProcessMaker مقدار اصلی متغیرهای case را به عنوان متغیرهای PHP معمولی حفظ می کند، بنابراین آنها با استفاده از قوانین تبدیل مختلف تغییر نمی کنند. برای مثال:

 

@=MyVar = 22.345;
$sum = 5 + @%MyVar;       # Use MyVar as the integer 22
$str = "Sum: " . @@MyVar; # Use MyVar as the string "22.345"
                         # @=MyVar still equals its original value of 22.345
$total = @=MyVar + 1;     # $total equals 23.345

 

 

متغیرهای مورد ProcessMaker را نمی توان مانند متغیرهای معمولی PHP در رشته ها وارد کرد. عبارت زیر کار نمی کند:

$str = "My name is @@MyName and my age is @%MyAge.\n";

برای قرار دادن متغیرهای موردی در یک رشته، آن ها را مجدداً به متغیرهای عادی PHP اختصاص دهید و آنها را وارد کنید:

$my_name = @@MyName;
$my_age = @%MyAge;
$str = "My name is $my_name and my age is $my_age.\n";

یا از عملگر نقطه (.) برای اتصال رشته ها با متغیرهای حروف استفاده کنید:

$str = "My name is " . @@MyName . " and my age is " . @%MyAge . ".\n";

 

وقتی یک متغیر موردی که یک عدد صحیح یا یک نقطه شناور است با آن متصل می شود، عملگر نقطه به طور خودکار به یک رشته تبدیل می شود.

 

نحوه استفاده از متغیرهای case

متغیرهای موردی داده های خاص یک مورد را در خود نگه می دارند و می توانند در یک فیلد Dynaform یا یک تریگر تنظیم شوند. بر خلاف متغیرهای سیستم که به طور خودکار توسط ProcessMaker تعریف می شوند، متغیرهای موردی در لیست متغیرهای داخل طراح فرآیند یا با تعریف آن ها در تریگرها تعریف می شوند. هر دو نوع متغیر را می توان در موارد زیر استفاده کرد:

    اسناد خروجی
    اسناد ورودی
    Process File Manager
    باعث می شود
    تعیین مراحل انجام وظایف
    اعلان های Dynaform

برای دسترسی به لیست متغیرهای case و سیستم روی دکمه@@ کلیک کنید.

 

متغیرهای سیستم در Triggers

علاوه بر متغیرهای case، تریگرها همچنین می توانند از متغیرهای سیستم استفاده کنند که متغیرهای از پیش تعریف شده ای هستند که نحوی یکسانی با متغیرهای موردی دارند و اطلاعاتی در مورد سیستم فعلی ProcessMaker در خود دارند.

ProcessMaker دارای متغیرهای سیستم زیر است:

نام متغیر
توضیحات متغیر

@@SYS_LANG

زبان سیستم فعلی در دو حرف ISO 639-1 کد، که به طور پیش فرض "en" (انگلیسی) است.

@@SYS_SKIN

پوسته سیستم فعلی، که به طور پیش فرض نئوکلاسیک در ProcessMaker 3.0.x است.

@@SYS_SYS

نام فعلی فضای کار، که به طور پیش فرض "گردش کار" است.

@@PROCESS

UID فرآیند فعلی

@@TASK

کار فعلی UID

@@APPLICATION

مورد فعلی UID

@@APP_NUMBER

شماره کیس فعلی. نسخه موجود: 3.0.1.8 و بالاتر.

@@USER_LOGGED

UID کاربر فعلی

@@USR_USERNAME 

نام کاربری کاربر فعلی

@%INDEX

شماره نمایندگی تفویض، که یک عدد صحیح مثبت است که وظایف را در یک فرآیند شمارش می کند و از 1 شروع می شود. اگر چندین کار به طور موازی کار می کنند، هر کار یک شماره شاخص متفاوت دارد.

@@PIN

پین 4 کاراکتری، که می تواند برای دسترسی به اطلاعات مورد بدون استفاده از کاربر ثبت شده در موارد زیر استفاده شود:

  http://:/sys///tracker/login

 

@@__ERROR__

در صورت بروز خطای ProcessMaker، این متغیر سیستم حاوی پیام خطا ایجاد می شود. توجه داشته باشید که این متغیر سیستم تنها پس از وقوع یک استثنا ProcessMaker وجود دارد. با خطاهای نحوی در PHP یا جاوا اسکریپت یا خطاهایی که ProcessMaker نمی داند چگونه مدیریت کند ایجاد نمی شود.

توجه: UID مخفف "شناسه منحصر به فرد" است که رشته ای از 32 کاراکتر هگزادسیمال است که اشیاء را در ProcessMaker مشخص می کند. برای یافتن UID ها برای فرآیندها، وظایف، موارد، کاربران، گروه ها و غیره، به مشاوره پایگاه داده های ProcessMaker مراجعه کنید.

 

ایجاد Trigger

گزینه های زیر برای ایجاد محرک در یک پروژه در دسترس است:

ایجاد یک Trigger سفارشی: این گزینه به طراحان فرآیند اجازه می دهد تا تریگرهای سفارشی را در PHP ایجاد کنند.

کپی/وارد کردن تریگرها از یک فرآیند: این گزینه به طراحان فرایند اجازه می دهد تا یک تریگر را از یک فرآیند متفاوت یا مشابه در یک فضای کاری مشابه کپی و وارد کنند.

ایجاد یک Trigger with the Wizard: این گزینه به طراحان فرآیند اجازه می دهد تا با استفاده از Trigger Wizard یک تریگر ایجاد کنند که در آن می توان بر اساس عملکردهای ProcessMaker یا هرگونه ادغام شخص ثالث، تریگر ایجاد کرد.

 

تریگر سفارشی

برای ایجاد یک تریگر سفارشی جدید، به جعبه ابزار Process Objects در Process Map بروید و نشانگر ماوس را روی نماد "+" در کنار گزینه Triggers قرار دهید. بر روی گزینه Create نمایش داده شده در سمت راست کلیک کنید.

یک پنجره جدید باز می شود تا یک تریگر سفارشی جدید در PHP ایجاد کند، همان طور که در تصویر زیر نشان داده شده است:

 

عنوان: فیلد مورد نیاز به تریگر یک عنوان بدهید.

توضیحات: در مورد تریگر می توانید توضیح دهید.

کد: کد PHP را برای تریگر اضافه کنید. برای سهولت خواندن کد و حذف خطاهای بی دقتی، ویرایشگر کد شامل برجسته سازی نحو، پرانتز، مطابقت براکت و شماره گذاری خط است.

دکمه: روی این دکمه کلیک کنید تا یک متغیر سیستم یا مورد را در کد تریگر وارد کنید.

باز کردن ویرایشگر: ویرایشگر را در یک پنجره بزرگ تر باز می کند تا تریگر ها را با کد طولانی تر ویرایش کند. پس از ویرایش کد، روی Apply کلیک کنید تا تغییرات ذخیره شوند، در غیر این صورت آن ها از بین می روند.

لغو: هرگونه تغییر در تریگر را کنار می گذارد و پنجره را می بندد.

ذخیره: تغییرات ایجاد شده در هنگام ایجاد یا ویرایش تریگر را ذخیره می کند.

 

مدیریت تریگرها

برای مشاهده لیست کامل تریگرهای ایجاد شده و سایر گزینه های تریگر، روی گزینه Triggers در جعبه ابزار Process Objects در Process Process کلیک کنید:

پنجره باز شده لیستی از تریگرهایی را که قبلاً در پروژه ایجاد شده اند نشان می دهد:  

 

1. متن برای جستجو: نام تریگری که باید جستجو شود را فیلتر می کند.

2. ایجاد: روی این گزینه کلیک کنید تا یک تریگر سفارشی جدید ایجاد شود. این گزینه در این قسمت توضیح داده شده است.

3. کپی: برای کپی/وارد کردن تریگر از یک فرآیند، روی این گزینه کلیک کنید. این گزینه در این قسمت توضیح داده شده است.

4. Wizard: روی این گزینه کلیک کنید تا یک تریگر جدید بر اساس عملکردهای ProcessMaker یا هرگونه ادغام شخص ثالث دیگر ایجاد شود. این گزینه در این قسمت توضیح داده شده است.

5. Show ID: روی این گزینه کلیک کنید تا شناسه منحصر به فرد تریگر را به دست آورید که رشته ای از 32 کاراکتر هگزادسیمال است که تریگر را به طور منحصر به فرد مشخص می کند.

6. عنوان: عنوان آغازگر. برای مرتب سازی لیست به ترتیب نزولی، روی پیکان رو به پایین کلیک کنید. با کلیک بر روی پیکان بالا لیست را به ترتیب صعودی مرتب کنید.

7. نوع: نوع تریگر ایجاد شده را نشان می دهد. این بخش را بخوانید تا ببینید چه نوع تریگر هایی می توانند ایجاد شوند.

8. ویرایش: روی این گزینه کلیک کنید تا وارد ویرایشگر تریگر شوید.

9. حذف: برای حذف تریگر بر روی این دکمه کلیک کنید.

حذف تریگر ای که هنوز به عنوان یک مرحله در کار تعیین شده است امکان پذیر نیست. در عوض قبل از حذف تریگر، تریگر را به صورت مرحله ای بردارید. اگر تریگر همچنان به عنوان یک مرحله تعیین شده باشد، هشدار زیر نمایش داده می شود:

10. کنترل صفحه بندی: از این کنترل برای حرکت در صفحات استفاده کنید که در هر صفحه 10 فایل را نشان می دهد.

توجه: توصیه می شود در حالی که هنوز مواردی در حال اجرا هستند، ساختار فرآیند را تغییر ندهید.

 

درج یک تریگر در یک فرآیند

پس از ایجاد تریگر، می توان آن را در نقاط مختلف یک فرآیند وارد کرد. با کاربری مانند "admin" که مجوز PM_FACTORY را در نقش خود دارد، وارد ProcessMaker شوید. سپس فرآیند ویرایش را باز کنید. در نقشه فرآیند، روی کاری که در آن تریگر شلیک می شود راست کلیک کرده و گزینه Steps را از منو انتخاب کنید:

برای انتخاب زمان اجرا برای یک تریگر معین، به بخش Triggers در داخل پنل Available Elements بروید و تریگری را که اختصاص داده شده است بگیرید و آن را به جایی که اجرا می شود بکشید. توجه داشته باشید که هنگام گسترش هر مرحله، دو بخش وجود دارد: "قبل (Dynaform، سند ورودی، سند خروجی)" و "بعد (Dynaform، سند ورودی، سند خروجی)". در بخش واگذاری، مراحل را فقط می توان "قبل از تعیین تکلیف" و در بخش "مسیریابی" قرار داد.تریگر ها را می توان "قبل از مسیریابی" یا "بعد از مسیریابی" اختصاص داد.

یک پیام فلش در بالای صفحه نمایش داده می شود که نشان می دهد مرحله به درستی تعیین شده است. عنصر را در فضای خاکستری فعال کنید و مرحله اضافه می شود:

 

 

 

https://wiki.processmaker.com/3.0/Triggers

دیدگاه ها

هیچ دیدگاهی تا به این لحظه در این صفحه ثبت نشده است

دیدگاه خود را در مورد این مطلب بیان کنید.




مشاوره آنلاین