將knowage(spagobi)頁(yè)面嵌套到web應(yīng)用

接到任務(wù)需要將knowage將與現(xiàn)有的自研報(bào)表整合,研究了下做些記錄,歡迎討論

一捌臊、環(huán)境準(zhǔn)備

  • 1.假設(shè)已完成knowage安裝(本文使用6.1.0_ce)
  • 2.假設(shè)web應(yīng)用和knowage不在同一個(gè)域(一般情況應(yīng)該都在不同的域杨蛋,需要解決跨域問(wèn)題)
  • 3.準(zhǔn)備一個(gè)springboot的帶jsp應(yīng)用(不一定springboot,spingmvc的也可以)
  • 4.準(zhǔn)備sdk理澎,下載地址(包含所有knowage版本逞力、開(kāi)發(fā)工具、sdk):http://release.ow2.org/knowage/
  • 5.準(zhǔn)備一個(gè)vue應(yīng)用(適用于前后端分離項(xiàng)目的集成)【備選方案】

二糠爬、使用knowage的java sdk方式

解壓下載的knowage的war包

  • 1.目錄結(jié)構(gòu)


    knowae目錄結(jié)構(gòu).png
  • 2.復(fù)制需要的包
1. 復(fù)制 WEB-INF\tags\spagobi\execution.tag 到web項(xiàng)目的 WEB-INF\tags\spagobi目錄下
2. 復(fù)制 WEB-INF\lib 下面的jar到classpath
3. 如果是maven項(xiàng)目請(qǐng)上傳必要的jar到公司私有倉(cāng)庫(kù)(備選)
<dependency>
            <groupId>it.eng.knowage</groupId>
            <artifactId>knowage-utils</artifactId>
            <version>6.1.1</version>
        </dependency>
        <dependency>
            <groupId>it.eng.knowage</groupId>
            <artifactId>spago-core</artifactId>
            <version>2.3.0</version>
        </dependency>

        <dependency>
            <groupId>it.eng.knowage</groupId>
            <artifactId>spago-web</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>it.eng.knowage</groupId>
            <artifactId>spago-portlet</artifactId>
            <version>2.3.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.7.5</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.7.5</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.7.5</version>
        </dependency>
  • 3.jsp頁(yè)面中引用
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<!DOCTYPE html>
<%@ taglib prefix="spagobi" tagdir="/WEB-INF/tags/spagobi" %>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
<spagobi:execution spagobiContext="http://192.200.9.120:8080/knowage"
                   documentLabel="  Project"
                   userId="biadmin"
                   password="biadmin"
                   iframeStyle="height:500px; width:100%"
                   executionRole="GUEST"
                   displayToolbar="<%= Boolean.TRUE %>"
                   displaySliders="<%= Boolean.TRUE %>"/>
</body>
</html>
    1. 效果圖
jsp集成結(jié)果.png

三寇荧、使用knowage的java script方式

使用原生js sdk的優(yōu)勢(shì)在于不限制后端語(yǔ)言,但是需要解決cors跨域的問(wèn)題

  • 1.復(fù)制需要的包
復(fù)制 knowagesdk\js 下面js到 webapp\js 下
  • 2.在jsp頁(yè)面引用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" src="js/commons.js"></script>
    <script type="text/javascript" src="js/ajax.js"></script>
    <script type="text/javascript" src="js/jsonp.js"></script>
    <script type="text/javascript" src="js/cors.js"></script>
    <script type="text/javascript" src="js/services.js"></script>
    <script type="text/javascript" src="js/api_jsonp.js"></script>
    <script type="text/javascript" src="js/api_cors.js"></script>
    <script type="text/javascript" src="js/api.js"></script>
</head>
<body>
<input type="button" value="Login" onclick="javascript:doLogin()"/>
<div height="300px" width="100%" id='targetDiv'></div>
</body>
<script type="text/javascript">

    Sbi.sdk.services.setBaseUrl({
        protocol: 'http'
        , host: '192.200.9.120'
        , port: '8080'
        , contextPath: 'knowage'
        , controllerPath: 'servlet/AdapterHTTP'
    });
    doLogin = function() {
        var user = 'biadmin';
        var password = 'biadmin';
        var cb = function(xhr) {
                Sbi.sdk.api.injectDocument({
                    documentLabel: 'Project'
                    , documentName: 'Project'
                    , executionRole: 'biadmin'
                    , target: 'targetDiv'
                    , height: '500px'
                    , width: '800px'
                    , iframe: {
                        style: 'border: 0px;'
                    }
                });

        };
        Sbi.sdk.cors.api.authenticate({
            credentials: 'user=' + user + '&password=' + password
            , headers: [{
                name: 'Content-Type',
                value: 'application/x-www-form-urlencoded'
            }]
            , callbackOk: cb
        })
    }
</script>
</html>
  • 3.解決跨域
    直接在瀏覽器訪問(wèn)执隧,頁(yè)面會(huì)報(bào)500錯(cuò)誤揩抡,使用f12查看會(huì)有跨域錯(cuò)誤的提示
    1.下載需要的jar
    cors-filter-2.5.jar
    java-property-utils-1.9.1.jar
    2.修改knowage系統(tǒng)下的tomcat
    將jar放入Knowage-Server-CE\lib下
    修改Knowage-Server-CE\conf\web.xml,如下:
    <filter>    
        <filter-name>CORS</filter-name>    
        <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>    
        <init-param>    
            <param-name>cors.allowOrigin</param-name>   
            <param-value>*</param-value>   
        </init-param>    
        <init-param>    
            <param-name>cors.supportedMethods</param-name>   
            <param-value>GET, POST, HEAD, PUT, DELETE</param-value>   
        </init-param>    
        <init-param>    
            <param-name>cors.supportedHeaders</param-name>   
            <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>   
        </init-param>    
        <init-param>    
            <param-name>cors.exposedHeaders</param-name>   
            <param-value>Set-Cookie</param-value>   
        </init-param>    
        <init-param>    
            <param-name>cors.supportsCredentials</param-name>   
            <param-value>true</param-value>   
        </init-param>    
    </filter>    
    <filter-mapping>    
        <filter-name>CORS</filter-name>    
        <url-pattern>/*</url-pattern>    
   </filter-mapping>
  • 4.效果圖


    使用js sdk效果.png

四镀琉、在vue中使用js sdk

  • 1.復(fù)制需要的js
復(fù)制 knowagesdk\js 下面js到 static\js 下
在index.html引入:
    <script type="text/javascript" src="./static/js/commons.js"></script>
    <script type="text/javascript" src="./static/js/ajax.js"></script>
    <script type="text/javascript" src="./static/js/jsonp.js"></script>
    <script type="text/javascript" src="./static/js/cors.js"></script>
    <script type="text/javascript" src="./static/js/services.js"></script>
    <script type="text/javascript" src="./static/js/api_jsonp.js"></script>
    <script type="text/javascript" src="./static/js/api_cors.js"></script>
    <script type="text/javascript" src="./static/js/api.js"></script>
  • 2.創(chuàng)建vue.js頁(yè)面
<template>

    <div class="deptNeedListContent">
        
        <input type="button" value="Login" onclick="javascript:doLogin()" />
        <div height="300px" width="100%" id='targetDiv'></div>
    </div>

</template>
<script>
    export default {
        data() {
            return {}
        },

        methods: {
            doLogin() {
                Sbi.sdk.services.setBaseUrl({
                    protocol: 'http',
                    host: '192.200.9.120',
                    port: '8080',
                    contextPath: 'knowage',
                    controllerPath: 'servlet/AdapterHTTP'
                });
                var user = 'biadmin';
                var password = 'biadmin';
                var cb = function(xhr) {
                    Sbi.sdk.api.injectDocument({
                        documentLabel: 'Project',
                        documentName: 'Project',
                        executionRole: 'biadmin',
                        target: 'targetDiv',
                        height: '500px',
                        width: '800px',
                        iframe: {
                            style: 'border: 0px;'
                        }
                    });

                };
                Sbi.sdk.cors.api.authenticate({
                    credentials: 'user=' + user + '&password=' + password,
                    headers: [{
                        name: 'Content-Type',
                        value: 'application/x-www-form-urlencoded'
                    }],
                    callbackOk: cb
                })
            }
        },
        mounted() {
            this.doLogin();
        }
    }
</script>
<style>
    .el-table th>.cell {
        color: #000;
    }
</style>

  • 3.解決跨域問(wèn)題請(qǐng)看章節(jié)三

五峦嗤、總結(jié)

  • 1.knowage為spago bi新命名網(wǎng)上的資料不是很多,做頁(yè)面集成時(shí)參考了很多spago bi以前的版本方案
  • 2.knowagesdk提供的時(shí)一個(gè)war包里面有一些集成的example可以參考
  • 3.使用js sdk時(shí)可以看下具體的源碼改成自己需要

應(yīng)該會(huì)寫一系列文章屋摔,包含如何安裝烁设、配置、設(shè)計(jì)和其它系統(tǒng)集成等(我也不知道什么時(shí)候才能寫凡壤,哈哈哈)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末署尤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子亚侠,更是在濱河造成了極大的恐慌曹体,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件硝烂,死亡現(xiàn)場(chǎng)離奇詭異箕别,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)滞谢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門串稀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人狮杨,你說(shuō)我怎么就攤上這事母截。” “怎么了橄教?”我有些...
    開(kāi)封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵清寇,是天一觀的道長(zhǎng)喘漏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)华烟,這世上最難降的妖魔是什么翩迈? 我笑而不...
    開(kāi)封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮盔夜,結(jié)果婚禮上负饲,老公的妹妹穿的比我還像新娘。我一直安慰自己喂链,他們只是感情好返十,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著椭微,像睡著了一般吧慢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赏表,一...
    開(kāi)封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音匈仗,去河邊找鬼瓢剿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛悠轩,可吹牛的內(nèi)容都是我干的间狂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼火架,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鉴象!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起何鸡,我...
    開(kāi)封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤纺弊,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后骡男,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淆游,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年隔盛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了犹菱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吮炕,死狀恐怖腊脱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情龙亲,我是刑警寧澤陕凹,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布悍抑,位于F島的核電站,受9級(jí)特大地震影響捆姜,放射性物質(zhì)發(fā)生泄漏传趾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一泥技、第九天 我趴在偏房一處隱蔽的房頂上張望浆兰。 院中可真熱鬧,春花似錦珊豹、人聲如沸簸呈。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蜕便。三九已至,卻和暖如春贩幻,著一層夾襖步出監(jiān)牢的瞬間轿腺,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工丛楚, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留族壳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓趣些,卻偏偏與公主長(zhǎng)得像仿荆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子坏平,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前言 這里筑夢(mèng)師,是一名正在努力學(xué)習(xí)的iOS開(kāi)發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同...
    筑夢(mèng)師Winston閱讀 26,008評(píng)論 80 514
  • 一:什么是閉包拢操?閉包的用處? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)舶替。在本質(zhì)上令境,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 9,612評(píng)論 1 52
  • 雪色浮動(dòng)在寒涼的窗欞展父,一環(huán)一環(huán)的彩燈把舊故事串起,告別總這樣無(wú)聲無(wú)息玲昧,聽(tīng)著新年的鐘聲當(dāng)當(dāng)響起栖茉。歲月,又將翻...
    心如愛(ài)止水閱讀 329評(píng)論 0 1
  • 早春三月,春風(fēng)吹到了窗前尘应,催長(zhǎng)了菜葉惶凝,催開(kāi)了菜花吼虎。金黃色的花瓣,發(fā)出幽幽清香…… 我把買回來(lái)的白菜苍鲜,將菜葉一層層掰...
    春之原野閱讀 1,105評(píng)論 8 11
  • 少年從花兒的故鄉(xiāng)走出來(lái)思灰,跟著他的父母,帶著拉面手藝混滔,從大西北來(lái)到我們這個(gè)沿海的小鎮(zhèn)洒疚。 西北風(fēng)歷練的少年,跟小鎮(zhèn)...
    楊家有女閱讀 235評(píng)論 0 0