Настінний екран стану служби підтримки - Як

Настінний екран стану служби підтримки

Те, що я хотів, була веб-сторінка, яка буде відображати основні на перший погляд огляд інформації про моїх спецій робіт бюро допомоги

стільки ж для користувачів, які приходять до служби підтримки, а для того, щоб ІТ знали, де ми працюємо

план полягає в тому, щоб мати самообновлювану HTML-сторінку, яка буде запускатися на старому вільному тонкому клієнті і відображатися на екрані 19 "

Загалом 8 кроків

Крок 1: доступ до бази даних

1-й я повинен був отримати доступ до бази даних spiceworks
Я знайшов, що є драйвер ODBC для sqlite (DB за spiceworks

його можна завантажити з
http://www.ch-werner.de/sqliteodbc/

Я встановив це як DSN на тому ж сервері, що працює spiceworks

Крок 2: Читання БД

тепер у мене є мій DSN я можу написати VBScript витягнути інформацію з БД процес його і написати HTML-файл

Я знаю, VBScript не є модним і asp.net буде працювати
але я знаю VBscript так його, що я використовую

нижче знайдіть мій файл VBScript

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3

Встановити objFS = CreateObject ("Scripting.FileSystemObject")
Встановити objNewFile = objFS.CreateTextFile ("status.html")

Встановити objConnection = CreateObject ("ADODB.Connection")
Встановити objRecordset = CreateObject ("ADODB.Recordset")

call = 0
opencalls = 0
closedcalls = 0
unassignedcalls = 0
pb = 0
pg = 0
dp = 0
kw = 0

objConnection.Open "DSN = spice2;"

objRecordset.CursorLocation = adUseClient
objRecordset.Open "Статус SELECT, призначений_до, closed_at FROM Tickets", objConnection, _
adOpenStatic, adLockOptimistic

objRecordSet.MoveFirst

Зробити до objRecordset.EOF

'Wscript.Echo objRecordset.Fields.Item ("id")

Якщо objRecordset.Fields.Item ("status") = "відкрити" Тоді
opencalls = opencalls + 1
End If

Якщо не IsNull (objRecordset.Fields.Item ("closed_at")) Тоді
closedDate = Ліворуч (objRecordset.Fields.Item ("closed_at"), 10)
Якщо objRecordset.Fields.Item ("status") = "закрито" Тоді
Якщо DateDiff ("d", closeddate, now) <30 Тоді
closedcalls = закриті дзвінки + 1
End If
Кінець, якщо
End If

Якщо IsNull (objRecordset.Fields.Item ("assign_to")) Тоді
unassignedcalls = unassignedcalls + 1
End If

Якщо objRecordset.Fields.Item ("assign_to") = "1" Тоді
Якщо objRecordset.Fields.Item ("status") = "відкрити" Тоді
pb = pb + 1
End If
End If

Якщо objRecordset.Fields.Item ("assign_to") = "2" Тоді
Якщо objRecordset.Fields.Item ("status") = "відкрити" Тоді
dp = dp + 1
End If
End If

Якщо objRecordset.Fields.Item ("assign_to") = "3" Тоді
Якщо objRecordset.Fields.Item ("status") = "відкрити" Тоді
pg = pg + 1
End If
End If

Якщо objRecordset.Fields.Item ("assign_to") = "4" Тоді
Якщо objRecordset.Fields.Item ("status") = "відкрити" Тоді
kw = kw + 1
End If
End If

objRecordSet.MoveNext

Петля

виклики = objRecordset.RecordCount

objRecordSet.Close
objConnection.Close

objNewFile.WriteLine "// W3C // DTD HTML 4.01 // EN>"
objNewFile.WriteLine ""
objNewFile.WriteLine ""
objNewFile.WriteLine ""
objNewFile.WriteLine ""
objNewFile.WriteLine "Система статусу викликів служби підтримки Vernalis ITI"
objNewFile.WriteLine ""
objNewFile.WriteLine ""

objNewFile.WriteLine "Статус виклику @" & Зараз () & "

'

objNewFile.WriteLine "

'

Якщо непризначені дзвінки> 0 Тоді

objNewFile.WriteLine ""
objNewFile.WriteLine "UN:" & непризначені виклики & "
'
objNewFile.WriteLine ""

Ще

objNewFile.WriteLine "
'

End If

objNewFile.WriteLine "PB:" & pb & "
DP: "& dp &"
KW: "& kw &"
PG: "& стор

objNewFile.WriteLine "

'

Якщо відкритивиклики> 50, то

objNewFile.WriteLine ""
objNewFile.WriteLine opencalls
objNewFile.WriteLine ""

Ще

objNewFile.WriteLine ""
objNewFile.WriteLine opencalls
objNewFile.WriteLine ""

Кінець, якщо

objNewFile.WriteLine "
"& закриті дзвінки &" Виклики закриті за останні 30 днів "

objNewFile.WriteLine ""
objNewFile.WriteLine ""
objNewFile.Close

Крок 3: ключові точки VBScript

як я ще не прокоментував цей сценарій, але ще не згадую про деякі ключові моменти цього сценарію

objRecordset.CursorLocation = adUseClient
objRecordset.Open "Статус SELECT, призначений_до, closed_at FROM Tickets", objConnection, _
adOpenStatic, adLockOptimistic

тягне з БД всі записи, але тільки 3 поля я зацікавив я знайшов, якщо я був ледачий і витягнув всі поля я отримав z_fail помилка, яку я думаю, пов'язана з нульовими полями, тому я тільки тягнути те, що мені потрібно

мій масивний список операторів if обробляє кожен запис, а за умов, що виконуються, додає 1 до ряду змінних

2-я половина сценарію записує файл HTML за рядком
kep бали

objNewFile.WriteLine ""

перезавантажте цю сторінку кожні 10 секунд

Якщо непризначені дзвінки> 0 Тоді

objNewFile.WriteLine ""
objNewFile.WriteLine "UN:" & непризначені виклики & "
'
objNewFile.WriteLine ""

Ще

objNewFile.WriteLine "
'

ця частина розглядає змінні непризначені виклики, і якщо більше, ніж 0 записує рядки до знятого значення цієї змінної, а деякі формування з зовнішнього css-файлу див.

якщо не більше 0, він записує лише a
(новий рядок у html)

я роблю щось подібне для кількості відкритих дзвінків пізніше, якщо більше 50 відкритих дзвінків використовують різні форми

objNewFile.WriteLine "PB:" & pb & "
DP: "& dp &"
KW: "& kw &"
PG: "& стор

Ця лінія показуватиме кількість дзвінків, призначених кожній з 4-х користувачів моєї команди
це переміщується ліворуч від css

мій останній біт
objNewFile.WriteLine "
"& закриті дзвінки &" Виклики закриті за останні 30 днів "

це показує кількість закритих дзвінків за останні 30 днів

Якщо не IsNull (objRecordset.Fields.Item ("closed_at")) Тоді
closedDate = Ліворуч (objRecordset.Fields.Item ("closed_at"), 10)
Якщо objRecordset.Fields.Item ("status") = "закрито" Тоді
Якщо DateDiff ("d", closeddate, now) <30 Тоді
closedcalls = закриті дзвінки + 1

який я визнаю, це безлад, і я впевнений, що є кращі способи зробити це

тепер з усіма вищезгаданими я знаю, що є багато способів зробити все це
і багато обробки можна зробити в tsql
але я краще на швидкий брудний VBScript, ніж SQL

Крок 4: css

мій CSS файл нижче, якщо хтось хоче відтворити те, що я до сих пір
body {
сім'я шрифтів: Грузія, "Times New Roman",
Times, serif;
розмір шрифту: 30 пт;
колір: чорний;
колір фону: білий}

#leftmain {
поплавок: лівий;
ширина: 15%; }

span.open {
сімейство шрифтів: Helvetica, Женева, Arial,
SunSans-Regular, без засічок;
колір: зелений;
розмір шрифту: 400 пт

span.openhigh {
сімейство шрифтів: Helvetica, Женева, Arial,
SunSans-Regular, без засічок;
колір: червоний;
розмір шрифту: 400 пт

span.unass {
сімейство шрифтів: Helvetica, Женева, Arial,
SunSans-Regular, без засічок;
колір: червоний;
колір фону: білий}

Крок 5: зразок створеного html

Нижче наведено копію html-файлу з сьогоднішнього дня
// W3C // DTD HTML 4.01 // EN>

Система статусу викликів служби підтримки ITI

Статус виклику @ 16/01/2009 13:44:00





ПБ: 7
DP: 12
KW: 19
PG: 1


39


16 Виклики закриті за останні 30 днів

Крок 6: майбутнє

Я тепер додав до мого коду так, що кожні 30 хвилин, коли datepart min з NOW є 0 або 30

кожен інженер присвоєний номер виклику множиться на випадкове число

потім на екрані відображається найнижча кількість anme з повідомленням "Make Tea"

Крок 7: ASP

з допомогою мого frineds на

http://www.halfshoring.com/

все це було написано в ASP
і були зроблені більш ефективними

код ASP нижче
------------------------------------------------
ï »¿(дата (" зараз ") + 30))"


Налаштувати змінні стовпців, які ми будемо використовувати замість елемента (""), використовуваного в VBS
Dim ColStatus, ColAssignedTo, ColClosedAt
ColStatus = 0
ColAssignedTo = 1
ColClosedAt = 2

'Створення об'єктів бази даних
майже те ж саме, що і VBS, але використовуйте Server.CreateObject замість CreateObject

Dim arrRecords
Dim blnResults

Dim objConn
Встановити objConn = Server.CreateObject ("ADODB.Connection")
Dim objRS
Встановити objRS = Server.CreateObject ("ADODB.Recordset")

'Відкрийте підключення БД
objConn.Open (strConn)

'Запустіть SQL і завантажте його в набір записів
objRS.Open strSql, objConn

'Тільки приступити, якщо набір записів не порожній, інакше зупиниться
Якщо не objRS.EOF Потім
'Завантажте весь набір записів у масив
"Це означає, що ми не збережемо набір записів відкритим, коли будуємо сторінку,
'Таким чином, зменшення навантаження на сервер БД і на IIS
arrRecords = objRS.GetRows ()
Ще
Response.End
End If

'Закрийте підключення БД
objConn.Close

'Очистіть наші змінні БД і набору записів
Встановити objConn = Ніщо
Встановити objRS = Ніщо

'Тепер дані зберігаються в arrRecords

'Створіть наші лічильники
Dim intOpenCalls, intUnassignedCalls, intClosedCalls
Dim intPBCalls, intDPCalls, intPGCalls, intKWcalls

- Проведіть всі дані в arrRecords і обчисліть підсумки
Dim i
i = 0
Зробіть

Якщо arrRecords (ColStatus, i) = "відкрито" Тоді
intOpenCalls = intOpenCalls + 1
End If

Якщо не IsNull (arrRecords (ColClosedAt, i)) і arrRecords (ColStatus, i) = "закрито"
intClosedCalls = intClosedCalls + 1
End If

Якщо IsNull (arrRecords (ColAssignedTo, i)) Тоді
intUnassignedCalls = intUnassignedCalls + 1
End If

Якщо arrRecords (ColAssignedTo, i) = "1" і arrRecords (ColStatus, i) = "відкрити"
intPBCalls = intPBCalls + 1
ElseIf arrRecords (ColAssignedTo, i) = "2" І arrRecords (ColStatus, i) = "відкрити"
intDPCalls = intDPCalls + 1
ElseIf arrRecords (ColAssignedTo, i) = "3" І arrRecords (ColStatus, i) = "відкрити"
intPGCalls = intPGCalls + 1
ElseIf arrRecords (ColAssignedTo, i) = "4" І arrRecords (ColStatus, i) = "відкрити"
intKWCalls = intKWCalls + 1
End If

i = i + 1

Петля до i> UBound (arrRecords, 2)

Dim intTotalCalls
intTotalCalls = Ubound (arrRecords, 2)

Тепер у нас є всі наші значення, дозволяє створити HTML-сторінку

%>
// W3C // DTD HTML 4.01 // EN>

Система статусу викликів служби підтримки ITI

Статус виклику @





PB:
DP:
KW:
PG:



дзвінки закрито за останні 30 днів

Крок 8: примітка 1

пункт для відзначення

якщо користувач реєструє виклик
і закриває його перед призначенням користувачеві
він буде показуватися як непризначений
навіть якщо вона закрита

на закінчення
Я не дуже добре пишу, як теж
Я постараюся відповісти на будь-які запити людей

VBScript запускається кожні 60 секунд з планувальника завдань Windows
і сам html перезавантажується кожні 10 секунд, тому екран зазвичай відстає до 70 секунд

оскільки жоден скрипт не працює в браузері, браузер використовував дозу не має значення

з плином часу я збираюся додати додаткові поля на дисплей, але я не впевнений, що ще

всі прийоми вітаються
разом з думками та коментарями

Мене запитали про абревіації
pb
стор
db
кВт

це ініціали членів моєї команди
і цифри, що з'являються поряд з кожною, - це кількість завдань, призначених кожній людині

ініціали кодуються на сторінці asp, але з часом я отримаю імена / ініціали з відповідної таблиці