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

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

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

    隨筆 - 11  文章 - 79  trackbacks - 0
    <2012年12月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    歡迎合作

     

    聯(lián)系方式:openhandx@foxmail.com

     

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

     

     

     

     

     

      OpenHandX-Batch 1.02

    企業(yè)級批量應用架構

     

     

     

     

     

    2010-12-28

     

    作者:彭明華

    pengminghua@hotmail.com

     

    本文檔中的任何部分都不得以任何手段任何形式進行復制與傳播。

    目錄

     

    1          為什么要批量架構

     

     

    異步交易的概念相對于同步交易,同步交易是指BS/CS系統(tǒng)中當用戶點擊某個按鈕系統(tǒng)就能很快查詢出需要的信息,整個過程不需要長時間等待。隨著計算機系統(tǒng)的普及化,更高級業(yè)務需求,如:分析型的報表、復雜的數(shù)據(jù)加工被提了出來。如果再做成同步交易用戶可能需要等待幾十分鐘或數(shù)小時的時間,這顯然是不被接受的。這時就需要一個高效異步交易系統(tǒng)。異步交易是指用戶提交一個請求后系統(tǒng)很快返回提交成功的信息,隨后用戶可以繼續(xù)做其它的工作,提交的請求由后臺程序按照一定規(guī)則去處理,處理完成后用戶可以取到結果,整個過程用戶都不用刻意去等待因此是異步的。面對更高層的應用,更大的海量處理如:天氣預報的衛(wèi)星云圖、生物基因工程等計算。

    傳統(tǒng)聯(lián)機架構只能處理響應較快的普通業(yè)務處理,對于耗時等復雜業(yè)務處理會造成服務器資源大量被占用,客戶端失去響應等嚴重問題。異步批量架構是解決復雜業(yè)務處理、數(shù)據(jù)分析、科學計算等耗時工作任務,這些任務被安排在特定的服務器上執(zhí)行,被統(tǒng)一規(guī)劃、拆分成子任務、統(tǒng)一調度、并發(fā)執(zhí)行,大大提高了執(zhí)行效率和可靠性,另外異步批量架構可以部署在網(wǎng)絡內(nèi)的任意服務器或PC上形成企業(yè)的云計算。

     

    2          異步批量演化

    2.1       初始級

    初始級的批量是最簡單的異步批量

    由應用系統(tǒng)發(fā)起一個異步批量的請求,請求很簡單只有一個節(jié)點一個任務,處理保存在數(shù)據(jù)庫中,由應用系統(tǒng)去查詢結果

    2.2       應用級

    應用級的批量是處理復雜業(yè)務系統(tǒng)的批量


    某個應用發(fā)起一個批量請求到異步總控服務器,請求的業(yè)務邏輯是由復雜的節(jié)點圖定義,總控服務器根據(jù)節(jié)點圖定義拆分出多個任務,再發(fā)送給異步任務服務器群去并發(fā)執(zhí)行這些任務,總控服務器負責任務的拆分、分配、調度

    2.3       企業(yè)級

    企業(yè)級的批量面對的是整個企業(yè)所有系統(tǒng)批量,不再局限只對某個系統(tǒng)提供服務,可以看作是企業(yè)信息化的一種資源

    異步總控服務器群要處理的不僅有多個應用系統(tǒng)批量請求,還可能有人為發(fā)起的批量請求,如:月終、年終報表等

     2.4      云計算級





    云計算級面向更大的理想應用,能提供絕對強大的運算能力,能對天氣預報、生物工程等海量數(shù)據(jù)進行運算。同時在同一網(wǎng)絡任何計算機終端很容易能加入到云計算系統(tǒng)中,這樣能合理利用資源減少投資。

     

     

     

    3          企業(yè)級架構需要什么

    既然作為企業(yè)級架構就就應該具有一套完整的機制,比如:安全性、健壯性、高性能、擴展性等。只有在此基礎上企業(yè)才能安全、有效、節(jié)省資源的情況下使用架構

    3.1       安全性

    企業(yè)級架構在數(shù)據(jù)存儲、傳輸過程中處于安全環(huán)境,不能被外界獲取,即使能獲取也是無價值的

    3.2       健壯性

    企業(yè)級架構為企業(yè)重要系統(tǒng)的提供支持,甚至是核心的一部分,在系統(tǒng)中運行的企業(yè)級架構要有高可靠性、健壯性。除此之外,根據(jù)系統(tǒng)需要還應該有及時有效的監(jiān)控機制,即使出現(xiàn)意外也應該有完善的應對方案

    3.3       高性能

    企業(yè)級架構一般部署在服務器上,企業(yè)級架構要能利用服務器提供的資源最大、最快程度完成交給的任務,并且能夠通過多個服務器機群并發(fā)解決單一服務器的性能制約

    3.4       擴展性

    企業(yè)級架構最少是面向企業(yè)某一領域的應用,除了架構本身提供的缺省實現(xiàn)方法,還要提供對特殊情況的支持

    3.5       可移植性性

    企業(yè)級架構不能僅局限于部署在某一類服務器或某一類操作系統(tǒng),企業(yè)級架構應該能在主流的服務器和操作系統(tǒng)中執(zhí)行,并且運用主流的操作方式和通訊協(xié)議

    3.6       多種應用模式

    企業(yè)級架構面向不同企業(yè),每個企業(yè)都有不同的情況和需求,這就需要企業(yè)級架能以各種模式來滿足不同的企業(yè)。企業(yè)級架構應該是由多個組件組成,每個組件都是松耦合,通過組件的不同組合方式滿足不同模式的需求

    3.7       易操作性

    企業(yè)級架構在必要情況下提供的方便、節(jié)約操作界面

    4          OpenHandX-Batch企業(yè)級批量應用架構

    OpenHandX-Batch 1.0是輕量級、可擴展的企業(yè)級異步批量框架。OpenHandX-Batch 1.0異步批量框架將共性的處理抽象化并提取出來,提供多種應用模式、并發(fā)、集群、多種節(jié)點圖任務運行等能力,開發(fā)者可以將更多注意力放到自己的業(yè)務層面。減少開發(fā)環(huán)節(jié)和周期。OpenHandX-Batch 1.0異步批量框架也可以當做企業(yè)的一種資源,將企業(yè)多個系統(tǒng)的異步批量部署到OpenHandX-Batch 1.0上,由OpenHandX-Batch 1.0統(tǒng)一支持和管理。

    4.1       術語及名詞解釋

    批量框架:OpenHandX-Batch 1.0異步批量框架的簡稱

    事件:應用系統(tǒng)向批量框架發(fā)送一次批量的請求

    節(jié)點:一個復雜的事件是由多個步驟,每個節(jié)點代表一個步驟

    節(jié)點圖: 將多個節(jié)點按照某種邏輯關系組成運行流程,這個流程就叫節(jié)點運行圖或節(jié)點圖

    任務:一個節(jié)點要執(zhí)行必須實例化成任務,一般一個節(jié)點可拆分成一個任務,但一個節(jié)點也可能是同一類任務的定義

    4.2       特性

    4.2.1    主要特性

    l        支持多個應用系統(tǒng)-能將多個應用系統(tǒng)部署到同一個總控服務器或多個總控服務器,由總控服務器統(tǒng)一控制和管理

    l        支持多個異步事件-總控服務器能同時執(zhí)行和監(jiān)控多個事件,通過事件權重、優(yōu)先級衡量和控制制服務器的資源

    l        多批量任務并發(fā)-任務服務器同時支持來自多個總控服務器的任務,并行執(zhí)行這些任務

    l        多種節(jié)點圖事件支持-總控服務器提供樹型和層型節(jié)點圖、單個任務類,復雜類型的事件可以通過節(jié)點圖配置工具來定義自己的運行順序圖,支持斷點續(xù)跑災難恢復

    l        良好擴展性-從總控服務器、任務服務器、事件服務器都提供了豐富的接口,能對節(jié)點圖、事件和任務傳輸開發(fā)出業(yè)務個性的代碼

    l        快速開發(fā)接口-任務服務器提供一個主要接口就能完成所有應用系統(tǒng)業(yè)務代碼的開發(fā),同時也提供對Spring框架的支持

    l        健壯性-總控服務器的每個應用實例有自己的運行容器和運行線程,任務服務器也有自己的獨立任務容器和執(zhí)行線程,保證了每個獨立的應用或任務執(zhí)行出現(xiàn)意外不影響其它執(zhí)行的應用和任務。其次總控服務器還對每個應用和任務執(zhí)行進行監(jiān)控記錄,即使整個總控服務器宕機重起后能自動恢復上次運行的步驟繼續(xù)往下執(zhí)行

    l        安全和密級-所有的批量工具提供用戶和密碼管理,任務和事件的xml傳輸協(xié)議都支持加密和壓縮

    l        多種應用模式-完整的異步批量框架需要部署總控服務器、任務服務器、事件服務器,如果您不需要那么多的功能,可以靈活部署其中的任務服務器或任務服務器+總控服務器

    l        豐富的監(jiān)控和分析工具-任務服務器、總控服務器、事件服務器都有自己的監(jiān)控和管理工具,能啟動、暫停、重起服務器。另外批量框架提供了對日志實時分析的工具,比如事件、節(jié)點、任務的運行狀態(tài)、完成進度

    4.2.2    性能優(yōu)勢

    l        總控服務器

    1、總控服務器的事件接收、任務發(fā)送、任務信息接收,可以有3種配置模式:JMS服務器、數(shù)據(jù)庫服務器、內(nèi)存隊列,其中內(nèi)存隊列服務器效率最高、其次是JMS服務器

    2、對于復雜耗時節(jié)點圖的解析可以采用異步接口的實現(xiàn),采用異步的方式提高總控服務器的相應速度

    l        任務服務器

    1、任務服務器的任務信息發(fā)送、任務接收,也同樣有3種配置模式:JMS服務器、數(shù)據(jù)庫服務器、內(nèi)存隊列,其中內(nèi)存隊列服務器效率最高、其次是JMS服務器

    2、任務實例的執(zhí)行提供了獨立的執(zhí)行線程

    3、任務實例由任務實例管理器統(tǒng)一管理,默認采用單實例模式一次創(chuàng)建多次執(zhí)行減小執(zhí)行中創(chuàng)建任務實例的開銷

    4.3       平臺需求

    OpenHandX-Batch 1.0需要:

    l        Java 5

    l        Servlet API 2.4 (可選)

    l        JSP API 2.0 (可選)

    l        Spring 2 (可選)

    l        JMS1.1(可選)

    l        OpenHandX common1.0.jar

    4.4       OpenHandX批量架構邏輯結構

    4.4.1    總體邏輯結構

    l        事件由應用系統(tǒng)或事件中心創(chuàng)建,通過事件通訊服務器到達已部署的總控服務器

    l        總控服務器將事件按照預先定義好的節(jié)點圖拆分、解析成任務,按照合適的條件再發(fā)送到任務通訊服務器,并記錄日志

    l        任務服務器根據(jù)自身的資源情況從任務通訊服務器接受相應的任務去執(zhí)行

    l        任務執(zhí)行完成后將記錄日志,并將完成后的任務信息發(fā)送回任務通訊服務器

    l        總控服務器再從任務通訊服務器取回任務信息,判斷節(jié)點和事件的完成情況,如果未完成繼續(xù)后續(xù)節(jié)點的拆分和任務的發(fā)送,如果全部節(jié)點的任務完成則該事件完成

    4.4.2    總控服務器內(nèi)部結構

    l        一個總控服務器由部署的多個應用實例,總上下文、總的資源、配置管理組成

    l        總控服務器以Task、Event對象的形式與外界傳輸數(shù)據(jù)

    l        每個應用實例運行在自己獨立的應用容器里和獨立的線程,并且包含了多個不同的事件接收實例、應用上下文、應用資源、應用配置管理、事件接收管理、任務發(fā)送管理、任務信息接收管理

    l        每個事件接收實例有自己獨立的節(jié)點圖解析器、任務拆分器、日志記錄器、任務發(fā)送驗證器、自己的上下文、自己的資源

    4.4.3    任務服務器內(nèi)部結構

    l        一個任務服務器由部署的多個應用實例,總上下文、總的資源、配置管理組成

    l        總控服務器以Task對象的形式與外界傳輸數(shù)據(jù)

    l        每個應用實例運行在自己獨立的應用容器里和獨立的守護線程,并且包含了多個任務實例、應用上下文、任務運行池、任務實例管理類、、任務信息發(fā)送管理、任務接收管理

    l        每個任務實例有自己獨立的應用容器里和獨立的執(zhí)行線程、任務執(zhí)行類、日志記錄器、自己的上下文、自己的資源

    4.5       節(jié)點模型

    首先節(jié)點圖是由總控服務器來解析的,負責節(jié)點及任務的拆分和調度。總控服務器默認支持3種最常用的節(jié)點圖模型,開發(fā)人員也可以通過接口擴展支持新的節(jié)點圖模型。這3種節(jié)點圖模型是:單節(jié)點模型、樹型節(jié)點圖模型、層型節(jié)電圖模型。單節(jié)點模型是由一個節(jié)點組成,非常簡單。

    4.5.1    樹型節(jié)點圖

    樹型節(jié)點圖每個節(jié)點執(zhí)行都依賴父節(jié)點是否完成。樹型節(jié)點圖實際上更像網(wǎng)狀結構。通過節(jié)點之間關系建立緊密的聯(lián)系,這樣的好處是每個節(jié)點執(zhí)行完能很快執(zhí)行它下級節(jié)點,效率較高。但是節(jié)點關系過于緊密,因此創(chuàng)建樹型節(jié)點圖和維護的代價很大。

    如:

    假設這有7個節(jié)點,他們的關系如圖所示。整個節(jié)點圖執(zhí)行完一共需要14分鐘。

    4.5.2    層型節(jié)點圖

    層型節(jié)點圖像瀑布從上到下一批批地執(zhí)行完,只有前一層執(zhí)行完才能到下一層。這種結構關系相對簡單,易于創(chuàng)建和維護。但是如果分層不當,層內(nèi)會因某個節(jié)點非常費時而等待,從而影響整個執(zhí)行的效率。

    如:

    還是這7個節(jié)點,整個節(jié)點圖執(zhí)行完一共需要18分鐘。其實這節(jié)點5也可以放到第2層,但效率更低,需要21分鐘。

    4.6       組件及功能

    4.6.1    任務服務器

    批量任務執(zhí)行的服務器

    1、每個任務服務器實例都支持多線程、多應用系統(tǒng)、多服務器集群

    2、通過任務的優(yōu)先級、權重管理任務服務器群的負載均衡

    3、任務類運行方式有單體類模式、配置文件容器運行模式、spring容器管理模式,最優(yōu)化合理地利用資源

    4、支持多數(shù)據(jù)源、多jms源、內(nèi)存隊列、多通道接受和發(fā)送任務

    5、對于jms傳送xml任務信息支持加密和壓縮

    4.6.2    任務服務器監(jiān)控

    監(jiān)控當前任務服務器的運行狀態(tài)


    1、可以停止、暫停、重起任務服務器

    2、可以對部署在任務服務器上的應用單獨暫停

    3、能查詢運行的任務數(shù)量、部署的應用、內(nèi)存應用情況、正在運行任務的狀態(tài)

    4.6.3    總控服務器

    處理批量事件的服務器,負責事件任務拆分、任務調度

    1、默認支持樹型節(jié)點圖、層型節(jié)點圖、單個節(jié)點的任務拆分

    2、支持多應用部署、多事件并發(fā)執(zhí)行

    3、可以設置敏感度,是否時時響應每個應用的事件

    4、任務錯誤后的終止、忽略、重跑三種重跑方式

    5、通過事件的優(yōu)先級、權重管理總控服務器群的負載均衡

    6、支持斷點續(xù)跑,支持災難恢復

    7、對于jms傳送xml任務支持加密和壓縮

    4.6.4    總控服務器監(jiān)控

    監(jiān)控當前總控服務器的運行狀態(tài)


    1、可以停止、暫停、重起總控服務器

    2、可以對部署在總控服務器上的應用單獨暫停

    3、能查詢運行的總控數(shù)量、部署的應用、正在運行的事件狀態(tài)

    4.6.5    事件服務器和事件中心


    可以給總控服務器的發(fā)送批量事件

    1、人為發(fā)起的批量事件,如:月終、年終報表等

    2、事件中心默認提供發(fā)起一個事件、發(fā)起多個事件、多個順序事件、發(fā)起周期事件,可以根據(jù)需要定制事件,事件服務器負責創(chuàng)建并發(fā)送

    3、可以對多個總控或多個應用發(fā)送批量事件

    4.6.6    節(jié)點圖編輯平臺


    定義事件的節(jié)點運行圖

    1、支持樹型、層型圖的節(jié)點圖定義

    2、樹型節(jié)點圖支持圖嵌套,做到節(jié)點圖定義的重用

    3、節(jié)點和圖都能配置業(yè)務參數(shù),節(jié)點可以配置運行模式、權重、互斥等信息

    4、支持對多個應用定義節(jié)點運行圖

    5、提供對已定義的節(jié)點圖可以圖形方式預覽

    4.6.7    日志分析中心



    分析批量運行的結果

    1、能查詢到每個事件、節(jié)點、任務的日志信息

    2、已不同的顏色區(qū)分當前事件、節(jié)點、任務運行的狀態(tài)

    3、提供對日志進行分析,以列表和圖形方式展現(xiàn)事件的運行節(jié)點圖

    4、時時刷新分析結果可以很直觀看到事件中的每個節(jié)點或任務的運行過程

    5、支持多個應用的日志查詢和日志分析

    4.7       應用模式

    支持多組件插拔式部署,典型的3種模式如下:

    初始級的批量服務-只要部署任務服務器就可以滿足需要,部署維護簡單

    應用級的批量服務-需要部署多個任務服務器,一個總控服務器,如果需要監(jiān)控還要部署WEB的總控監(jiān)控組件和任務服務器監(jiān)控組件、日志分析中心

    企業(yè)級的批量服務-部署所有組件,總控服務器和任務服務器的集群可以處理龐大的批量事件,加入事件服務器可以人為根據(jù)需要發(fā)起系統(tǒng)外批量程序

     

    云計算級批量服務-在需要加入云計算的計算機安轉批量任務服務器客戶端并啟動她,即完成了云計算的部署。在網(wǎng)絡內(nèi)的個人pc也能加入云計算,這樣就為云計算提供靈活的、更多的資源


    擴展模式-除了以上三種模式還可以根據(jù)實際情況組合自己需要的組件,也可以增加或減少總控服務器及任務服務器


    下載地址:http://code.google.com/p/openhandx2/downloads/list

    posted on 2009-09-02 15:15 彭明華 閱讀(2074) 評論(12)  編輯  收藏 所屬分類: OpenHandX工具

    FeedBack:
    # re: OpenView-Batch 1.0 企業(yè)級批量應用架構 2009-09-02 17:16 小麗
    牛逼!!!  回復  更多評論
      
    # re: OpenView-Batch 1.0 企業(yè)級批量應用架構 2009-09-02 18:14 wangchangbing
    下載下來試試
    異步處理在系統(tǒng)中經(jīng)常需要用到
    LZ的思路很好 這個項目很有前途 是一個人做的嗎?需要人一起做嗎?  回復  更多評論
      
    # re: OpenView-Batch 1.0 企業(yè)級批量應用架構 2009-09-02 19:56 彭明華
    謝謝,這個項目已近完成了,其中異步總控部分已經(jīng)被應用項目使用過了。如果使用中有問題請發(fā)帖。@wangchangbing
      回復  更多評論
      
    # re: OpenHandX-Batch 1.0 企業(yè)級批量應用架構 2010-03-18 14:04 小山羊
    1、如果我換成sqlserver2005數(shù)據(jù)庫,請問怎么配置數(shù)據(jù)庫,在哪些文件中配置?
    2、能不能提供一個簡單例子的文檔,比如從設置sql腳本開始,怎么在OpenHandX-Batch 中設置,然后下一步設置或操作的步驟?因為看你寫的文檔,有好多術語不太了解,如果結合著例子看,會事半功倍。  回復  更多評論
      
    # re: OpenHandX-Batch 1.0 企業(yè)級批量應用架構 2010-03-19 14:18 彭明華
    @小山羊
    只要有sqlserver2005的jdbc驅動就可以;
    異步批量架構太強大也比較復雜,目前的文檔和參數(shù)太多,我也早有想法做一個快速配置手冊,這都需要時間,我會努力的
    異步批量架構需要對分布、集群等概念有個大概認識。  回復  更多評論
      
    # re: OpenHandX-Batch 1.0 企業(yè)級批量應用架構 2010-03-19 17:08 小山羊
    @彭明華
    期待你的文檔,頂!加油!
      回復  更多評論
      
    # re: OpenHandX-Batch 1.02 企業(yè)級批量應用架構 2012-09-19 11:49 wmj2003
    batchcosole 缺少預覽功能。 另外 batch核心代碼有bug。google上應該不是最終版本。呵呵  回復  更多評論
      
    # re: OpenHandX-Batch 1.02 企業(yè)級批量應用架構 2012-10-31 09:26 彭明華
    @wmj2003
    batch核心可能有Bug,能說一下具體的嗎,我好解決,謝謝!
    batchcosole的預覽分為兩部分,一個是編輯節(jié)點運行圖,另一個日志分析圖時提供。這兩個預覽又分提供列表和圖型方式提供展示,但是圖型方式(使用VML技術)必須在IE6以上版本才能看  回復  更多評論
      
    # re: OpenHandX-Batch 1.02 企業(yè)級批量應用架構 2012-11-22 10:58 wmj2003
    @彭明華 (有理解不對的地方請指正。qq 229849534 王明杰-聚靈-濟南)

    數(shù)據(jù)庫初始化的腳本有問題。記不清楚了,有個時間列默認值給弄錯了,本應該在STARTTIME 上面設置默認值,結果設置在COMPLETETIME 上面了。導致整體程序執(zhí)行錯誤(通過數(shù)據(jù)庫發(fā)送信息的時候)。


    事件中心建議修改整體設計規(guī)劃,采用JcronTab框架實現(xiàn),可以大大簡化事件發(fā)送器。
    事件發(fā)送器:CycleEvent 類
    public EventDefine createEvent(Context context,
    Map<String, String> configParams, Event event) throws EventCenterException{
    Map<String,String> params = ParamParse.getParams(event.getConfigs());

    if(params==null){
    throw new EventCenterException("the configs can not be null");
    }
    // System.out.println("type="+params.get("type"));
    // System.out.println("timeNum="+params.get("timeNum"));
    // System.out.println("startTime="+params.get("startTime"));
    // System.out.println("endTime="+params.get("endTime"));
    if(params.get("type")==null || params.get("type").trim().equals("")){
    throw new EventCenterException("the type parameter can not be null,interpose configs please");
    }
    if(params.get("timeNum")==null || params.get("timeNum").trim().equals("")){
    throw new EventCenterException("the timeNum parameter can not be null,interpose configs please");
    }
    Timestamp ts = null;
    if(params!=null && params.get("startTime")!=null && !params.get("startTime").trim().equals("")){
    ts = Timestamp.valueOf(params.get("startTime"));
    }
    Timestamp ets = null;
    if(params!=null && params.get("endTime")!=null && !params.get("endTime").trim().equals("")){
    ets = Timestamp.valueOf(params.get("endTime"));
    }
    EventDefine eventDefine = null;
    if(ets!=null){//如果定義了結束時間,那么就判斷什么時間結束
    //TODO 這段邏輯有bug
    // if(ts==null || new Timestamp(System.currentTimeMillis()).compareTo(ts)>=0){
    // eventDefine = getEvent(event.getId().replaceAll("#time#",String.valueOf(System.currentTimeMillis())),event);
    // if(new Timestamp(System.currentTimeMillis()).compareTo(ets)>=0){
    // complete = true;
    // }
    // }
    //如果結束時間到了,那么就終止任務。
    if(new Timestamp(System.currentTimeMillis()).compareTo(ets)>=0){
    complete = true;
    }

    }else{

    List<String> ids = ParamParse.getValues(event.getId());//有多少個ID就創(chuàng)建多少個事件
    if(ids!=null && !ids.isEmpty() && (ts==null || new Timestamp(System.currentTimeMillis()).compareTo(ts)>=0)){
    if(checkIsCreate(params)){//檢查周期性時間是否匹配,匹配就創(chuàng)建任務
    String tempId = ids.get(loop).replaceAll("#time#",String.valueOf(System.currentTimeMillis()));
    eventDefine = getEvent(tempId,event);
    System.out.println("CycleEvent----------開始創(chuàng)建事件請求----eventDefine="+eventDefine.getId());
    loop++;
    if(loop>=ids.size()){
    complete = true;
    }
    }
    }else{
    complete = true;
    }
    }
    return eventDefine;
    }

    控制器中:open.batch.controller.impl.application. LayerNodeMap 有bug。
    方法private List<INode> getNodes(String mapId,String params) throws SQLException 中,把標記寫錯了。

    if(rs.getString("RERUN")!=null)
    node.setReRunMode(rs.getInt("RERUN")); //TODO 重跑模式在這里寫錯了吧,果然寫錯了.2012-09-20 又是一個bug已經(jīng)修正

    open.batch.taskserver.message.TaskSenderManager
    這個類應做錯誤處理,將發(fā)送失敗的任務重新進入隊列中。同時需要修改他送任務的接口,讓其只返回發(fā)送失敗的任務。 否則一旦發(fā)送失敗,這個任務就丟失了。
    (注:其他發(fā)送任務的地方也有類似的問題。)
    /**
    * @see Runnable#run()
    */
    public void run() {
    while(!stopFlag){
    synchronized(Lock){
    if(tasks!=null && !tasks.isEmpty()){
    // taskSender.sender(context,tasks,configParams);
    // tasks.clear();
    //將發(fā)送失敗的任務重新加入到任務隊列
    List<Task> taskfailures = taskSender.sendernew(context,tasks,configParams); //初步只是實現(xiàn)了DB的方式
    tasks.clear();
    this.setTasks(taskfailures); //將發(fā)送失敗的任務重新放入發(fā)送隊列。
    }
    }
    try {
    Thread.sleep(1);
    } catch (InterruptedException e) {
    log4j.error(null,e);
    }
    }
    complete = true;
    }


      回復  更多評論
      
    # re: OpenHandX-Batch 1.02 企業(yè)級批量應用架構 2012-11-23 11:11 彭明華
    @wmj2003
    好的,很感謝您的細心回復,我會在近期修改一版上傳  回復  更多評論
      
    # re: OpenHandX-Batch 1.02 企業(yè)級批量應用架構 2012-11-26 10:20 wmj2003
    @彭明華
    “batchcosole的預覽分為兩部分,一個是編輯節(jié)點運行圖,另一個日志分析圖時提供。這兩個預覽又分提供列表和圖型方式提供展示,但是圖型方式(使用VML技術)必須在IE6以上版本才能看”(注:引用)

    異步任務監(jiān)控調度代碼中確實沒有圖形監(jiān)控的代碼,我看jsp和js代碼了。另外在IE瀏覽器9下面無法打開。可能是extjs3的問題,在firefox下面可以打開。  回復  更多評論
      
    # re: OpenHandX-Batch 1.02 企業(yè)級批量應用架構 2012-12-03 17:18 彭明華
    圖型方式(使用VML技術)在IE6下可以使用,是我表述不準確。IE9下不正常是EXT2的問題,可以使用IE9兼容方式解決(IE9地址輸入框內(nèi)后部的一個按鈕)  回復  更多評論
      

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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 久久青青草原国产精品免费| 最近最好最新2019中文字幕免费 | 久久影院亚洲一区| 97人妻精品全国免费视频 | 一级特黄录像免费播放肥| 久久亚洲AV成人无码国产 | 色噜噜亚洲男人的天堂| 亚洲&#228;v永久无码精品天堂久久 | 亚洲不卡影院午夜在线观看| 亚洲av中文无码| 99ee6热久久免费精品6| 亚洲精品无码久久久久APP| 在线亚洲97se亚洲综合在线| 一级毛片免费不卡直观看| 久久久久亚洲av毛片大| 国色精品卡一卡2卡3卡4卡免费| 暖暖免费中文在线日本| 亚洲欧洲国产精品你懂的| 吃奶摸下高潮60分钟免费视频| 久久99精品视免费看| 国产成人亚洲综合a∨| 久久亚洲春色中文字幕久久久| 全亚洲最新黄色特级网站| 在线永久看片免费的视频| 久久高潮一级毛片免费| 亚洲国产成人久久精品大牛影视| 亚洲AV人无码激艳猛片| 免费大片在线观看网站| 久久久久久国产a免费观看黄色大片 | 久久久久久国产a免费观看黄色大片 | 亚洲神级电影国语版| 精品亚洲成α人无码成α在线观看| 永久免费av无码网站韩国毛片| a毛片久久免费观看| 色吊丝免费观看网站| 亚洲sss综合天堂久久久| 久久精品亚洲日本佐佐木明希| avtt亚洲天堂| 国产免费一区二区三区VR| 一个人免费观看视频www| 久久综合给合久久国产免费|