فهرست نقشهای سراسری یک گردش کار
function WS_GetWorkflowRoleList(const ADBName: String; AWorkflowKey: Integer;
ARoleKindMask: Integer): String;
این تابع فهرست نقشهای سراسری یک گردش کار و کاربران دارای این نقشها را به صورت یک رشته حرفی با فرمت JSON تولید می کند.
Created: Version 13.08.00
شرح پارامترهای تابع
- ADBName (نام پایگاه) : در این پارامتر، نام پایگاه بصورت رشته حرفی درج می شود. برای مثال "_ReposXP_Workflow"
- AworkflowKey (کلید گردش کار): این پارامتر حاوی یک عدد صحیح است که کلید گردش کار را تعیین می کند.
- ARoleKindMask (نوع نقش): این پارامتر یک Bitwise با مقادیر زیر است که نوع نقش را تعیین می کند:
urActor = 0; انجام وظیفه
urViewer = 1; ملاحظه وضعیت کارها
urDelegActor = 2; انجام وظیفه (جانشین)
urDelegViewer = 3;ملاحظه وضعیت کارها (جانشین)
urManager = 4; مدیریت کارها
urDelegManager = 5; مدیریت کارها (جانشین)
urReporter = 6; گزارش گیری
urDesign = 7; طراحی
urImmediateNotif = 8; اطلاع رسانی بلادرنگ
روش محاسبه مقدار پارامتر
همانطور که گفته شد هر گزینه یک بیت با یک عدد خاص است که مقدار عدد هر گزینه، برابر با 2 به توان آن عدد است. به این ترتیب مقدار هر گزینه به شرح زیر محاسبه می شود:
انجام وظیفه: 20 = 1
ملاحظه وضعیت کارها: 21 =2
انجام وظیفه (جانشین): 22= 4
ملاحظه وضعیت کارها (جانشین): 23= 8
مدیریت کارها: 24= 16
مدیریت کارها (جانشین): 25= 32
گزارش گیری: 26=64
طراحی: 27=128
اطلاع رسانی بلادرنگ: 28=256
اگر چند گزینه را مد نظر داشته باشید ، مقدار این پارامتر برابر با مجموع مقادیر گزینه ها خواهد بود. برای مثال اگر فقط گردش کارهای با نقشهای «انجام وظیفه » و «مدیریت کارها» باید مقدار 1+16=17 و یا اگر فقط گردش کارهای با نقشهای «ملاحظه وضعیت کارها» و «گزارش گیری» را مد نظر دارید باید مقد2+64=66 برای این پارامتر اختصاص دهید.
نکته مهم: مقدار 1- به معنی انتخاب تمام گزینه هاست.
الگوی خروجی تابع
خروجی این تابع، یک رشته حرفی به فرمت JSON و شامل ویژگیهای زیر است:
{"_ErrNo":"0",
"RoleArray":[
{"_Key":"136", کلید نقش
"_Kind":"0", نوع نقش
"_User":"34", کلید کاربر
.
.
]}
شرح ویژگیهای خروجی Json
این رشته حرفی شامل ویژگیهای زیر است:
- _ErrNo(کدخطا): اگر اجرای تابع با خطا روبرو شود در اینجا کد خطا نمایش داده می شود. شماره 0 به معنی عدم وجود خطاست.
- RoleArray (آرایه مشخصات نقشها): این ویژگی خود یک آرایه است که اعضای این آرایه هر کدام حاوی مشخصات یکی از نقشهای سراسری گردش کار است. هر عضو این آرایه حاوی داده های زیر است:
- _Key (کلید نقش): تمام نقشهای گردش کارهای یک پایگاه در یک جدول ذخیره شده است که هر نقش اعم از نقش در یک وظیفه و وضعیت خاص یا نقش سراسری با یک کلید شناخته می شود.
- _Kind (نوع نقش): این ویژگی نوع نقش را نمایش می دهد. مثلا "0" یعنی نقش انجام وظیفه
- _User (کلید کاربر): این ویژگی کلید کاربر دارای نقش مورد نظر را نشان می دهد.
مثالها
برای نمونه به فهرست نقشهای سراسری گردش کار «کالاها» با کلید 1 را در شکل زیر ملاحظه کنید:

می بینید که در این گردش کار تعداد 12 نقش سراسری برای کاربران مختلف تعریف شده است. حال به چند مثال در مورد استخراج این نقشها توجه کنید:
مثال 1: فهرست تمام نقشهای سراسری
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 € {
console.error(“JSON نامعتبر است:”, e.message);
return [];
}
}
function WorkTaskWFRoleList() {
ReposUtils.HostURL = “nosa-test”;
ReposUtils.UserName = “nosa/tariverdi”;
var res=””;
res=ReposUtils.WS_GetWorkflowRoleList(“_ReposXP_workflow”,1, -1);
let farsiRes=jsonToArray(res);
WorkState.ReturnText=JSON.stringify(farsiRes);
}
در این مثال، مشخصات تمام نقشهای سراسری پایگاه با کلید 1 (کالاها) از پایگاه تست گردش کار (_ReposXP_workflow) به شکل زیر نمایش داده می شود. توضیح این که در این مثال برای تفکیک ویژگیها از تابعی بنام jsonToArray برای تبدیل خروجی Json به یک آرایه استفاده شده است:

در شکل بالا فهرست هر 12 نقش سراسری این گردش کار را با نوع نقش ها و کاربران دارای نقشها، ملاحظه می کنید. برای مثال در نقشی که با خطوط قرمز مشخص شده است، کاربر 45 (آقای نیکخواه) دارای نقش با نوع 0 (انجام وظیفه) است.
مثال 2: فهرست کاربران دارای نقش سراسری «مدیریت کارها»
برای این فهرست باید پارامترهای تابع WS_GetWorkflowRoleList را به شکل زیر تغییر دهیم:
res=ReposUtils.WS_GetWorkflowRoleList(“_ReposXP_workflow”,1, 16);
توضیح: همانطور که در قسمتهای قبلی گفته شد، نوع نقش «مدیریت کار» برابر 4 است و لذا پارامتر ARoleKindMask برای این نقش 24=16 می باشد.
در این صورت فهرست مورد نظر به شکل زیر خواهد بود:

ملاحظه می کنید که اعضای با کلید 184 (آقای سرابی) و 9 (آقای تاریوردی) و 21 (آقای حجتی) دارای نقش سراسری مدیریت کار در این گردش کار هستند.
مثال 3: فهرست کاربران دارای نقش «انجام وظیفه» یا «ملاحظه وضعیت کارها»
نوع نقش «انجام وظیفه» برابر با 0 و نوع نقش «ملاحظه وضعیت کارها» برابر با 1 است بنابراین مقدار پارامتر AroleKindMask را باید برابر با 20+ 21=1+ 2= 3 قرار دهیم:
res=ReposUtils.WS_GetWorkflowRoleList(“_ReposXP_workflow”,1, 3);
به این ترتیب، فهرست مورد نظر به شکل زیر تولید خواهد شد:

همانطور که در شکل مشخص شده است، دو کاربر 9 و 11 دارای نقش 1 (ملاحظه وضعیت کارها) هستند و چهار کاربر 15، 184، 9 و 11 دارای نقش 0 (انجام وظیفه) هستند.