1.概述
本章节我们来一起学习一下元数据发布审批工作流的制作。
待制作的工作流程为:有权限的用户发布元数据后由元数据管理员(用户zhangs)审批,审批通过,流程结束,元数据发布成功;审批不通过,退回给发起者,发起者修改提交后,数据管理员再次审批,直至审批通过。
2.制作步骤
2.1新建工作流
在【系统管理】-【工作流】-【流程管理】下点击【新建】,打开工作流设计页面。
2.2绘制流程图
在工作流设计页面,首先进行流程图绘制。
可以看到:
1)我们使用了一个“URL活动”和一个“审批活动”。后面会让URL活动指向待发布审批的元数据挂载点的最新元数据界面,这样,审批办理时会显示待发布的最新元数据,可以审批通过或者是退回重审。下图是一个元数据发布审批办理界面。
2)“审批活动”后用“单一网关”进行分支,分为审批通过和审批不通过两种情况。选中连接线,设置流向条件为@I_FLOWTO = "1",表示审批通过,设置流向条件为@I_FLOWTO = "2",表示审批不通过。
在流向条件设置对话框中,可查看帮助。
2.3设置URL活动
1)设置活动对象
选中活动1,设置【活动对象】为自定义,【URL设置】为../emeta/mdrecentdata.do?rid=@RID&forwardwith=resource&mdId=@MD_ID&mdName=@MD_NAME&isSameGroup=@IS_SAME_GROUP&groupId=@GROUP_ID
此URL地址为待发布的元数据挂载点的最新元数据页面地址。
2)设置办理人
设置办理人为流程启动者,这样只要用户能发布元数据,则能启动流程。
2.4设置审批活动
1)设置办理人
选中活动2,设置【办理人】为单人办理,【从机构库选择】办理人为zhangs。
2)设置脚本
在审批活动上添加脚本实现审批通过后的发布最新元数据到定版元数据。
选中活动2,在【操作设置】中添加【执行前JS脚本】,脚本如下:
varwnd = leftIframe.contentWindow; varmdId = wnd.mdId; if(!EUI.isStrEmpty(mdId)) { varcanPublish = EUI.post({ url: EUI.getContextPath() + "emeta/mdrecentdata/checkMdPublishRight.do", data: { metadataid: mdId }, async: false }).getResponseJSON(); if(!canPublish) { self.canNotCommit = true; EUI.showError("您没有该元数据的发布权限,无法进行发布操作"); } } |
添加【执行后JS脚本】,脚本如下:
if(self._Paused_param && self._Paused_param.actCommand == "approvalPassed") { varwnd = leftIframe.contentWindow; varmdId = wnd.mdId ; varmdName = wnd.mdName ; varlocationSearch = wnd.location.search; varisSameGroup = getUrlParam(locationSearch, "isSameGroup"); vargroupId = getUrlParam(locationSearch, "groupId"); if(!EUI.isStrEmpty(mdId) && !EUI.isStrEmpty(mdName)) { EUI.post({ url: EUI.getContextPath() + "emeta/mdrecentdata/mdpublish.do", data: { metadataid: mdId, mdName: mdName, samegroup: isSameGroup, groupId: groupId }, callback: function(q) { q.checkResult(); pid = q.getResponseText(); if(!pid) return; varmsgdlg = EUI.getRootWindow().EUI.getGlobalDlg("__ESEN$ShowMessage__"); if(msgdlg && msgdlg.hideDialog) { msgdlg.hideDialog(2000); } setTimeout(function() { showProgressDlg(pid); }, 2500); }, waitMessage: { message: "发布中,请稍候", finish: "发布成功!", error: "发布失败!" } }); functionshowProgressDlg(pid) { require(["emeta/js/utils"], function(utils) { utils.getRootTempDlg({ id: "EMET$MDPublishDialog", objectName: "EMetaProgressDialog", require: "emeta/js/progressdlg", onfinish: function(dlg) { dlg.setOnClose(function() { }); dlg.iframe.height = "0"; if(dlg.iframe.attachEvent) { dlg.iframe.onreadystatechange = function(e) { if(this.readyState == "complete") { dlg.iframe.height = "100%"; dlg.iframe.onreadystatechange = null; } }; } else{ dlg.iframe.onload = function() { dlg.iframe.height = "100%"; dlg.iframe.onload = null; }; } dlg.iframe.src = EUI.getContextPath() + "emeta/mdrecentgroup/delprogress.do?id="+ pid; dlg.showModal(); }, initParams: { caption: "元数据发布进度信息" } }); }) } } } functiongetUrlParam(locationSearch, paramName) { varreg = newRegExp("(^|&)"+ paramName + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 varr = locationSearch.substr(1).match(reg); //匹配目标参数 if(r != null){ returndecodeURIComponent(r[2]); } returnnull; } |
2.5保存并发布
最后,对制作好的工作流进行【保存】和【发布】。
注:工作流只有发布后才能生效。
3.工作流绑定
接下来就可以在发布元数据时使用该工作流了,具体操作可以见管理元数据章节。
请先登录