1. 程式人生 > >使用O2OA二次開發搭建企業辦公平臺(十七)資訊開發篇:資訊釋出的審批功能

使用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(/&nbsp;/ig,'');//去掉&nbsp;
        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資訊釋出編輯表單內容後,稍作修改即可。

示例表單如下:

 

四、給分類配置資訊釋出流程

點選“分類配置”下的通知公告,給通知公告配置上資訊釋出流程,如下圖:

 

經過以上步驟,我們完成了一個帶流程的內容釋出模組的建立,我們可以到“資訊平臺”模組中測試它。