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