vdcasino
betexper
imajbet
perabet
casinomaxi
ilbet

چنانچه در هریک از مراحل نصب یا کاربری نرم‌افزارها به مشکلی برخورد کرده‌اید یا هر سوال، اشکال یا ابهامی در این زمینه دارید، می‌توانید پاسخ خود را ابتدا در مطالب موجود جستجو و در صورت لزوم به عنوان یک مبحث جدید مطرح کنید، تا کارشناسان پشتیبانی به آن پاسخ دهند.

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

انجمن های پشتیبانی سیمرغ نوسا

قبليقبلي Go to previous topic
بعديبعدي Go to next topic
آخرين ارسال 12 شهریور 1404 01:41 ب.ظ توسط  Tariverdi
فهرست گردش کارهای یک پایگاه خاص (WS_GetWorkflowList)
 0 پاسخ
مرتب:
شما مجاز به پاسخ به اين پست نمي باشيد.
مولف پيغام ها


کاربر باتجربه


کاربر باتجربه


--
12 شهریور 1404 01:41 ب.ظ

    فهرست گردش کارها

    function WS_GetWorkflowList(const ADBName: String; AnActivationMask: Integer;

                   ACheckUserStartAccess: Boolean, AFilterBlocked: Boolean, ADOAddByWizardKey: Integer): String;

    Created: Version 12.10.00

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

    شرح پارامترهای تابع
    • ADBName (نام پایگاه) : نام پایگاه بصورت رشته حرفی درج می شود. برای مثال "_ReposXP_Workflow"
    • AnActivationMask (روش آغاز کار): دسته‌بندی "روش آغاز کار" گردش کار را تعیین می‌کند. این پارامتر، پنج بیت قابل تعیین به شرح زیر دارد:

      wamManual        = 0;        با روش دستی  

      wamSubWorkflow   = 1;از درون یک گردش کار (زیرگردش کار) 

      wamScheduler     = 2;   توسط برنامه ریز ویندوز  

      wamCPU           = 3; از درون برنامه گردش کار  

      wamEvent         = 4;  با دریافت رخداد       

    در واقع این پارامتر، متناظر است با تنظیمات روش  آغاز کار در محاوره اصلاح وضعیت آغاز که در شکل زیر ملاحظه می کنید:

    روش محاسبه مقدار پارامتر

    همانطور که گفته شد هر گزینه یک بیت با یک عدد خاص است که مقدار عدد هر گزینه، برابر با 2 به توان آن عدد است. به این ترتیب مقدار هر گزینه به شرح زیر محاسبه می شود:

    روش دستی: 20  = 1 

    از درون یک گردش کار: 2=2

    توسط برنامه ریز ویندوز:  22= 4

    از درون برنامه:  23= 8

    با دریافت رخداد:  24= 16

    اگر چند گزینه را مد نظر داشته باشید ، مقدار این پارامتر برابر با مجموع مقادیر گزینه ها خواهد بود. برای مثال اگر فقط گردش کارهای «با روش دستی» و «با دریافت رخداد» را می خواهید باید مقدار 1+16=17 و یا اگر فقط گردش کارهای با روش «آغاز از درون برنامه» و «توسط برنامه ریز ویندوز» را مد نظر دارید باید مقدار 8+4=12 برای این پارامتر اختصاص دهید.

    نکته مهم: مقدار 1- به معنی انتخاب تمام گزینه هاست.

     

    • ACheckUserStartAccess (بررسی وضعیت مجاز بودن کاربر برای آغاز کار): با درج یک مقدار Boolean در این پارامتر، گردش کارها براساس وضعیت مجاز بودن آغاز کار برای کاربر چک می شود. یعنی با مقدار True  فقط گردش کارهایی فهرست می شود که در آنها کاربر اجازه آغاز کار دارد و با مقدار False تمام گردش کارها انتخاب می شود.

    توضیح: این پارامتر، اختیار انجام وظیفه آغاز را بررسی می کند و کاری به مجاز بودن کاربر در روشهای از پیش تعیین شده برای ایجاد منبع دیجیتال (کار) ندارد.

    • AFilterBlocked (فیلتر گردش کارهای مسدود شده): این پارامتر یک مقدار Boolean می گیرد که وضعیت نمایش کارهای مسدود شده را تعیین می کند. به این ترتیب مقدار True، گردش کارهای مسدود شده را فیلتر می کند و شامل نمی شود. به عبارت دیگر گردش کارهای مسدودشده از فهرست گردش کارها حذف می شود. اما مقدار False گردش کارهای مسدود شده را نیز شامل می‌شود.

     

    • ADOAddByWizardKey (کلید روش از پیش تعریف شده افزودن منابع دیجیتال): همانطور که می دانید هر گردش کار به یک (یا چند) روش از پیش تعریف شده افزودن منابع دیجیتال مرتبط است. لذا از طریق این پارامتر عددی می توانید گردش کارها را بر اساس یک روش از پیش تعریف شده خاص ، فیلتر کنید.
    فرمت خروجی تابع

    خروجی (پاسخ) این تابع یک رشته حرفی به فرمت Json و به شکل مثال زیر است:

    {"_ErrNo":"0",  کد خطا  

     "WorkflowArray":[

            {"_Key":"4",  کلید گردش کار  

             "_Name":"\u062A\u0633\u062A 1",   نام گردش کار    

             "_EngName":"English Name", نام انگلیسی گردش کار   

             "_Code":"3",  کد گردش کار   

             "_Desc": "\u062A\u0633\u062A 1",   یادداشت  گردش کار   

             "_ActivationMethods": "3",  روشهای آغاز کار 

             "_StartTask": "133", کلید وظیفه آغاز  

             "_Blocked": "0",  وضعیت مسدودی

             "_Category": "0",  کلید دسته بندی

             "_ShowInMenu": "0", وضعیت حضور در منوی کلاینت وب

              "StartTaskArray": [{"_Key":"133"},   آرایه کلیدهای وظایف آغاز      

                          {"_Key":"134"}]},

               .

    .

     ]}

     

    همانطور که ملاحظه می کنید این رشته حرفی به فرم Json  شامل اعضای با دو ویژگی به شرح است :

    1. _ErrNo )شماره خطا (: اگر اجرای تابع با خطا روبرو شود در اینجا کد خطا نمایش داده می شود. شماره 0  به معنی عدم وجود خطاست.
    2. _WorkflowArray (آرایه گردش کارها): در این ویژگی، که به شکل آرایه است، ویژگی های اصلی گردش کار(ها) به شرح زیر ثبت می شود:
    • _Key (کلید گردش کار)
    • _Name (نام گردش کار): همانطور که در مثال هم می بینید اگر نام گردش کار به فارسی باشد، کاراکترهای فارسی به شکل Escaped Unicode ذخیره می شود.  در این مثال نام گردش کار "تست 1" بوده که به صورت «\u062A\u0633\u062A 1» ذخیره شده است.
    • برای اطمینان از قابل تفسیر و Decode شدن داده ها در انواع پایگاههای داده ، در استاندارد Json کاراکترهای غیر انگلیسی به شکل Escaped Unicode ذخیره می شود که ساختار آن شامل کاراکترهای /u و یک عدد مبنای 16 (Hexadecimal)است.
    • _EngName (نام لاتین گردش کار)
    • _Code (کد گردش کار)
    • _Desc (یادداشت گردش کار)
    • _ActivationMethods (روشهای آغاز کار در گردش کار): در اینجا روشهای آغاز کار به شکل یک عدد Bitwise ذخیره می شود که توضیحات آن در بخشهای قبلی داده شده است . برای مثال عدد 3 نشان دهنده این است که روش های آغاز کار در این گردش کار، روش «دستی» و روش «از درون گردش کار» است.
    • _StartTask (کلید وظیفه آغاز): در مواردی که گردش کار یک وظیفه آغاز دارد، این عدد، کلید وظیفه آغاز است اما درمواردی که بیش از یک وظیفه آغاز موجود است این ویژگی ، کلید اولین وظیفه آغاز به ترتیب کد وظیفه است. در مورد وظایف آغاز متعدد در انتهای این بخش بیشتر توضیح داده شده است.
    • _Blocked (وضعیت مسدود بودن): این ویژگی شامل یک محتوای Boolean است که عدد 1 به معنی مسدود شده و عدد صفر به معنی عدم مسدود بودن است.
    • _Category (کلید دسته بندی گردش کار)
    • _ShowInMenu (وضعیت نمایش در منوی کلاینت وب): اگر بیاد داشته باشید، در کلاینت وب امکان نمایش گردش کارهای مدیریتی و نظارتی در منو وجود دارد. برای مثال به منوی کلاینت وب در شکل زیر توجه کنید:

     

    در این مثال همانطور که ملاحظه می کنید، گردش کار «اعلام سررسید قراردادها» در منوی کلاینت وب قرار دارد. در هر صورت در این ویژگی که از نوع Boolean است، عدد 1 به معنی نمایش در منوست و عدد صفر یعنی این گردش کار در منوی کلاینت وب وجود ندارد.

    • StartTaskArray (آرایه کلید وظایف آغاز): در مواردی که یک گردش کار دارای بیش از یک وظیفه آغاز باشد، این ویژگی، آرایه ای از کلیدهای وظایف آغاز را شامل می شود. توضیح این که اولین عضو این آرایه همان ویژگی _StartTask است که در بالا توضیح داده شد.

    توضیح: چون در نسخه های اولیه سیستم مدیریت فرایندها، قابلیت تعدد وظایف آغاز وجود نداشت لذا ویژگی _StartTask برای سازگاری با نسخه های فبلی حفظ شده است.

    مثالها

    قبل از این که به مثالها بپردازیم لازم به توضیح است که در مثالها ابتدا از تابع JSON.stringify با هدف نمایش داده ها و آشنایی بیشتر با محتوای خروجی GetWorkflowList استفاده شده است. و در انتها با استفاده از تابع JSON.parse مثالی از استخراج داده های مورد نظر ارائه شده است.

    مثال 1: فهرست گردش کارهای پایگاه تست گردش کار که از نوع زیرگردش هستند یعنی روش آغاز کار در آنها «از درون یک گردش کار» است و کاربر اجازه آغاز کار در این گردش کارها را دارد:

    برای این کار از تابع اجرایی زیر استفاده می کنیم:

     

    function WorkTaskWorkflowList () {

       ReposUtils.HostURL = "nosa-test";

       ReposUtils.UserName = "nosa/tariverdi";

       var res="";

       res=ReposUtils.WS_GetWorkflowList("_ReposXP_workflow", 2, true, false);

       let farsiRes=jsonToArray(res);

       WorkState.ReturnText=JSON.stringify(farsiRes);

    }

     

    ملاحظه می کنید که پارامترهای تابع WS_GetWorkfloList در این مثال به شرح زیر است:

    نام پایگاه: _ResoXP_workflow

    روش آغاز کار: از درون یک گردش کار (2)

    چک کردن دسترسی کاربر به آغاز کار: true

    فیلتر شدن کارهای مسدود: False

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

    توضبح مهم: در این تابع با هدف نمایش کاراکترهای فارسی و نیز تفکیک و خوانا شدن داده ها، خروجی json توسط یک تابع بنام jsonToArray به شکل یک رشته حرفی به فرم آرایه نمایش داده شده است. این تابع به شکل زیر است:

     

     

    function jsonToArray(jsonStr) {

        try {

            let obj = JSON.parse(jsonStr);

     

            function convert(value) {

                if (typeof value === "object" && value !== null) {

                       if (Array.isArray(value)) {

                               // اگر مقدار یک آرایه باشه، هر عضو رو جداگانه پردازش کن

                      return value.map(item => convert(item));

                 } else {

              // اگر مقدار یک آبجکت باشه

                return Object.entries(value).map(([key, val]) => ({

                key,

                value: convert(val)

              }));

            }

          }

          return value; // مقادیر ساده (string, number, etc.)

        }

     

        return convert(obj);

     

      } catch (e) {

             console.error("JSON نامعتبر است:", e.message);

             return [];

      }

    }

    مثال 2: فهرست گردش کارهایی که با روش از پیش تعریف شده «نیمه شناور» مرتبط هستند و کاربر اجازه آغاز کار در آنها را دارد.

    برای این مثال کافی است پارامترها را مانند سطر زیر تغییر دهید:

    res=ReposUtils.WS_GetWorkflowList("_ReposXP_workflow", -1, true, false, 10);

    ملاحظه می کنید که در این مثال، پارامتر بررسی اختیار دسترسی کاربر true  است و کلید روش از پیش تعیین شده افزودن منبع دیجیتال 10 می باشد که متعلق به روش «نیمه شناور» است. فهرست گردش کارها در این مثال به شکل زیر است:

     

    نکته ای که در این فهرست قابل توجه است گردش کار «تست نیکخواه» است که دارای 4 وظیفه آغاز است که با خط قرمز مشخص شده است. اگر روی مختصات این گروه زوم کنیم، این مورد بهتر دیده می شود:

     

    مثال 3: گردش کارهایی که تنها روش آغاز کار در آنها روش «با دریافت رخداد» است:

    در این مثال پارامترها به شکل زیر تعیین می شود:

    res=ReposUtils.WS_GetWorkflowList("_ReposXP_workflow", 16, false, false);

    ملاحظه می کنید که پارامتر روشهای آغاز کار (_ActivationMethods) برابر با 16 یعنی روش «با دریافت رخداد» است. بخشی از خروجی این تابع به شکل زیر است:

     

    ملاحظه می کنید علاوه بر دو گردش کار که دقیقا تنها روش آغاز کار «با دریافت رخداد» دارند، گردش کارهای دیگری هم با مقادیر 17 ، 18، 25 و 27 نیز وجود دارد که اگر به عدد باینری تبدیل شوند آنگاه مشخص می شود که علاوه بر روش «با دریافت رخداد» روشهای دیگری نیز برای آغاز کار دارند (یادآوری می شود که گردش کارها می توانند چند روش آغاز کار داشته باشند). برای مثال عدد 17 در مقیاس باینری برابرست با 10001 که مشخص می شود بیت اول این عدد نیز 1 است که متناظر است با «روش دستی» یعنی این گردش کار حاوی دو روش آغاز کار است: روش دستی و روش با دریافت رخداد و به همین ترتیب برای مقادیر دیگر نیز می توانیم روشهای افزون بر «با دریافت رخداد» را پیدا کنیم.

    مثال 4: فراخوانی داده های گردش کارهای یک پایگاه در یک فیلد آرایه

    فرض کنید یک فیلد آرایه بنام فهرست گردش کار (workflowList) تعریف می کنیم و نام اعضای آرایه را مشابه با ویژگی های خروجی json انتخاب می کنیم. حال کافی است که از تابعی مشابه با تابع زیر برای فراخوانی اطلاعات گردش کارهای پایگاه «تست گردش کارها»  استفاده کنیم:

    function WorkTaskWorkflowList () {

       ReposUtils.HostURL = "nosa-test";

       ReposUtils.UserName = "nosa/tariverdi";

       var res="";

       res=ReposUtils.WS_GetWorkflowList("_ReposXP_workflow", 2, true, false);

       let ResData=JSON.parse(res);

       WorkState.workflowsList=ResData.WorkflowArray

    }

    با اجرای این تابع، آرایه «فهرست گردش کارها» به شکل زیر داده ها را ذخیره می کند:

    پيوست ها
    شما مجاز به پاسخ به اين پست نمي باشيد.


    kurtkoy escort
    bostanci escort
    ankara escort
    comendo minha prima gordinha rajini murugan movie hd moglie con due negri calcaterra e lara scena hot mujeres con ropa interior transparente