برای سنجش میزان موفقیت فرایندها و میزان نزدیکی به هدفهای تعیین شده و انطباق با اهداف استراتژیک سازمان، نیاز به معیارهای قابل اندازهگیری داریم که شاخص کلیدی عملکرد (KPI) نامیده می شود. این شاخصها با توجه به هدفهای سازمان بسیار متنوع هستند و یکی از چالشهای هر سازمان تعریف و انتخاب شاخصهای عملکرد مناسب برای فعالیتهای مختلف سازمان می باشد. از طرف دیگر می توانیم بگوییم که فعالیتهای یک سازمان در قالب یک سری فرایند انجام می شود و لذا سنجش عملکرد فرایندها می تواند به شکل ضمنی و غیرمستقیم، شاخصی برای عملکرد سازمان باشد. البته برای سنجش عملکرد فرایندها نیاز به داده های کمی از کارهای یک گردش کار داریم لذا این سنجش در دو سطح انجام می شود.
مراحل سنجش شاخص عملکرد فرایندها
شاخص عملکرد فرایند در سطح گردش کار است و برای مجموعه ای از کارها در یک دوره زمانی (مثلا یک فصل، یک سال و ...) معنی پیدا می کند لذا همانطور که قبلا گفته شد، برای سنجش عملکرد فرایندها، ابتدا باید این عملکرد را در سطح کارهای گردش کار، اندازه گیری کنیم و در مرحله بعد این داده های تجمعی را تحت یک الگوی معین و در قالب یک شاخص عملکرد کلی گردش کار محاسبه کنیم. بنابراین در گام اول با معیارهای کمی عملکرد در سطح کار آشنا می شویم.
سنجش عملکرد کار
برای سنجش عملکرد در سطح کار، ابتدا باید معیارهای کمی برای سنجش عملکرد بخشهای مختلف فرایند (وظایف و وضعیتها) تعریف کنیم و سپس برمبنای این معیارها، عملکرد کار را اندازه گیری کنیم. معیارهای کمی، داده های لازم برای سنجش شاخص عملکرد گردش کار را فراهم می کند.
معیارهای کمی کارها
عملکرد کارها بر مبنای سه معیار کمی زمان، هزینه و کیفیت انجام می شود. بر این اساس می توانیم نتیجه بگیریم که در فرایندها هدف نهایی این است که کارها در کمترین زمان با کمترین هزینه و با بالاترین کیفیت انجام شوند. به این منظور، قابلیت ثبت و سنجش این معیارها در اجزای گردش کار (وظایف و وضعیتها) پیاده سازی شده است.
معیارهای کمی در وظایف گردش کار
برای درک بهتر مفهوم معیار زمان در وظیفه بهتر است به عنوان نمونه، نگاهی به محاوره اصلاح اطلاعات وظیفه "ارجاع کار به کارشناس" از گردش کار "پشتیبانی (Ticketing) " بیندازیم. در این وظیفه قرار است سرپرست پشتیبانی پس از دریافت درخواست پشتیبانی (تیکت)، آن را بررسی کرده و به مناسب ترین کارشناس ارجاع دهد:
همانطور که مشاهده می کنید یکی از برگه های این محاوره، برگه شاخص عملکرد است که شامل معیارهای سه گانه زمان، هزینه و کیفیت عملکرد وظیفه می باشد.
معیار زمان در وظیفه
ملموس ترین معیار کمی، معیار زمان است. در واقع زمان صرف شده برای انجام یک وظیفه و مدت زمان انتظار (تاخیر) در یک وضعیت، معیار مهمی برای عملکرد کار محسوب می شود. برای شرح بهتر این معیار، ناحیه "زمان" در محاوره اطلاعات وظیفه را به شکل برجسته تر بررسی می کنیم:
در این محاوره یک مقدار حداکثر برای مدت زمان انجام یک وظیفه تعیین می شود و در صورت بیشتر شدن زمان انجام وظیفه از این مقدار، سیستم می تواند آن را تشخیص داده و یک رخداد خاص برای آن سیگنال نماید. به این ترتیب تعیین حداکثر برای زمان انجام وظیفه، از رسوب کارها در کارتابل کاربران جلوگیری می کند.
نکته مهم: دقت کنید که مدت صرف شده برای انجام وظیفه با مدت زمان انتظار برای انجام وظیفه تفاوت دارد. به عبارت دیگر در اینجا مدت زمان صرف شده، پس از انجام وظیفه محاسبه و با حداکثر زمان تعیین شده مقایسه می شود بنابراین تا وظیفه انجام نشده باشد، این پارامتر بی تاثیر خواهد بود.
تعیین حداکثر زمان به شکل ثابت
همانطور که ملاحظه می کنید، در این ناحیه یک مقدار حداکثر برای زمان تعیین می شود که در این مثال 3 دقیقه تعیین شده است و به این معنی است که سرپرست پشتیبانی باید حداکثر در 3 دقیقه، بررسی های لازم در مورد تیکت را انجام داده و آن را به کارشناس ارجاع دهد. در غیر این صورت سیستم می تواند این وظیفه را شناسایی کرده و واکنش تعیین شده ای را در برابر آن داشته باشد.
تعیین حداکثر زمان توسط تابع
اگر در ناحیه زمان، فیلد "نوع حداکثر" را تغییر داده و گزینه "خروجی یک تابع" را انتخاب کنیم آنگاه این ناحیه به شکل زیر تغییر می کند:
در این روش باید خروجی یک تابع اجرایی را به عنوان حداکثر زمان تعیین کنیم. این روش زمانی کاربرد دارد که حداکثر زمان به سادگی قابل تعیین نیست و بسته به شرایط و مقادیر فیلدها تعیین می شود. برای مثال فرض کنید پس از این که درخواست به کارشناس ارجاع می شود، این کار در کارتابل کارشناس قرار می گیرد. حال فرض کنید نوع درخواست در یک فیلد انتخابی ساده به شکل زیر تعیین می شود:
نوع درخواست
- نصب و راه اندازی
- نصب مجدد
- ارتقای نسخه
- آموزش مجدد
- رفع اشکال تلفنی
- رفع اشکال حضوری
بدیهی است که برای تمام انواع فوق نمی توانیم یک حداکثر زمانی ثابت را تعیین کنیم . برای مثال درخواست نصب و راه اندازی زمان بیشتری نسبت به درخواست تغییر نسخه را لازم دارد و یا مثلا برای ارتقای نسخه، طبیعتا زمان کمتری نسبت به رفع اشکال حضوری در محل مشتری صرف می شود. بنابراین باید تابعی بنویسیم که خروجی آن بسته به "نوع درخواست" متغیر باشد.
همانطور که ملاحظه می کنید نام این تابع دارای پیشوند WorkTaskKPIDurationMax است. در این تابع روی گزینه های فیلد نوع درخواست (reqKind) شرط گذاشته شده و با استفاده از متغیر maxTime برای هر نوع درخواست، یک زمان حداکثر مجزا تعیین شده است.
نکته: دقت کنید که خروجی این تابع از نوع "مدت" و با واحد "روز" است. بنابراین مقدار خروجی به شکل یک عدد اعشاری است که قسمت صحیح آن تعداد روز و قسمت اعشاری آن کسری از روز را نمایش می دهد. برای مثال برای رفع اشکال حضوری، حداکثر مدت 2.5 روز، یعنی 2 روز و 12 ساعت تعیین شده است.
بهرحال تنظیمات ناحیه زمان در این روش به شکل زیر می باشد:
سیگنال رخداد برای رد شدن از حداکثر
همانطور که قبلا هم گفته شد، تعیین حداکثر برای مدیریت بیشتر زمان انجام وظایف می باشد لذا این امکان وجود دارد که اگر مدت زمان صرف شده برای انجام وظیفه بیش از حداکثر تعیین شده باشد، آنگاه همانند شکل زیر، سیستم یک رخداد سیگنال نماید.
با ردیابی این رخداد می توانیم واکنش مناسبی را برای این نوع از وظایف پیاده سازی کنیم.
معیار هزینه در یک وظیفه
مفهوم هزینه کمی پیچیده تر از مفهوم زمان است. در یک گردش کار، هر وظیفه ممکن است هزینه ای را برای سازمان به همراه داشته باشد. برای مثال معمولا در فرایندها وظایف نظارتی و تنظیم کننده (regulatory) وجود دارد که از این طریق، یک مقام بالاتر، کارهای کارشناسان را چک و تایید می کند. تعدد این گونه وظایف، می تواند هزینه های زیادی را به سازمان تحمیل و حذف نظارتهای زائد می تواند صرفه جویی اقتصادی بسیاری را ایجاد کند لذا اندازه گیری کمی هزینه های وظایف، می توند نقش مهمی در سنجش عملکرد یک گردش کار داشته باشد.
برای درک بهتر این مفهوم، به ناحیه تنظیمات هزینه در محاوره اطلاعات وظیفه توجه کنید:
در این محاوره، "هزینه" و "هزینه حداکثر" تعیین می شود.
هزینه
در این ناحیه هزینه وظیفه به دو شکل تعیین می شود: هزینه ثابت و هزینه از طریق خروجی یک تابع اجرایی
نوع ثابت: در این حالت یک مقدار ثابت برای هزینه را در نظر می گیریم. برای مثال در گردش کار تعمیر و نگهداری برای هر بازدید از تجهیزات یک واحد هزینه در نظر می گیریم. با توجه به این مثال دقت کنید که واحد هزینه لزوما واحد پولی ( مثلا ریال) نیست و واحد هزینه با توجه به ماهیت وظیفه تعیین می شود. برای نمونه در این مثال (شکل زیر) مقدار 2 واحد هزینه برای هر بازدید محاسبه می شود:
توضیح: در مفهوم واحد هزینه پارامترهای زیادی دخالت می کند که بسته به نوع فعالیت متفاوت می باشد به همین دلیل است که واحد خاص و ثابتی برای هزینه در نظر گرفته نشده و با واژه عام "واحد هزینه" محاسبه می شود. با این حال این امکان وجود دارد که هر مرکز و بسته به هر نوع فرایند، معادل ریالی واحد هزینه را نیز تعیین کند.
نوع خروجی یک تابع: حال اگر ماهیت تجهیزات به شکلی باشد که لازم باشد برای هر دسته خاص از تجهیزات هزینه متفاوتی را تعیین کنیم، آنگاه نوع ثابت هزینه جوابگو نخواهد بود و می توانیم با استفاده از یک تابع اجرایی، هزینه را برای تجهیزات مختلف محاسبه و تعیین نماییم.
مثال برای تابع تعیین هزینه
فرض کنید در یک گردش کار، فیلدهای دسته بندی تجهیزات (equipmentClass) و کد کارگاه (workShopNo)مبنای تعیین کننده هزینه بازدید می باشد. گزینه های این فیلدها به شکل زیر است:
دسته بندی تجهیزات
- تجهیزات سرمایشی گرمایشی
- تجهیزات انتقال مواد
- تجهیزات الکتریکی
کد کارگاه
- کارگاه مرکزی
- کارگاه مکانیک
- کارگاه بتن
در این صورت تابع زیر، هزینه ها را بر مبنای نوع تجهیزات تعیین می کند:
دقت کنید که متغیر taskCost مقدار هزینه را بر حسب واحد هزینه تعیین می کند. به این ترتیب، تنظیمات ناحیه هزینه به شکل زیر خواهد بود:
توضیح: تعیین هزینه از طریق خروجی تابع، لزوما در مورد واریانتهای وظایف نیست. برای مثال فرض کنید یک فیلد قابل تعریف برای هزینه وجود داشته باشد که کاربر (یا سیستم بطور خودکار) مقدار آن را پس از انجام وظیفه ثبت می کند. در این صورت مقدار فیلد یاد شده، خروجی تابع خواهد بود.
هزینه حداکثر
هزینه حداکثر، یک تفاوت اساسی با زمان حداکثر دارد. در مورد زمان، چون سیستم بطور اتوماتیک زمان صرف شده را اندازه گیری می کند لذا در لحظه انجام وظیفه، مدت زمان طی شده بطور اتوماتیک در دسترسی سیستم است. اما در مورد هزینه اینطور نیست ولذا باید یک روال تعیین هزینه داشته باشیم که در بخش قبل (تعیین هزینه ثابت برای وظیفه) توضیح داده شد. به این ترتیب دو روش تعیین حداکثر هزینه را خواهیم داشت: نوع ثابت و نوع خروجی یک تابع
نوع ثابت: در این روش، یک مقدار ثابت را برای حداکثر هزینه تعیین می کنیم. در مثال زیر، مقدار حداکثر 6 واحد هزینه برای این وظیفه تعیین شده است.
نوع خروجی یک تابع: فرض کنید در مثال بالا، هر خروجی تابع هزینه، یک حداکثر مرتبط با خود را داشته باشد. در این حالت تابع هزینه حداکثر به شکل زیر خواهد بود:
همانطور که ملاحظه می کنید، عنوان تابع حداکثر هزینه، دارای پیشوند WorkTaskKPICostMax است. در این مثال، برای هر دسته از تجهیزات، یک هزینه حداکثر خاص آن دسته تعیین شده است.
سیگنال رخداد برای هزینه بیش از حداکثر
همانند پارامتر زمان که قبلا توضیح داده شد، تعیین حداکثر برای هزینه انجام یک وظیفه نیز با هدف مدیریت و نظارت بیشتر بر هزینه های کار انجام می شود. لذا این امکان وجود دارد که در صورت گذر از حداکثر، سیستم همانند شکل زیر یک رخداد سیگنال نماید:
معیار کیفیت در یک وظیفه
واقعیت این است که مفهوم کیفیت به اندازه مفاهیم زمان و هزینه، واضح و روشن نیست و پارامترهای زیادی در تعیین کیفیت دخالت دارند. به همین دلیل ما فرض می کنیم که در هر وظیفه گردش کار، فیلدی وجود دارد که محتوای آن نشان دهنده کیفیت آن وظیفه می باشد و مقدار این فیلد، توسط یک عامل انسانی (مثلا مسئول کنترل کیفی) و براساس جمیع پارامترهای مرتبط با آن محاسبه و برآورد می شود و سپس در گردش کار اعمال می گردد. مقدار کیفیت، یک عدد اعشاری از 0 (کمترین کیفیت) تا 1 می باشد. برای هر وظیفه امکان تعیین کیفیت و کیفیت حداقل وجود دارد.
تعییت کیفیت
تعیین کیفیت به دو روش نوع ثابت و نوع خروجی یک تابع انجام می شود:
نوع ثابت: در این روش یک مقدار عددی ثابت برای کیفیت تعیین می کنیم. در مثال زیر برای کیفیت وظیفه، مقدار 0.8 تعیین شده است:
نوع خروجی یک تابع: در بعضی از گردش کارها بسته به واریانتهای گردش کار، کیفیت تعیین و ثبت می شود. برای مثال فرض کنید در یک گردش کار پشتیبانی، کارها به کارشناسان پشتیبانی ارجاع می شود اما بسته به این که به کدام کارشناس ارجاع می شود براساس تجربه و مهارت کارشناس، کیفیت انجام وظیفه تغییر می کند.
در این تابع، ابتدا کاربر جاری در متغیر curUser قرار می گیرد و بسته به محتوای این متغیر، مقدار کیفیت وظیفه در متغیر taskQuality تعیین می شود. به این ترتیب تنظیمات ناحیه کیفیت به شکل زیر تغییر می کند:
توضیح: در مورد تعیین کیفیت وظیفه نیز باید توجه کنید که ممکن است مقدار ثابت کیفیت توسط کاربر (یا بطور خودکار توسط سیستم) و در حین کار، در یک فیلد قابل تعریف وارد و ثبت شود. در این صورت، خروجی تابع، مقدار فیلد یادشده خواهد بود.
کیفیت حداقل
بر خلاف دو پارامتر زمان و هزینه، آنچه که در مورد کیفیت تعیین می شود، میزان حداقل کیفیت است. دلیل آن هم این است که هدف از فرایند بالا رفتن کیفیت است و لذا فرایند و اجزای آن (وظایف)، بایدحداقلی از کیفیت را داشته باشند. کیفیت حداقل هم به دو روش نوع ثابت و نوع خروجی یک تابع تعیین می شود:
نوع ثابت: در این روش، یک مقدار ثابت را برای حداقل کیفیت تعیین می کنیم. در مثال زیر، مقدار حداقل 0.85برای کیفیت این وظیفه تعیین شده است.
همانند حداکثر هزینه، در اینجا هم برای تعیین یک حداقل برای کیفیت، باید حتما ابتدا کیفیت وظیفه تعیین شده باشد تا مبنایی برای مقایسه آن با حداقل کیفیت را داشته باشیم.
نوع خروجی تابع: فرض کنید بسته به دسته بندی نرم افزارها، یک حداقل کیفیت برای هر دسته تعیین می شود. در این حالت دسته بندی نرم افزار در فیلد (softwareCat) به شکل زیر ذخیره می شود:
دسته بندی نرم افزار
- سیستم جامع مالی
- سیستم مدیریت فرایندها
در این حالت، تابع حداقل کیفیت به شکل زیر خواهد بود:
عبارت پیشوند تابع حداقل کیفیت WorkTaskKPIQualityMin است و در این مثال، حداقل کیفیت، بسته به دسته بندی نرم افزار، در متغیر doneMinQuality ذخیره می شود و در نهایت این متغیر خروجی تابع خواهد بود. در شکل زیر این تابع برای تعیین حداقل کیفیت انتخاب شده است:
سیگنال رخداد برای وظایف با کیفیت کمتر از حداقل
تعیین حداقل برای کیفیت انجام یک وظیفه نیز با هدف مدیریت و نظارت بیشتر بر کیفیت کار انجام می شود. لذا این امکان وجود دارد که در صورت نزول کیفیت از حداقل تعیین شده، سیستم همانند شکل زیر یک رخداد سیگنال نماید:
سخن آخر: مزیت تعیین مقادیر ثابت نسبت به خروجی تابع
به دلیل کارآیی (Performance) بیشتر، توصیه می شود تا حد امکان از نوشتن تابع برای محاسبه و تعیین معیارهای کمی کارها خودداری کنید و از معیارهای با مقدار ثابت استفاده کنید. نوشتن تابع همانطور که در مثالها نیز ملاحظه کردید، زمانی لازم می شود که راهها (واریانتها)ی مختلفی برای انجام وظیفه وجود دارد که این تعدد راهها را در یک فیلد انتخابی ساده (radio button) طراحی و از آن در توابع حداکثر استفاده می کنیم. بنابراین در چنین مواردی ناگزیر از استفاده از روش خروجی تابع هستیم اما با پیاده سازی واریانتها در دیاگرام گردش کار و تفکیک وظایف خروجی از یک وضعیت، می توانیم بدون استفاده از تابع، برای هر وظیفه خروجی (واریانت)، یک مقدار ثابت حداکثر تعیین نماییم.