Version 33.1 by superadmin on 2024/10/13, 15:35

Show last authors
1 [[返回本章节索引>>http://itil4hub.cn/bin/view/G%20%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99/ITIL%E5%AE%9E%E6%96%BD%E9%A1%B9%E7%9B%AE%E8%B5%84%E6%96%99/ITIL%E5%AE%9E%E6%96%BD%E9%A1%B9%E7%9B%AE%E6%B5%81%E7%A8%8B%E8%AE%BE%E8%AE%A1%E6%96%B9%E6%A1%88%E9%9B%86/%E9%97%AE%E9%A2%98%E7%AE%A1%E7%90%86/]] 阅读下一章
2
3
4 **文档信息**
5
6 [[image:1728803823948-232.png]]
7
8
9 **版本历史**
10
11 [[image:1728803862626-671.png]]
12
13
14 = **1.设计概要** =
15
16
17 问题管理流程的根本目的是消除或减少生产环境中事件发生的数量和严重程度,从而为企业建立一个稳定的IT环境,提高IT服务的可用性。此流程对发生在生产环境中的问题进行管理,找出产生这些问题的根本原因,然后根据需要通过变更请求(RFC)、变通方法或建议的预防性措施来防止事件的再次发生。
18
19 问题管理流程着重于消除事件或减少事件发生,确定事件的根本原因。主要活动包括分析事件、找出问题、分派问题、确定根本原因以及找出解决方案、回顾及关闭,以消除事件或在其发生时降低对用户或业务的影响。
20
21
22 = **2.总体方案** =
23
24 [[image:1728803903848-811.png]]
25
26
27 问题管理概要流程描述如下:
28
29 |**序号**|**步骤名称**|(% style="width:114px" %)**责任人**|(% style="width:837px" %)**说明**
30 |200.1|问题确定与记录|(% style="width:114px" %)问题处理专家/问题经理|(% style="width:837px" %)(((
31 1. 对事件研究、维护提出以及分析发现的潜在问题,在系统中进行记录,并对问题信息进行描述
32 1. 问题处理专家创建的问题,如果需要,应提交给问题经理确认;否则应抄送问题经理备案
33 1. 问题经理创建的问题,可与200.2环节合并,直接分派给问题处理专家
34 )))
35 |200.2|问题确认与分派|(% style="width:114px" %)问题处理专家/问题经理|(% style="width:837px" %)(((
36 1. 问题处理专家提交上来的问题,问题经理应对其进行审核确认,确定问题是否需要继续处理。如果问题确认无效,则关闭问题,并通知请求者
37 1. 问题经理创建或审核的问题,分派给相应问题处理专家;问题处理专家创建的问题,可以自行处理或分派给现场厂商
38 )))
39 |200.3|分析并诊断问题/提供变通方法|(% style="width:114px" %)(((
40 问题处理专家/
41
42 厂商
43 )))|(% style="width:837px" %)(((
44 1. 问题处理专家/厂商接受问题,更新问题状态及实际开始诊断时间
45 1. 如需其他问题处理专家协助分析、诊断,则通知问题经理,由问题经理协调资源,成立问题分析小组,举行问题根本原因分析研讨会议,并确定问题的潜在原因,提供或更新问题变通方法,以降低问题在根本解决前对业务产生的影响
46 1. 将问题产生根本原因及变通方法及时更新到问题记录中
47 1. 将问题根本原因及变通方法通知问题经理
48 1. 如果预计无法找到问题的根本原因,及时通报问题经理
49 )))
50 |200.4|开发、确认、实施解决方案|(% style="width:114px" %)(((
51 问题处理专家/
52
53 厂商
54 )))|(% style="width:837px" %)(((
55 1. 问题处理专家或厂商推荐并测试根本性解决方案,并确保这些方案彻底解决问题,更新问题记录中的实际诊断结束时间
56 1. 问题处理专家判断实施上述解决方案/变通方法是否需要通过其他流程(如变更流程等)
57 1*. 如需要,提交到相应的流程,并和该流程人员保持沟通,了解问题的解决状况
58 1*. 如不需要变更,计划并组织实施解决方案以解决问题
59 1. 如果需要第三方介入,则问题处理专家负责与第三方的接口与协调
60 1. 如果问题处理专家预计在无法找到根本解决方案或虽有解决方案但目前无法实施(如实施的代价太大),通报问题经理
61 )))
62 |200.5|问题监控|(% style="width:114px" %)(((
63 问题经理/
64
65 问题处理专家
66 )))|(% style="width:837px" %)(((
67 问题经理和问题处理专家负责问题分析、诊断、解决过程中的跟踪和监控:
68
69 1. 在问题找到根本原因或解决方案之后,根据需要,向服务台或问题请求人员通报该问题的解决情况,以帮助和提高事件的解决率
70 1. 对于问题处理专家认为无法找到根本原因或虽有解决方案,但目前无法实施(如实施的代价太大等),问题经理协调问题处理专家进行分析判断,决定该问题是继续诊断、解决还是关闭该问题
71 )))
72 |200.6|问题回顾|(% style="width:114px" %)(((
73 问题经理/
74
75 问题处理专家
76 )))|(% style="width:837px" %)(((
77 1. 问题处理专家和问题经理对问题进行回顾,确认问题是否被正确的解决,如果没有解决,转到200.3分析并诊断问题/提供变通方法
78 1. 整理问题处理经验,提交到知识管理系统。
79 )))
80 |200.7|问题关闭|(% style="width:114px" %)问题处理专家|(% style="width:837px" %)(((
81 1. 对问题记录的信息项进行总结,更新问题记录并关闭问题
82 )))
83
84
85 问题管理存在以下实际应用场景:
86
87 1. 突发事件升级为问题
88 1. 运维人员手动提交问题
89 1. 根据事件趋势分析结果提交问题
90
91
92 = **3.模块与周边产品集成** =
93
94
95
96
97
98
99 = **4.详细设计与开发指导** =
100
101 == **4.1.技术细节** ==
102
103 == **4.1.1.表单(format)** ==
104
105
106 * PM.problem.logging
107
108 PM.problem.planning
109
110 PM.problem.investigation
111
112 PM.problem.resolution
113
114 PM.problem.closure
115
116 添加“问题来源”、“重复问题”。
117
118 “问题来源:”的文本控件的输入属性为MS.source,值列表为“事件升级;维护提出;趋势分析”。
119
120 “是否为重复问题:”的组合控件的输入属性为MS.duplicate,值列表为“1;0”,显示列表为“是;否”。
121
122 “是否为重大问题:”的组合控件的输入属性为MS.critical,值列表为“1;0”,显示列表为“是;否”。
123
124 将标签“问题协调员”改为“问题处理人”。
125
126 将表单中“区域:”和“分区:”标签的标题分别修改为“领域:”和“子领域:”。
127
128 隐藏“文件夹:”的标签控件和文本输入控件。
129
130 隐藏“服务” 的标签控件和文本输入控件。
131
132 将“公司”选项卡的“可见条件” [$G.multi]=true去掉,并设置该选项卡为不可见。
133
134 将“任务”选项卡设置为不可见。
135
136 将“评估”选项卡改为“受影响的配置项”。并该选项卡下面的“估计每人每天的次数:”、“估计成本”的标签和文本控件隐藏。添加标签,设置标题为“请通过选择"主要配置项"来添加多个受影响的配置项:”。
137
138
139 [[image:1728803998299-174.png]]
140
141
142 将“活动”选项下面控件的标题修改如下:
143
144 [[image:1728804015751-690.png]]
145
146
147
148 * advFind.search.problem
149
150 添加“问题来源”、“重复问题”。
151
152 添加“问题来源”,输入属性为“MS.source”,值列表为“事件升级;维护提出;趋势分析”。
153
154 “重复问题”的选项控件的输入属性为MS.duplicate。
155
156 将表单中“区域:”和“分区:”标签的标题分别修改为“领域:”和“子领域:”。
157
158 标签“问题协调员”改为“问题处理人”。
159
160 将“搜索下列状态的记录单:”控件删除掉。
161
162 隐藏“文件夹”控件。
163
164
165 [[image:1728804100665-159.png]]
166
167
168 * 修改以下表单
169
170 PM.error.logging
171
172 PM.error.planning
173
174 PM.error.investigation
175
176 PM.error.resolution
177
178 PM.error.closure
179
180 “问题协调员:”改为“问题处理人:”
181
182 “匹配的配置项数:”改为“受影响的配置项数:”
183
184 “区域:”改为“领域:”
185
186 “子区域:”改为“子领域:”
187
188 隐藏“相关交互计数:”
189
190 隐藏“文件夹:”
191
192
193 [[image:1728804130498-873.png]]
194
195
196
197 “活动更新”改为“提供更新”
198
199 “日记更新”改为“日志”
200 “活动历史记录”改为“历史活动”
201
202 “更新类型:”改为“活动类型:”
203
204
205 [[image:1728804152433-364.png]]
206
207
208
209 隐藏“相关记录”选项下面的子选项“交互”
210
211 [[image:1728804172053-646.png]]
212
213
214 * 创建表单PM.notify.registered
215
216 表单上用标签来显示问题工单各个字段的内容。比如标签“领域:”后面紧跟着还有一个标签,这个标签标题为空,它的输入属性为”subcategory”,以此来动态生成邮件内容。
217
218
219 [[image:1728804209751-713.png]]
220
221
222 * 表单PM.notify.assigned
223
224 表单上用标签来显示问题工单各个字段的内容。比如标签“领域:”后面紧跟着还有一个标签,这个标签标题为空,它的输入属性为”subcategory”,以此来动态生成邮件内容。
225
226
227 [[image:1728804233983-723.png]]
228
229
230 * 表单PM.notify.assigned.group
231
232 表单上用标签来显示问题工单各个字段的内容。比如标签“领域:”后面紧跟着还有一个标签,这个标签标题为空,它的输入属性为”subcategory”,以此来动态生成邮件内容。
233
234
235 [[image:1728804260239-719.png]]
236
237
238 == **4.1.2.表单控制(formatctrl)** ==
239
240
241 * 表单控制rootcause
242
243 计算
244
245 将计算语句incident.category in $file="problem"改为incident.category in $file="故障"
246
247 [[image:1728804290109-635.png]]
248
249 验证
250
251 将以下验证语句去掉。
252
253 [[image:1728804305533-650.png]]
254
255 * 表单控制knownerror
256
257 加false将验证以下语句禁用。
258
259 [[image:1728804325508-222.png]]
260
261
262 == **4.1.3.处理定义(Process)** ==
263
264 * process="rca.view.init"
265
266 将下面的初始表达式
267
268 if ($L.mode="add") then (rcStatus in $L.file="Open")
269
270 改为:if ($L.mode="add") then (rcStatus in $L.file="已登记")
271
272
273 == **4.1.4.显示选项(displayoptions)** ==
274
275 * 将以下displayoption的用户条件设置为false :
276
277 id="rca.view_ok_1"
278
279 id="rca.view_ok"
280
281 id="rca.view_previousphase"
282
283 id="kne.view_previousphase"
284
285 id="kne.view_ok "
286
287 id="rca.view_getsla"
288
289 id="rca.task.view_getsla"
290
291 id="rca.view_do nothing"
292
293 id="rca.task.view_do nothing"
294
295
296 == **4.1.5.活动动作(activityactions)** ==
297
298 * table#"rootcause"
299
300 将名称和描述改成中文。
301
302 Open:登记
303
304 Reassignment:重新分配
305
306 Assignment:分配
307
308 Phase Change:更改阶段
309
310 Reopen:重新打开
311
312 Status Change:更改状态
313
314 Closed:关闭
315
316 Cancelled:取消
317
318 Workaround Update:更新变通方案
319
320 External Update:外部更新
321
322
323 效果图如下:
324
325 [[image:1728804373117-464.png]]
326
327 [[image:1728804406592-495.png]]
328
329 [[image:1728804418524-225.png]]
330
331
332 * table#"knownerror"
333
334 将名称和描述改成中文。
335
336 Open:登记
337
338 Reassignment:重新分配
339
340 Assignment:分配
341
342 Phase Change:更改阶段
343
344 Reopen:重新打开
345
346 Status Change:更改状态
347
348 Closed:关闭
349
350 Cancelled:取消
351
352 Workaround Update:更新变通方案
353
354 External Update:外部更新
355
356
357 [[image:1728804442563-918.png]]
358
359 [[image:1728804453159-946.png]]
360
361
362 == **4.1.6.数据** ==
363
364 为数据表注入定制好的中文数据。
365
366 请直接双击zip文件,解压出unl文件,然后用SM的数据库管理器导入数据。
367
368
369 **问题阶段(表名:rootcausephase)**
370
371 [[image:1728804471764-343.png]]
372
373
374 **问题控制类别(表名:rootcausecat)**
375
376 [[image:1728804487048-226.png]]
377
378
379 **问题状态(表名:ModuleStatus)**
380
381 [[image:1728804500431-649.png]]
382
383
384 **问题活动(表名:activitytype)**
385
386 [[image:1728804537907-970.png]]
387
388
389 **已知错误阶段**
390
391 [[image:1728804549777-897.png]]
392
393
394 **已知错误类别**
395
396 [[image:1728804569099-343.png]]
397
398
399 **已知错误活动(表名:activitytype)**
400
401 [[image:1728804581942-816.png]]
402
403
404 == **4.1.7.全局列表(globallists)** ==
405
406 * name=”PM Activity Types”
407
408 更改值列表如下:
409
410 {"信息更新","分析与调查","已关闭","与客户沟通","与供应商沟通","已登记","操作员更新","已诊断部分问题","阶段变更","问题已标识","问题重现","重新分配","重新打开","来自客户的更新","变通方案", "已分配","状态变更","已取消","变通方案更新","解决方案更新"}
411
412 == ==
413
414 == **4.1.8.系统消息(scmessage)** ==
415
416 * 把更新消息编号2210的文本“请提供更新。”改为“请提供当前更新的详细描述。”
417
418 语言代码: zh-Hans
419
420 类别: us
421
422 消息编号: 2210
423
424 严重度: 1
425
426 文本:请提供当前更新的详细描述。
427
428
429 * 将消息编号810的文本“请提供区域。”更改为“请提供领域。”
430
431 [[image:1728804613899-619.png]]
432
433
434 * 将消息编号811的文本“请提供子区域。”更改为“请提供子领域。”
435
436 [[image:1728804637281-152.png]]
437
438
439 * 将消息编号1502的文本“请提供标题。”更改为“请提供简要描述。”
440
441 [[image:1728804654335-863.png]]
442
443
444 * 将消息编号813的文本“请提供描述。”更改为“请提供详细说明。”
445
446 [[image:1728804704383-985.png]]
447
448
449 == **4.2.表结构** ==
450
451 |**数据库表**|**标签**|**字段名**|**数据类型**|**是否为必填**|**Oracle映射**
452 |rootcause|问题来源|MS.source|character|否|varchar2(40)
453 |rootcause|是否为重复问题|MS.duplicate|character|否|char(1)
454 |rootcause|是否为重大问题|MS.critical|Character|否|Char(1)
455
456 SQL语句:
457
458 ALTER TABLE "SM7ADMIN"."ROOTCAUSEM1" ADD ( "MS_SOURCE" VARCHAR2(40), "MS_DUPLICATE" CHAR(1), "MS_CRITICAL" CHAR(1))
459
460 == ==
461
462 == **4.2.1.字段帮助内容** ==
463
464 为以下数据库表的字段添加帮助内容:
465
466 |**数据库表**|**字段名**|**帮助内容**
467 |rootcause|MS.source|(((
468 描述问题的来源。
469
470 事件升级:事件恢复服务后提出的问题,以便对事件的根本原因进行分析。
471
472 维护提出:技术专家在日常维护工作中提出的问题。
473
474 趋势分析:通过分析事件记录找出的问题。
475 )))
476 |rootcause|MS.duplicate|描述当前问题记录是否为重复问题。
477 |rootcause|MS.critical|描述当前问题记录是否为重大问题。如果是重大问题,在关闭问题前需要提供重大问题报告。
478
479
480 == **4.3.通知与告警** ==
481
482 == **4.3.1.邮件(Notification)** ==
483
484 创建以下通知定义。邮件的格式由“窗体”参数来控制。以下用到的窗体均已在表单设计章节创建。
485
486 ID:PM_Open_1
487
488 [[image:1728804783010-977.png]]
489
490 邮件消息编号等于900的触发条件为:assignee.name in $L.file~~=operator() and assignee.name in $L.file~~=nullsub(assignee.name in $L.file.save, "Empty")
491
492 邮件消息编号等于908的触发条件为:nullsub(assignee.name in $L.file, "")="" and assignment in $L.file~~=nullsub(assignment in $L.file.save, "")
493
494 == ==
495
496 == **4.3.2.短信(SMS)** ==
497
498 服务管理系统发送短信通知的实现设计如下:
499
500 服务管理系统在问题创建后,会向Oracle数据库中的OutBox表写入目标手机号码和短信内容;接下来外部的事件监控平台将OutBox表里的数据同步到XX短信通的数据库。XX短信通平台将把这些数据库记录作为短信发送给接收人。
501
502 触发事件:当用户创建问题时
503
504 接收人类型:分配组、问题处理人
505
506 处理规则:默认只发送邮件,如果优先级为严重和较高,则需要加短信。如果事件已经分配处理者,通知处理者;如果没有处理者,通知将发给整个分配组成员。
507
508 == ==
509
510 == **4.3.3.代码实现** ==
511
512 * ScriptLibrary: MS_SMS_Notification
513
514 说明:给配置组发短信时,检索出各个配置组成员的移动电话号码,将短信依次写入OutBox表。给处理者发短信时,检索出处理者的移动电话号码,然后将短信写入OutBox表,接下来短信的实际发送由诺亚短信通来处理。
515
516 **function** **sendMsgToGroup**(group,msg,module)
517
518 {
519
520 **var** SMSFile=**new** **SCFile**("OutBox");
521
522 **var** AssignmentFile=**new** **SCFile**("assignment");
523
524 **var** rcAssignment=**AssignmentFile.doSelect**("name=\""+group+"\"");
525
526
527 **if** (rcAssignment==RC_SUCCESS)
528
529 {
530
531 **var** OperatorArray=**system.functions.denull**(AssignmentFile.operators);
532
533 **var** i=0;
534
535
536 **for** (i **in** OperatorArray)
537
538 {
539
540 **var** mobile=**getOperatorMobile**(OperatorArray[i]);
541
542
543 SMSFile.ID=**generateOutBoxID**();
544
545 SMSFile.ExpressLevel=2; ~/~/可通过此字段控制发送信息的先后顺序.0为最高优先级;1较高优先级;2普通优先级.
546
547 SMSFile.Sender=
548
549 SMSFile.ReceiverMobileNo=mobile;
550
551 SMSFile.Msg=msg;
552
553 SMSFile.SendTime=**system.functions.tod**();
554
555 SMSFile.CommPort=0; ~/~/当系统有多个设备同时工作的时候,如需指定使用某串口上的设备发送信息,则填写串口号,如不需要指定则填写0,这时系统根据各个设备的忙闲情况自动分配使用。
556
557
558 **var** rcSMSFile=**SMSFile.doInsert**();
559
560
561 **if** (rcSMSFile!=RC_SUCCESS)
562
563 {
564
565 **print**("发给用户"+OperatorArray[i]+"的短信写入数据库失败。");
566
567 }
568
569 }
570
571 }
572
573 }
574
575
576
577 **function** **sendMsgToOperator**(operator,msg,module)
578
579 {
580
581 **var** SMSFile=**new** **SCFile**("OutBox");
582
583
584 SMSFile.ID=**generateOutBoxID**();
585
586 SMSFile.ExpressLevel=2; ~/~/可通过此字段控制发送信息的先后顺序.0为最高优先级;1较高优先级;2普通优先级.
587
588 SMSFile.Sender=
589
590 SMSFile.ReceiverMobileNo=**getOperatorMobile**(operator);
591
592 SMSFile.Msg=msg;
593
594 SMSFile.SendTime=**system.functions.tod**();
595
596 SMSFile.CommPort=0; ~/~/当系统有多个设备同时工作的时候,如需指定使用某串口上的设备发送信息,则填写串口号,如不需要指定则填写0,这时系统根据各个设备的忙闲情况自动分配使用。
597
598
599 **var** rcSMSFile=**SMSFile.doInsert**();
600
601
602 **if** (rcSMSFile!=RC_SUCCESS)
603
604 {
605
606 **print**("发给用户"+OperatorArray[i]+"的短信写入数据库失败。");
607
608 }
609
610 }
611
612
613 **function** **getOperatorMobile**(operator)
614
615 {
616
617 **var** OperatorFile=**new** **SCFile**("operator");
618
619 **var** rcOperator=**OperatorFile.doSelect**("name=\""+operator+"\"");
620
621 **if** (rcOperator==RC_SUCCESS)
622
623 {
624
625 **var** ContactFile=**new** **SCFile**("contacts");
626
627 **var** rcContact=**ContactFile.doSelect**("contact.name=\""+ContactFile.contact_name+"\"");
628
629 **if** (rcContact==RC_SUCCESS)
630
631 {
632
633 **return** ContactFile.portable_phone;
634
635 }
636
637 }
638
639 }
640
641
642 **function** **generateOutBoxID**()
643
644 {
645
646 **return** **system.functions.rtecall**("callrad",rteReturnValue,"getnumb","OutBox", "ID","string");
647
648 }
649
650
651 1. 为activityproblem表上创建触发器FireProblemNotification.aft.add
652
653 **if** (record.type=="已登记")
654
655 {
656
657 **var** ProblemFile=**new** **SCFile**("rootcause");
658
659 **if** (**ProblemFile.doSelect**("id=\""+ record.id+ "\"")==RC_SUCCESS)
660
661 {
662
663 **system.library.MS_EMail_Notification.sendEmail**(ProblemFile,"PM_Open");
664
665 **if** (ProblemFile.priority_code==1 || ProblemFile.priority_code==2)
666
667 {
668
669 **var** priority=(ProblemFile.priority_code==1)?"1 - 严重":"2 - 高";
670
671 **var** msg="新事件"+ProblemFile.id+ " 优先级"+priority+" "+ProblemFile.brief_description+"已登记。";
672
673
674 **if** (**system.functions.nullsub**(ProblemFile.assignee_name,"NULL")!="NULL")
675
676 {
677
678 **system.library.SMSnotification.sendMsgToOperator**(ProblemFile.assignee_name,msg);
679
680 }
681
682 **else**
683
684 {
685
686 **system.library.SMSnotification.sendMsgToGroup**(ProblemFile.assignment,msg);
687
688 }
689
690 }
691
692 }
693
694 }
695
696
697 == **4.4.角色及相关配置文件** ==
698
699
700 * 打开数据库管理器,进入文件rcenv,搜索出已有的配置文件。
701
702 以problem analyst为模板添加安全配置文件:问题处理专家;
703
704 以problem manager为模板添加安全配置文件:问题经理.
705
706
707 * 打开数据库管理器,进入文件userrole,搜索出已有的突发事件用户角色。
708
709 以problem analyst为模板添加角色“问题处理专家”,并问题配置文件文件为:“问题处理专家”。
710
711 以prolem manager为模板添加角色“问题经理”,并将突发事件配置文件替换为“问题经理”。
712
713
714 = =
715
716 = **5.人力评估** =
717
718 |**技能要求**|**人天数**|**说明**
719 |中级|17|(((
720 工作难点:
721
722 模块裁剪;
723
724 流程定制;
725
726 邮件短信定制。
727 )))
728
729 = =
730
731 = **6.主要测试计划** =
732
733 详见问题管理单元测试计划
734
735
736
深圳市艾拓先锋企业管理咨询有限公司