خاطرات فنی من

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

سعی می کنم مطالب برای دیگران هم قابل استفاده باشند اما به دلیل کمی وقت نمی توانم زیاد نگران نگارش و چینش متن باشم

گزارشهایی درباره زمان پاسخگویی گروه سرویس دسک

پنجشنبه, ۳۰ خرداد ۱۳۹۸، ۰۹:۵۳ ق.ظ

اینکه سرویس دسک با چه سرعتی درخواستها را به گروه های کارشناسی ارجاع می دهد معیار مهمی برای سنجش کارایی سرویس دسک است.

برای اینکه چنین گزارشهایی در SErviceDesk Plus داشته باشید نیازمند نوشتن Query  هستید


زمان ورود درخواست به سرویس دسک برای درخواستهایی که نیازمند تایید هستند می شود لحظه گرفتن آخرین تایید

برای درخواستهایی که تایید لازم ندارند می شود زمان ایجاد درخواست

زمان خروج درخواست از سرویس دسک هم می شود زمان اولین ارجاع

از طرفی ممکن است بعضی درخواستها بعد از اتمام زمان کاری سرویس دسک وارد کارتابل گروه شده باشند، و در نتیجه در روز بعد ارجاع شوند، من برای سادگی این درخواستها را نادیده گرفتم

و ممکن هم هست که بعضی درخواستها پیش از گرفتن آخرین تایید، به گروههای کاری ازجاع شوند، یعنی گویا قبل از ورود به سرویس دسک از آن خارج شده اند. من اینها را هم حذف کردم.

نتیجه یک چنین چیزی شد:

select workOrder_Id, 
workOrder.TITLE, RegionDefinition.REGIONNAME,
dateadd(s, toServiceDesk/1000, convert(datetime, '1-1-1970 04:30:00')) as toServiceDesk,
dateadd(s, fromServiceDesk/1000, convert(datetime, '1-1-1970 04:30:00')) as fromServiceDesk,
(fromServiceDesk - toServiceDesk) / 60000 as waitingTimeInMins
from
(
select
    wo.WORKORDERID as workOrder_Id,
    wo.title,
    (select isnull((select max(ApprovalHistory.ACTION_DATE) from ApprovalHistory, ApprovalDetails, ApprovalStageMapping
                        where ApprovalStageMapping.WORKORDERID = wo.WORKORDERID and
                        ApprovalStageMapping.APPROVAL_STAGEID = ApprovalDetails.APPROVAL_STAGEID and
                        ApprovalDetails.APPROVALID = ApprovalHistory.APPROVALID),
                    (select min(OPERATIONTIME) from WorkOrderHistory where WorkOrderHistory.WORKORDERID = wo.WORKORDERID))) as toServiceDesk,
    (select min(OPERATIONTIME)
     from WorkOrderHistory, WorkOrderHistoryDiff where
    WorkOrderHistory.HISTORYID = WorkOrderHistoryDiff.HISTORYID and
    COLUMNNAME like '%QUEUEID%'and
    WorkOrderHistory.WORKORDERID = wo.WORKORDERID) as fromServiceDesk
    from WorkOrder as wo where
    datediff(d, dateadd(s, wo.ResolvedTime/1000, convert(datetime, '1-1-1970 04:30:00')), getdate()) < 7
) as rawTable, WorkOrder, SiteDefinition,RegionDefinition
where datediff(d, dateadd(s, fromServiceDesk/1000, convert(datetime, '1-1-1970 04:30:00')), dateadd(s, toServiceDesk/1000, convert(datetime, '1-1-1970 04:30:00'))) = 0 and
fromServiceDesk - toServiceDesk >= 0 and
workorder.WORKORDERID = workOrder_Id and
WorkOrder.SITEID = SiteDefinition.SITEID and
SiteDefinition.REGIONID = RegionDefinition.REGIONID
and RegionDefinition.REGIONNAME in ('Assaluyeh', 'Shirino', 'Kangan', 'Jam')
order by workOrder_Id  asc


چون من نیاز که فقط درخواستهای دفتر عسلویه را داشته باشم، بنابراین با استفاده از جدول Region این درخواستها را هم فیلتر کردم.


حالا اگر بخواهید یک عدد میانگین برای پاسخگویی گروه سرویس دسک داشته باشید می توانید از Query زیر استفاده کنید:


select 
avg((fromServiceDesk - toServiceDesk) / 60000) as avgResponsetime
from
(select
    wo.WORKORDERID as workOrder_Id,
    wo.title,
    (select isnull((select max(ApprovalHistory.ACTION_DATE) from ApprovalHistory, ApprovalDetails, ApprovalStageMapping
                        where ApprovalStageMapping.WORKORDERID = wo.WORKORDERID and
                        ApprovalStageMapping.APPROVAL_STAGEID = ApprovalDetails.APPROVAL_STAGEID and
                        ApprovalDetails.APPROVALID = ApprovalHistory.APPROVALID),
                    (select min(OPERATIONTIME) from WorkOrderHistory where WorkOrderHistory.WORKORDERID = wo.WORKORDERID))) as toServiceDesk,
    (select min(OPERATIONTIME)
     from WorkOrderHistory, WorkOrderHistoryDiff where
    WorkOrderHistory.HISTORYID = WorkOrderHistoryDiff.HISTORYID and
    COLUMNNAME like '%QUEUEID%'and
    WorkOrderHistory.WORKORDERID = wo.WORKORDERID) as fromServiceDesk
    from WorkOrder as wo where
    datediff(d, dateadd(s, wo.ResolvedTime/1000, convert(datetime, '1-1-1970 04:30:00')), getdate()) < 7) as rawTable
 , WorkOrder, SiteDefinition,RegionDefinition
where datediff(d, dateadd(s, fromServiceDesk/1000, convert(datetime, '1-1-1970 04:30:00')), dateadd(s, toServiceDesk/1000, convert(datetime, '1-1-1970 04:30:00'))) = 0 and
fromServiceDesk - toServiceDesk >= 0 and
WorkOrder.SITEID = SiteDefinition.SITEID and
SiteDefinition.REGIONID = RegionDefinition.REGIONID and
RegionDefinition.REGIONNAME in ('Assaluyeh', 'Shirino', 'Kangan', 'Jam') and
workorder.WORKORDERID = workOrder_Id


هر دو گزارش بالا درخواستهایی را بررسی می کنند که کارشناسان آنها را بسته اند. اما حقیقت این است که ما دنبال ارزیابی سرویس دسک هستیم و کاری به گروههای کارشناسی نداریم

مدتی بعد، من این query را برای مشخص کردن زمان واکنش گروه سرویس دسک در روز گذشته نوشتم:

select toTable.wId, totable.siteName, toTable.toServiceDesk, fromTable.fromServiceDesk, DATEDIFF(mi,toTable.toServiceDesk,fromTable.fromServiceDesk) as waitingTimeInMins from
/**
Comment on 'union':
It should calculates when each request has entered serviceDesk.
For requests that need approval, this is time of the last approval (first part of union)
For requests that don't need any approval, this is creation time (second part of union)
**/
(select WorkOrderStates.workorderId as wId, RegionDefinition.REGIONNAME as siteName, dateadd(s, max(ApprovalHistory.ACTION_DATE)/1000, convert(datetime, '1-1-1970 04:30:00')) as ToServiceDesk
from WorkOrderStates, ApprovalHistory, ApprovalDetails, ApprovalStageMapping, WorkOrder, SiteDefinition, RegionDefinition
where ApprovalStageMapping.WORKORDERID = WorkOrderStates.workorderId
and ApprovalStageMapping.APPROVAL_STAGEID = ApprovalDetails.APPROVAL_STAGEID
and ApprovalDetails.APPROVALID = ApprovalHistory.APPROVALID
and workorder.WORKORDERID = WorkOrderStates.workorderId
and WorkOrder.SITEID = SiteDefinition.SITEID
and SiteDefinition.REGIONID = RegionDefinition.REGIONID
group by WorkOrderStates.workorderId , RegionDefinition.REGIONNAME
union
select workorder.workorderId, RegionDefinition.REGIONNAME , dateadd(s, CREATEDTIME/1000, convert(datetime, '1-1-1970 04:30:00'))
from workorder, WorkOrderStates, SiteDefinition, RegionDefinition
where workorder.workorderId = WorkOrderStates.WORKORDERID
and WorkOrderStates.APPR_STATUSID is null
and WorkOrder.SITEID = SiteDefinition.SITEID
and SiteDefinition.REGIONID = RegionDefinition.REGIONID)
as toTable

left join
/**
This 'left join' calculates when request is assigned to any technical group.
**/
(select WorkOrderHistory.WORKORDERID as wId, dateadd(s, min(OPERATIONTIME)/1000, convert(datetime, '1-1-1970 04:30:00')) as fromServiceDesk
from WorkOrderHistory, WorkOrderHistoryDiff where
WorkOrderHistory.HISTORYID = WorkOrderHistoryDiff.HISTORYID and
WorkOrderHistoryDiff.COLUMNNAME like '%QUEUEID%'
--and WorkOrderHistory.WORKORDERID >= 20210
group by WorkOrderHistory.WORKORDERID) as fromTable

on toTable.wId = fromTable.wId
where
DATEDIFF(d, ToServiceDesk, getdate()) = 1
order by toTable.siteName, waitingTimeInMins desc



ServiceDesk Plus Query Report

Average Response Time of Service Desk Group

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی