دریافت مشخصات گردش کارها از طریق آرایه کلیدهای گردش کار
function WS_GetWorkflowDataByKeyList (const ADBName: String; const AKeyList: String): String;
Created: Version 15.50.02
این تابع مشخصات تعدادی از گردش کارها را بر مبنای کلیدهای منتخب و بصورت یک رشته حرفی با فرمت JSON تولید میکند.
توضیح: این تابع دقیقا مشابه تابع WS_GetWorkflowDataByKey و شکل توسعه یافته آن است به این معنی که بجای دریافت مشخصات یک گردش کار خاص (با یک کلید خاص)، مشخصات تعدادی از گردش کارها را (با کلیدهای مورد نظر) لیست می کند.
شرح پارامترهای تابع
- ADBName (نام پایگاه) : در این پارامتر، نام پایگاه بصورت رشته حرفی درج می شود. برای مثال "_ReposXP_Workflow"
- AkeyList (کلیدهای گردش کارها): محتوای این پارامتر یک رشته حرفی حاوی کلیدهای گردش کارهای مورد نظر است که جدا کننده کلیدها کاراکتر کاما «,» است. برای مثال ",2,5,101"
فرمت خروجی تابع
خروجی این تابع، یک رشته حرفی به فرمت JSON و شامل ویژگیهای زیر است:
{"_ErrNo":"0",
"WorkflowArray":[
{"_Key":"1",
"_Name":"\u062A\u0633\u062A 1", نام گردش کار
"_EngName":"English Name", نام لاتین گردش کار
"_Code":"3", کد گردش کار
"_Desc": "\u062A\u0633\u062A 1", یادداشت گردش کار
"_DefaultPriority": "1", کلید اولویت پیش فرض
"_Category": "1", کلید دسته بندی
"_CltScript": "", برنامه گردش کار در کلاینت
"_ShowInMenu": ""} , وضعیت نمایش در منوی وب
.
.
]}
شرح ویژگیهای خروجی Json
این رشته حرفی شامل ویژگیهای زیر است:
- _ErrNo(کدخطا): اگر اجرای تابع با خطا روبرو شود در اینجا کد خطا نمایش داده می شود. شماره 0 به معنی عدم وجود خطاست.
- _WorkflowArray (آرایه مشخصات گردش کارها): این ویژگی خود یک آرایه است که اعضای این آرایه هر کدام حاوی مشخصات یکی از کلید گردش کارهای درج شده در پارامتر _AkeyList است. هر عضو این آرایه حاوی داده های زیر است:
- _Key (کلید گردش کار)
- _Name (نام گردش کار): همانطور که در مثال هم می بینید اگر نام گردش کار به فارسی باشد، کاراکترهای فارسی به شکل Escaped Unicode ذخیره می شود. در این مثال نام گردش کار "تست 1" بوده که به صورت «\u062A\u0633\u062A 1» ذخیره شده است.
- برای اطمینان از قابل تفسیر و Decode شدن داده ها در انواع پایگاههای داده ، در استاندارد Json کاراکترهای غیر انگلیسی به شکل Escaped Unicode ذخیره می شود که ساختار آن شامل کاراکترهای /u و یک عدد مبنای 16 (Hexadecimal)است.
- _EngName(نام لاتین گردش کار)
- _Code (کد گردش کار)
- _Desc (یادداشت گردش کار)
- _DefaultPriority (کلید اولویت پیش فرض کارها): هر گردش کار می تواند دارای یک اولویت پیش فرض باشد که در هنگام ایجاد کار جدید به کار اختصاص داده می شود. در این قسمت کلید این اولویت بصورت یک عدد صحیح نمایش داده می شود. لازم به توضیح است که عدد صفر به معنی این است که اولویت پیش فرض برای این گردش کار وجود ندارد.
- Category_(کلید دسته بندی گردش کار): این ویژگی کلید دسته بندی گردش کار را نشان می دهد که عدد صفر به معنی این است که این گردش کار در هیچ دسته بندی قرار نگرفته است و به عبارت دیگر گزینه «تعیین نشده»
- CltScript_ (برنامه گردش کار در کلاینت): یکی از امکانات گردش کار تعیین رفتار فیلدها در فرمهای وظایف از طریق برنامه کلاینت است که سه رفتار از نوع اعتبارسنجی، محاسبه مقدار و تعیین وضعیت ویرایش را برای فیلدها تعیین می کند. در این ویژگی، برنامه گردش کار به شکل یک رشته حرفی ذخیره می شود.
- _ShowInMenu (وضعیت نمایش در منوی کلاینت وب): اگر بیاد داشته باشید، در کلاینت وب، با هدف دسترسی سریع تر به گردش کارهای مدیریتی و نظارتی، امکان درج و نمایش این گردش کارها در منو وجود دارد. در هر صورت در این ویژگی که از نوع Boolean است، عدد 1 به معنی نمایش و عدد 0 به معنی عدم نمایش گردش کار در منوی وب است.
مثال: دریافت مشخصات گردش کار «کالاها» در پایگاه «تست گردش کار»
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 [];
}
}
function WorkTaskWorkflowArrayData () {
ReposUtils.HostURL = "nosa-test";
ReposUtils.UserName = "nosa/tariverdi";
var res="";
res=ReposUtils.WS_GetWorkflowDataByKeyList("_ReposXP_workflow", "1,2,5,10" ) ;
let farsiRes=jsonToArray(res);
WorkState.ReturnText=JSON.stringify(farsiRes);
}
در این مثال، مشخصات گردش کارهای با کلیدهای "1,2,5,10" از پایگاه تست گردش کار (_ReposXP_workflow) به شکل زیر نمایش داده می شود. توضیح این که در این مثال برای خوانا بودن عبارتهای فارسی و تفکیک ویژگیها از تابعی بنام jsonToArray برای تبدیل خروجی Json به یک آرایه استفاده شده است: