使用O2OA二次開發搭建企業辦公平臺(十七)資訊開發篇:資訊釋出的審批功能
本部落格為O2OA系列教程、O2OA使用手冊,教程目錄和各章節天梯將在連載完後更新。
使用O2OA二次開發搭建企業辦公平臺(一)平臺部署篇:平臺下載和部署
使用O2OA二次開發搭建企業辦公平臺(二)平臺部署篇:埠衝突和伺服器埠配置
使用O2OA二次開發搭建企業辦公平臺(三)平臺部署篇:使用外部資料庫
使用O2OA二次開發搭建企業辦公平臺(四)平臺部署篇:使用者密碼設定
使用O2OA二次開發搭建企業辦公平臺(五)平臺部署篇:連線O2雲使用APP
使用O2OA二次開發搭建企業辦公平臺(六)平臺部署篇:定製自己的APP
使用O2OA二次開發搭建企業辦公平臺(七)平臺部署篇:伺服器備份和資料匯入匯出
使用O2OA二次開發搭建企業辦公平臺(八)組織管理篇:建立組織和個人資訊
使用O2OA二次開發搭建企業辦公平臺(九)組織管理篇:組織職務的建立和使用
使用O2OA二次開發搭建企業辦公平臺(十)組織管理篇:組織管理者設定
使用O2OA二次開發搭建企業辦公平臺(十一)組織管理篇:關於系統角色管理
使用O2OA二次開發搭建企業辦公平臺(十二)流程開發篇:報銷審批流程需求和應用建立
使用O2OA二次開發搭建企業辦公平臺(十三)流程開發篇:報銷審批流程表單開發
使用O2OA二次開發搭建企業辦公平臺(十四)流程開發篇:使用資料字典進行報銷型別配置
使用O2OA二次開發搭建企業辦公平臺(十五)流程開發篇:建立報銷審批流程
使用O2OA二次開發搭建企業辦公平臺(十六)資訊開發篇:資訊欄目和分類的建立及許可權的設定
使用O2OA二次開發搭建企業辦公平臺(十七)資訊開發篇:資訊釋出的審批功能
本章題綱:
1、誰可以進行設計和開發?
2、資訊系統設計入口
3、建立資訊釋出流程和表單
4、給分類配置資訊釋出流程
本章節以建立通知公告為例,介紹一個使用流程的內容釋出的設計過程。主要講述釋出流程的配置。具體內容釋出設計請參考《使用O2OA二次開發搭建企業辦公平臺(十六)資訊開發篇:資訊欄目和分類的建立及許可權的設定》。
一、誰可以進行設計開發?
除了xadmin, 擁有如下角色的使用者均能進行流程應用的管理和開發:
人員或者角色 |
人員或者角色名稱 |
平臺 |
說明 |
xadmin |
系統管理員 |
所有 |
所有許可權 |
Manager |
系統管理員 |
所有 |
所有許可權 |
ProcessPlatformManager |
流程平臺系統管理員 |
流程平臺 |
可以在流程應用管理平臺中對流程應用進行建立,對流程、表單、檢視以及許可權進行各類管理操作 |
具體角色管理方法,請見《使用O2OA二次開發搭建企業辦公平臺(十一)組織管理篇:關於系統角色管理》
二、流程管理設計入口
在系統選單-設計中心-流程管理平臺中定製您的系統。點選系統選單,找到“設計中心”,點選後開啟設計中心。
在流程管理平臺中,可以為資訊應用的建立相應的流程。
三、建立資訊釋出流程和表單
1、建立資訊釋出流程應用
根據需要在流程應用管理中建立資訊釋出流程應用:
點選指令碼配置,先建立一個用於呼叫釋出資訊服務的指令碼,以備在流程相關環節中使用:
固定指令碼程式碼如下:
this.define("getPublishData", function(){
var clone = function (obj) {
if (null === obj || "object" != typeof obj) return obj;
if ( typeof obj.length==='number'){ //陣列
//print( "array" );
var copy = [];
for (var i = 0, len = obj.length; i < len; ++i) {
copy[i] = clone(obj[i]);
}
return copy;
}else{
var copy = {};
for (var attr in obj) {
copy[attr] = clone(obj[attr]);
}
return copy;
}
};
var removeHTMLTag = function(str) {
str = str.replace(/<\/?[^>]*>/g,''); //去除HTML tag
str = str.replace(/[ | ]*\n/g,'\n'); //去除行尾空白
//str = str.replace(/\n[\s| | ]*\r/g,'\n'); //去除多餘空行
str=str.replace(/ /ig,'');//去掉
str=str.replace(/\s/g,''); //將空格去掉
return str;
};
var document = clone( this.data.cmsDocument );
var data = clone( this.data );
var work = this.workContext.getWork();
data.formProcess = true;
delete document.attachmentList;
document.subject = data.subject;
document.title = data.subject;
document.wf_workId = work.id;
document.wf_jobId = work.job;
document.pictureList = [];
if( data.imageclipper ){
document.pictureList.push( data.imageclipper );
}
document.summary = "";
if( data.htmleditor ){
var text = removeHTMLTag( data.htmleditor );
document.summary = text.substr(0,85);
}
var attachmentList = this.workContext.getAttachmentList();
var attachmentIds = [];
for( var i=0, len=attachmentList.length; i<len; ++i ){
attachmentIds.push( attachmentList[i].id );
}
document.wf_attachmentIds = attachmentIds;
var cnArray = ["公司","部門","人員","群組"];
var keyArray = ["companyValue","departmentValue","personValue","groupValue"];
var result = [];
if( typeof data.publishFor == "object" && data.publishFor!==null){
for( var key in data.publishFor ){
var it = data.publishFor[key];
for( var i=0; i<it.length; i++ ){
result.push({
permission : "閱讀",
permissionObjectType : cnArray[ keyArray.indexOf(key) ],
permissionObjectName : it[i].name
});
}
}
}
var owners = [];
if( result.length > 0 ){
var taskCompletedList = this.workContext.getTaskCompletedList();
for(var i=0, len=taskCompletedList.length; i<len; ++i){
var taskCompleted = taskCompletedList[i];
if(taskCompleted.person){
owners.push( taskCompleted.person );
}
}
if( owners.length > 0 ){
for(var i=0, len=owners.length; i<len; ++i){
result.push({
permission : "閱讀",
permissionObjectType : "人員",
permissionObjectName : owners[i]
});
}
}
}
document.permissionList = result;
data.processOwnerList = owners;
document.docData = data;
return document;
}.bind(this));
指令碼建立好後,介面如下圖所示:
2、建立資訊釋出流程
流程需求:擬稿 -> 稽核 -> 自動完成釋出。
示例流程圖如下:
在流程設定介面,使用兩個人工活動環節和服務呼叫環節來完成流程的設計,流程設計方法請參考教程流程開發篇相關文件,本篇不做過多的贅述。
此處注意,因為需要由流程完成資訊內容的釋出工作,所在在流程最後需要使用一個服務呼叫節點,該節點作用是把流程資料轉為資訊內容使用相關的服務進行釋出,最後完成流程資料到通知公告資訊的釋出功能。
服務呼叫環節需要如圖配置相應的引數:
基本------------------------------------------------
名稱:服務呼叫(或者其他名稱,此處可隨意填寫)
呼叫------------------------------------------------
服務協議:jaxrs
系統內請求:是
服務應用:內容管理
REST地址:document/cipher/publish/content
呼叫方法:PUT
ContentType:application/json
引數指令碼:不需要
訊息體指令碼:引用publishToCMS
呼叫指令碼內容:
var data = this.getPublishData();
this.body.set(data);
3、資訊釋出流程表單設計
資訊釋出流程表單實際可以直接COPY資訊釋出編輯表單內容後,稍作修改即可。
示例表單如下:
四、給分類配置資訊釋出流程
點選“分類配置”下的通知公告,給通知公告配置上資訊釋出流程,如下圖:
經過以上步驟,我們完成了一個帶流程的內容釋出模組的建立,我們可以到“資訊平臺”模組中測試它。