DMS的安全规则和审批流程相互关联。当DMS系统内置的工单审批模板不能满足您的业务需求,您可自定义工单的审批流程。本文介绍如何自定义工单审批流程,并将该审批流程应用至实例关联的安全规则,该安全规则中设置了生产环境类型的数据库在提交数据库变更工单时,都会使用该审批流程。
方案概览
-
新建审批节点
将需要参与工单审批的DMS用户加入到审批节点。
-
新建审批模板
自定义工单审批流程。
-
将审批模板应用至实例关联的安全规则
自定义的审批模板应用至实例关联的安全规则后,该审批模板才会生效。
前提条件
-
系统角色为DBA或管理员。查看系统角色的具体方法,请参见查看我的系统角色。
-
实例的管控模式为安全协同。
注意事项
-
一个实例只能绑定一个安全规则(默认规则或自定义规则)。
-
建议工单审批流程中至少设置两个审批人,否则可能会存在误审批或审批不及时。
-
实例级安全规则可以针对实例或数据库,设置不同的审批流程。但是在实际业务环境中实例级安全规则可能有一定的局限性,例如:
-
数据库实例上只有1个DBA,但为避免单人审批影响整体审批流程进度,需要多个DBA角色参与审批。
-
数据库实例上有多个不同业务的数据库共用,需要多个业务方都处于审批流程中,按需审批对应业务的操作工单流程。
-
步骤一:创建审批节点
登录数据管理DMS 5.0。
单击控制台左上角的
图标,选择。说明若您使用的是非极简模式的控制台,在顶部菜单栏中,选择。
-
在审批节点页签下,单击新增审批节点,并在该对话框中配置相关信息。
本文以创建两个审批节点进行操作演示。分别为测试管理员db_doc、测试用户dmsuser。
对话框包含节点名称、备注和审批人三个必填字段,填写完成后单击提交。
说明一个审批节点可选择添加一个或多个审批人。当审批节点存在多个审批人时,有一人审批通过即可完成该节点的审批。
-
单击提交。
提交后,页面显示用户/角色列表,包含两条已创建的记录:测试用户(ID 4505448,数据库
db_doc,用户名dmsuser_test)和测试管理员(ID 4505433,数据库db_doc,用户名db_doc),类型均为自定义,支持编辑和删除操作。
步骤二:创建审批模板
-
在审批模板页签下,单击新增审批模板,并在该对话框中配置相关信息。
本示例的模板名称为测试用户->测试管理员、备注为定义审批流程,先测试用户审批,再测试管理员审批,添加审批节点顺序为测试用户、测试管理员。
-
单击提交。
-
新增完成后,记录新创建的审批模板ID。
本示例的模板ID为4399383。
该审批模板的审批节点为测试用户->测试管理员,类型为自定义,关联对象为
db_doc,审批层级数为 2,表示先由测试用户审批,再由测试管理员审批。
步骤三:将审批模板应用至目标安全规则
单击控制台左上角的
图标,选择。说明若您使用的是非极简模式的控制台,在顶部菜单栏中,选择。
-
在安全规则列表页面,单击目标规则右侧的编辑。
-
在安全规则详情页面,单击SQL变更。
-
检测点选择风险审批规则,单击中风险审批流程右侧的编辑。
-
在规则DSL文本框中替换模板ID。将配置中的原审批流程ID,替换为新增的审批流程ID4399383。
规则DSL代码示例:
if @fac.risk_level=='middle' then select_approve_template(4399383) end。修改完成后,单击提交。 -
单击提交。
-
在规则详情页面, 启用 中风险审批流程规则。
-
将风险审批规则与风险识别规则进行关联。
在规则中,设置符合要求的数据库使用自定义的审批流程。
在左侧导航栏单击SQL变更,选择风险识别规则页签,在生产环境,默认为中风险规则的操作列单击编辑。
如下为生产环境,默认为中风险的示例规则DSL,该DSL含义:在生产环境类型的线上数据库进行数据导入操作时,DMS都会认为该操作具有中等风险,所以在审批时会采用新创建的测试用户->测试管理员审批模板。
if @fac.env_type in ['product'] then @act.mark_risk 'middle' '中风险:线上环境' end -
验证是否设置成功。
以提交生产环境数据库的数据导入工单举例,在工单审批阶段,若审批对话框中的审批流程与设置的一致,则表示设置成功。更多信息,请参见数据导入。
例如,预览详情对话框中审批流程包含三个审批节点:提交申请(指定用户db_doc)、测试用户(指定用户dmsuser_test)和测试管理员(指定用户db_doc)。
相关操作
成功自定义工单的审批流程之后,您可能还需要为流程的审批人设置接收工单审批的方式。例如短信、钉钉、邮箱等。具体操作,请参见用户管理和使用普通钉钉、专属钉钉、飞书和Lark通知消息。
常见问题
Q:不同数据库如何指定不同的审批人审批?
A:可尝试给不同数据库设置不同的资源Owner,然后在审批模板中加入系统节点Owner。