<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    如鵬網 大學生計算機學習社區

    CowNew開源團隊

    http://www.cownew.com 郵件請聯系 about521 at 163.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks
     

    已經可以比較好的運行JBPM了,但是如果能以圖形化的方式顯示工作流,并且把當前節點高亮顯示,這樣可用性就更好了,用戶可以很輕松的看到當前流程到哪個節點了。

           我發現JBPMstarters-kit的例子中就有類似的效果,所以決定分析一下它是怎么實現的。

           打開網頁,瀏覽到有顯示當前工作流節點的頁面,查看到此頁面的地址為task.jsp,發現其中的核心代碼如下:

    <jbpm:processimage task="${taskBean.taskInstanceId}"/>

           這里使用了JBPM提供的jbpm:processimage標簽,此標簽定義在jbpm.tld中,這個Tag的類為org.jbpm.webapp.tag.ProcessImageTag。所以只要使用這個標簽我們就可以很輕松的在Web頁面中顯示圖形化的工作流了。

           那么如果是在SwingSWT等非Web界面中也想顯示這種效果怎么辦呢?那么讓我們來分析一下ProcessImageTag類。

     private void retrieveByteArrays() {

        try {

          FileDefinition fileDefinition = processDefinition.getFileDefinition();

          gpdBytes = fileDefinition.getBytes("gpd.xml");

          imageBytes = fileDefinition.getBytes("processimage.jpg");

        } catch (Exception e) {

          e.printStackTrace();

        }

     }

           gpd.xml中記錄的是節點的位置關系,processimage.jpg是圖形化的圖片(只是基圖,沒有高亮顯示當前節點),這兩個文件是JBPMEclipse插件自動生成的。

           得到流程實例當前節點的方法:

     private void initialize() {

        JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();

        if (this.taskInstanceId > 0) {

               TaskInstance taskInstance = jbpmContext.getTaskMgmtSession().loadTaskInstance(taskInstanceId);

               currentToken = taskInstance.getToken();

        }

        else

        {

               if (this.tokenInstanceId > 0)

                      currentToken = jbpmContext.getGraphSession().loadToken(this.tokenInstanceId);

        }

        processDefinition = currentToken.getProcessInstance().getProcessDefinition();

     }

           currentToken中可以得到當前節點在顯示的時候的長度、寬度、橫縱坐標等值。得到的方式如下:

     private int[] extractBoxConstraint(Element root) {

        int[] result = new int[4];

        String nodeName = currentToken.getNode().getName();

        XPath xPath = new DefaultXPath("http://node[@name='" + nodeName + "']");

        Element node = (Element) xPath.selectSingleNode(root);

        result[0] = Integer.valueOf(node.attribute("x").getValue()).intValue();

        result[1] = Integer.valueOf(node.attribute("y").getValue()).intValue();

        result[2] = Integer.valueOf(node.attribute("width").getValue()).intValue();

        result[3] = Integer.valueOf(node.attribute("height").getValue()).intValue();

        return result;

     }

           這樣用<div/>標簽就可以將當前節點框上一個紅色的框框了:

               jspOut.println("<div style='position:relative; background-image:url(" + imageLink + "); width: " + imageDimension[0] + "px; height: " + imageDimension[1] + "px;'>");

           //詳細代碼參考:writeTable方法

    原來高亮顯示是在原有的圖片上疊加一個高亮的框框實現的。所以如果要顯示在SwingSWT中的話也只要參考這個思路,在當前節點位置顯示一個高亮的框框就可以了!

    posted on 2007-11-19 17:44 CowNew開源團隊 閱讀(6049) 評論(8)  編輯  收藏

    評論

    # re: 以圖形化的方式顯示JBPM當前流程的方法及原理分析 2007-11-20 09:30 專注JAVA開源
    以前做過一個基于xpdl的流程監控的程序  回復  更多評論
      

    # re: 以圖形化的方式顯示JBPM當前流程的方法及原理分析[未登錄] 2008-11-13 10:04 Simple
    JBPM可以與Ibatis結合嗎?  回復  更多評論
      

    # re: 以圖形化的方式顯示JBPM當前流程的方法及原理分析 2008-11-15 13:32 漠漠
    @Simple
    可以,使用同一個數據源!  回復  更多評論
      

    # re: 以圖形化的方式顯示JBPM當前流程的方法及原理分析[未登錄] 2008-11-24 16:19 Simple
    可不可以發個Demo我參考一下~~   回復  更多評論
      

    # re: 以圖形化的方式顯示JBPM當前流程的方法及原理分析 2009-06-01 09:46 不毛之地
    太強了,正是我想要的  回復  更多評論
      

    # re: 以圖形化的方式顯示JBPM當前流程的方法及原理分析 2009-06-26 10:49 魚中魚
    但是在private void retrieveByteArrays() {
    try {
    FileDefinition fileDefinition = processDefinition.getFileDefinition();
    gpdBytes = fileDefinition.getBytes("gpd.xml");
    //gpdBytes = fileDefinition.getBytes("com/flowdemo/jbpm/expense/gpd.xml");
    imageBytes = fileDefinition.getBytes("processimage.jpg");
    //imageBytes = fileDefinition.getBytes("com/flowdemo/jbpm/expense/processimage.jpg");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    gpdBytes = fileDefinition.getBytes("gpd.xml");這一句的時候發生異常了,出現空指針是怎么回事呢?請賜教,謝謝。
      回復  更多評論
      

    # re: 以圖形化的方式顯示JBPM當前流程的方法及原理分析 2009-08-29 08:22 zw
    @魚中魚

    zw7534313@163.com 咋解決的?
      回復  更多評論
      

    # re: 以圖形化的方式顯示JBPM當前流程的方法及原理分析 2010-05-29 12:21 小鄧子
    在private void retrieveByteArrays() {
    try {
    FileDefinition fileDefinition = processDefinition.getFileDefinition();
    gpdBytes = fileDefinition.getBytes("gpd.xml");
    //gpdBytes = fileDefinition.getBytes("com/flowdemo/jbpm/expense/gpd.xml");
    imageBytes = fileDefinition.getBytes("processimage.jpg");
    //imageBytes = fileDefinition.getBytes("com/flowdemo/jbpm/expense/processimage.jpg");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    gpdBytes = fileDefinition.getBytes("gpd.xml");這一句的時候發生異常了,出現空指針是怎么回事呢?請賜教,謝謝。
    郵箱:djx@kingtopinfo.com 希望得到回復!  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲第一福利网站在线观看| 伊伊人成亚洲综合人网7777| 国产三级在线观看免费| 四虎免费大片aⅴ入口| 亚洲伊人成无码综合网| 亚洲嫩模在线观看| 亚洲欧美日韩中文字幕在线一区| 少妇亚洲免费精品| 91免费在线播放| 成人亚洲综合天堂| 亚洲区精品久久一区二区三区| 无码的免费不卡毛片视频| 精品国产亚洲男女在线线电影 | 国产亚洲成av人片在线观看| 亚洲AV无码一区二区三区在线| 一级毛片免费不卡直观看| 2020久久精品国产免费| 亚洲国产成人高清在线观看| 精品久久久久久久久亚洲偷窥女厕 | 四虎影视免费永久在线观看| 久久亚洲春色中文字幕久久久| 国产精品亚洲色婷婷99久久精品| 中文字幕视频免费| 久久久久亚洲?V成人无码| 日韩电影免费观看| 国产乱辈通伦影片在线播放亚洲 | 91久久亚洲国产成人精品性色| 人成电影网在线观看免费| 亚洲日韩欧洲无码av夜夜摸| 四虎影视在线看免费观看| 国产亚洲AV无码AV男人的天堂 | 222www免费视频| 久久精品国产亚洲av麻豆色欲| 国产成在线观看免费视频| 亚洲欧洲日产专区| 67pao强力打造高清免费| 亚洲国产AV无码一区二区三区| 最近最新的免费中文字幕| va天堂va亚洲va影视中文字幕 | 视频一区二区三区免费观看| 国产男女猛烈无遮挡免费视频网站 |