توابع مرتبط با سطوح اولویت در سیستم اطلاعاتی
برای استخراج اطلاعات سطوح اولویت دو تابع وجود دارد:
اگر می خواهید اطلاعات تنها یک اولویت خاص (مثلا فوری) را تولید کنید باید از این تابع استفاده کنید.
اگر در نظر دارید اطلاعات چند سطح اولویت را تولید کنید آنگاه باید از این تابع استفاده کنید.
در ادامه مطلب این دو تابع به ترتیب شرح داده می شود:
function WS_GetWorkPriorityDataByKey (const ADBName: String; AKey: Integer): String;
Created: Version 13.00.00
این تابع اطلاعات یک سطح اولویت خاص در یک سیستم اطلاعاتی را به صورت یک رشته حرفی با فرمت JSON تولید می کند.
شرح پارامترهای تابع
- ADBName (نام پایگاه) : در این پارامتر، نام پایگاه بصورت رشته حرفی درج می شود. برای مثال "_ReposXP_Workflow"
- Akey (کلید سطوح اولویت): در این پارامتر، کلید اولویت مورد نظر به صورت یک عدد صحیح. مثلا 5
الگوی خروجی تابع
خروجی این تابع، یک رشته حرفی به فرمت JSON و شامل ویژگیهای زیر است:
{"_ErrNo":"0",
"_Name":"\u062A\u0639\u064A\u064A\u0646 \u0641\u0631\u0645\u062A”,
"_EngName":"English Name",
"_Note":"\u062A\u0633\u062A \u064A\u0627\u062F\u062F\u0627\u0634\u062A”,
"_Order":"66"}
شرح ویژگیهای خروجی Json
این رشته حرفی شامل ویژگیهای زیر است:
- _ErrNo(کدخطا): اگر اجرای تابع با خطا روبرو شود در اینجا کد خطا نمایش داده می شود. شماره 0 به معنی عدم وجود خطاست.
- _Name (نام سطح اولویت ): در اینجا نام فارسی سطح اولویت به فرمت Escaped Unicode قرار می گیرد که در حالت عادی خوانا نیست اما به همین شکل قابل انتقال و پردازش است. البته به ترتیبی که در مراحل بعد شرح داده می شود می توانیم برای تست، این فرمت را بصورت فارسی خوانا تبدیل کنیم .
- _EngName (نام لاتین): نام انگلیسی سطح اولویت
- _Note (یادداشت): هر گونه توضیح برای سطح اولویت در این مشخصه قرار می گیرد.
- _Order (شماره ردیف سطح اولویت): در محاوره سطوح اولویت، ترتیب اولویتها توسط کاربر قابل تعیین و تغییر است بنابراین در این مشخصه، شماره ردیف اولویت مشخص می شود.
توضیح: شماره ردیف (_Order) زمانی کاربرد دارد که بخواهید فهرست کارها به ترتیب اولویت گزارشگیری کنید.
مثال: اطلاعات سطح اولویت با کلید 5 از سیستم اطلاعاتی «تست گردش کار »
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) {
Throw “JSON نامعتبر است:”, e.message;
return [];
}
}
function WorkTaskPriorityData () {
ReposUtils.HostURL = “nosa-test”;
ReposUtils.UserName = “nosa/tariverdi”;
var res=””;
res=ReposUtils.WS_GetWorkPriorityDataByKey (“_ReposXP_workflow”, 5);
let farsiRes=jsonToArray(res);
WorkState.ReturnText=JSON.stringify(farsiRes);
}
با اجرای این تابع، مشخصات سطوح اولویت مورد نظر را به شکل زیر مشاهده خواهید کرد:
توضیح این که در این مثال برای خوانا شدن متنهای فارسی و تفکیک ویژگیها از تابعی بنام jsonToArray برای تبدیل خروجی Json به یک آرایه استفاده شده است
function WS_GetWorkPriorityDataByKeyList (const ADBName: String; const AKeyList: String): String;
Created: Version 15.50.02
این تابع اطلاعات یک آرایه از سطوح اولویتهایی مورد نظر از یک سیستم اطلاعاتی را به صورت یک رشته حرفی با فرمت JSON تولید می کند.
شرح پارامترهای تابع
- ADBName (نام پایگاه) : در این پارامتر، نام پایگاه بصورت رشته حرفی درج می شود. برای مثال "_ReposXP_Workflow"
- AkeyList (آرایه کلید سطوح اولویت): در این پارامتر، کلید اولویتهای مورد نظر به صورت یک رشته حرفی با جدا کننده کاما (,) درج می شود.. مثلا "3,6,2"
الگوی خروجی تابع
خروجی این تابع، یک رشته حرفی به فرمت JSON و شامل ویژگیهای زیر است:
{"_ErrNo":"0",
"PriorityArray":[
{"_Key":"1",
"_Name":"\u062A\u0639\u064A\u064A\u0646 \u0641\u0631\u0645\u062A”,
"_EngName":"English Name",
"_Note":"\u062A\u0633\u062A \u064A\u0627\u062F\u062F\u0627\u0634\u062A”,
"_Order":"66"},
.
.
]}
شرح ویژگیهای خروجی Json
این رشته حرفی شامل ویژگیهای زیر است:
- _ErrNo(کدخطا): اگر اجرای تابع با خطا روبرو شود در اینجا کد خطا نمایش داده می شود. شماره 0 به معنی عدم وجود خطاست.
- PriorityArray (آرایه سطوح اولویت): در این ویژگی مشخصات اولویتهای مورد نظر به شکل آرایه تولید می شود که هر عضو آرایه مشخصات یک بخش را به شرح زیر درج می کند:
- _Key (کلید سطح اولویت): در این مشخصه، کلید سطح اولویت قرار می گیرد.
- _Name (نام سطح اولویت ): در اینجا نام فارسی سطح اولویت به فرمت Escaped Unicode قرار می گیرد که در حالت عادی خوانا نیست اما به همین شکل قابل انتقال و پردازش است. البته به ترتیبی که در مراحل بعد شرح داده می شود می توانیم برای تست، این فرمت را بصورت فارسی خوانا تبدیل کنیم .
- _EngName (نام لاتین): نام انگلیسی سطح اولویت
- _Note (یادداشت): هر گونه توضیح برای سطح اولویت در این مشخصه قرار می گیرد.
- _Order (شماره ردیف سطح اولویت): در محاوره سطوح اولویت، ترتیب اولویتها توسط کاربر قابل تعیین و تغییر است بنابراین در این مشخصه، شماره ردیف اولویت مشخص می شود.
- : شماره ردیف (_Order) زمانی کاربرد دارد که بخواهید فهرست کارها به ترتیب اولویت گزارشگیری کنید.
مثال: اطلاعات سطوح اولویت با کلیدهای 1 و 5 از سیستم اطلاعاتی «تست گردش کار »
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) {
Throw “JSON نامعتبر است:”, e.message;
return [];
}
}
function WorkTaskPriorityDataByKeyList() {
ReposUtils.HostURL = “nosa-test”;
ReposUtils.UserName = “nosa/tariverdi”;
var res=””;
res=ReposUtils.WS_GetWorkPriorityDataByKeyList(“_ReposXP_workflow”, “1, 5”);
let farsiRes=jsonToArray(res);
WorkState.ReturnText=JSON.stringify(farsiRes);
}
با اجرای این تابع، مشخصات سطوح اولویت مورد نظر را به شکل زیر مشاهده خواهید کرد:
توضیح این که در این مثال برای خوانا شدن متنهای فارسی و تفکیک ویژگیها از تابعی بنام jsonToArray برای تبدیل خروجی Json به یک آرایه استفاده شده است:
