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

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

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

    spark的自留地(ofbiz/eclipse rcp/shark/opentaps)

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      54 Posts :: 0 Stories :: 112 Comments :: 0 Trackbacks

    2012年3月28日 #

    到阿里工作快一年了,這一年回顧來(lái)最主要的成果還是在這里成功了推行了自己的領(lǐng)域建模方法與對(duì)應(yīng)的技術(shù)框架。總是想同更多的同學(xué)分享一下。

    為了幫助更多人了解如何應(yīng)用領(lǐng)域建模知識(shí)在實(shí)際項(xiàng)目中,我在InfoQ中發(fā)表了一篇題為“大型網(wǎng)站復(fù)雜業(yè)務(wù)持續(xù)重構(gòu)之道——全程領(lǐng)域建模實(shí)踐”的文章。為了增加趣味性,我用了個(gè)故事來(lái)展開(kāi)內(nèi)容,請(qǐng)大家不要對(duì)號(hào)入座(特別是老板們)。請(qǐng)有興趣了解這一話題的同學(xué)可以閱讀一下

    原文在
    http://www.infoq.com/cn/articles/sb-complex-business-continuity-refact
    posted @ 2012-03-28 15:07 shanghai_spark 閱讀(367) | 評(píng)論 (0)編輯 收藏

    2012年3月7日 #

    默認(rèn)Opentaps是基于derby的安裝,這個(gè)在實(shí)際生產(chǎn)環(huán)境是不太可能會(huì)使用的。往往我們會(huì)實(shí)際需要使用Oracle作為生產(chǎn)數(shù)據(jù)庫(kù)。很多人問(wèn)我怎么去修改Opentaps與Oracle的支持。修改方法如下:

    1、編輯 framework/entity/config/entityengine.xml,修改default delegate為 localoracle

    <delegator name="default" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main" distributed-cache-clear-enabled="false">
    <group-map group-name="org.ofbiz" datasource-name="localoracle"/>
    <group-map group-name="org.ofbiz.olap" datasource-name="localoracle"/>
    <group-map group-name="org.ofbiz.tenant" datasource-name="localoracle"/>
    <group-map group-name="org.opentaps.analytics" datasource-name="localoracle"/>
    <group-map group-name="org.opentaps.testing" datasource-name="localoracle"/>
    </delegator>


    2、修改同個(gè)文件中的的localoracle 的datasource節(jié)點(diǎn)
        <datasource name="localoracle"
                helper
    -class="org.ofbiz.entity.datasource.GenericHelperDAO"
                schema
    -name="OFBIZ"
                field
    -type-name="oracle"
                check
    -on-start="true"
                add
    -missing-on-start="true"
                alias
    -view-columns="false"
                join
    -style="ansi">
            
    <read-data reader-name="seed"/>
            
    <read-data reader-name="seed-initial"/>
            
    <read-data reader-name="demo"/>
            
    <read-data reader-name="ext"/>
            
    <inline-jdbc
                    jdbc
    -driver="oracle.jdbc.driver.OracleDriver"
                    jdbc
    -uri="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
                    jdbc
    -username="ofbiz"
                    jdbc
    -password="ofbiz"
                    pool
    -minsize="2"
                    pool
    -maxsize="250"
                    time
    -between-eviction-runs-millis="600000"/>
        
    </datasource>

    3、將{ORACLE_HOME}\product\10.2.0\db_1\jdbc\lib目錄下的ojdbc14.jar拷貝到framework/entity/lib/jdbc目錄下

    4、重新運(yùn)行ant run-install生成數(shù)據(jù)庫(kù)對(duì)象

    5、現(xiàn)在Oracle數(shù)據(jù)庫(kù)已經(jīng)就緒OK啦


    posted @ 2012-03-07 10:56 shanghai_spark 閱讀(791) | 評(píng)論 (0)編輯 收藏

    2011年3月1日 #

    我一直期望可以提供一個(gè)高性能、高定制性的電子商務(wù)套件,它不應(yīng)局限于傳統(tǒng)的ERP應(yīng)用或簡(jiǎn)單的線上商城應(yīng)用。而是應(yīng)將線上發(fā)生的產(chǎn)品展示、線上營(yíng)銷、在線客戶服務(wù)與線下的倉(cāng)儲(chǔ)發(fā)貨、經(jīng)營(yíng)分析、關(guān)鍵客戶識(shí)別有機(jī)結(jié)合起來(lái)。

    開(kāi)始Opentaps開(kāi)發(fā)已經(jīng)兩年多了,對(duì)它的理解也越來(lái)越深。做為一個(gè)完整的ERP套件來(lái)說(shuō)我覺(jué)得它足夠應(yīng)付我們的日常業(yè)務(wù):客戶、訂單、倉(cāng)儲(chǔ)、采購(gòu)、財(cái)務(wù)等。并且它從應(yīng)用層和開(kāi)發(fā)層都已經(jīng)提供了足夠的支持與擴(kuò)展空間。

    我始終覺(jué)得Ofbiz提供的ecommerce模塊過(guò)于簡(jiǎn)單,或者說(shuō)它與我們國(guó)人想象中的電子商城有比較大的差距。如果我們?cè)谶@之上來(lái)開(kāi)發(fā)的話可以需要付出很多的effort才可能達(dá)到我們想要的效果。當(dāng)然opentaps也提供了另一個(gè)選擇gracious,但從個(gè)人角度來(lái)說(shuō)我并不喜歡這個(gè)模塊,它為用戶提供的定制選項(xiàng)太少了,只能作為有經(jīng)驗(yàn)的開(kāi)發(fā)者定制自己應(yīng)用的一個(gè)基礎(chǔ)。

    在為Opentaps開(kāi)發(fā)Magento開(kāi)發(fā)Integration Feature時(shí),我接觸到了Magento這個(gè)最廣泛被使用的電子商務(wù)套件。不過(guò)當(dāng)時(shí)只是淺嘗即止并未做太多的功能研究,最近這些日子里我在不斷深入了解了這個(gè)產(chǎn)品后越來(lái)越嘆服其功能的強(qiáng)大。我想我想要的所有功能應(yīng)該都被包括在這個(gè)產(chǎn)品已完成的feature中了。但同樣我更期望是一個(gè)完整的線上線下相貫通的網(wǎng)絡(luò)商城運(yùn)營(yíng)方案,離這樣的要求Magento在財(cái)務(wù)結(jié)算、倉(cāng)儲(chǔ)管理、采購(gòu)管理這些ERP功能方面又明顯的偏弱。

    我想Opentaps與Magento的整合可能不應(yīng)僅限與原來(lái)所提供的產(chǎn)品、訂單信息的貫通,或許我們應(yīng)該嘗試提供更密切的信息聯(lián)系。至少第一步應(yīng)該要把客戶資料信息進(jìn)行雙向的同步,然后是庫(kù)存信息。

    考慮更遠(yuǎn)一點(diǎn)的話,在Magento或Opentaps中引入在線客服與呼叫中心的Feature也是一個(gè)非常讓人振奮的事情。發(fā)展到這一步,我們就可以簡(jiǎn)單的集成這兩個(gè)優(yōu)秀開(kāi)源產(chǎn)品來(lái)為我們的線上線下提供全方面的服務(wù)了。

    在以后的文章里,我會(huì)繼續(xù)在這個(gè)方面做更多的設(shè)計(jì)與實(shí)現(xiàn)工作。如果有童鞋對(duì)此話題感興趣,可以把你的想法告訴我看是否可以一起來(lái)做點(diǎn)事。


    BTW: 現(xiàn)在opentaps已完成的magento整合內(nèi)容可以在這里找到 http://www.opentaps.org/docs/index.php/Opentaps_Magento_Integration
    posted @ 2011-03-01 09:42 shanghai_spark 閱讀(5811) | 評(píng)論 (5)編輯 收藏

    2011年2月17日 #

    現(xiàn)在google,yahoo這些免費(fèi)的群組都在大陸不好用,打算自己裝個(gè)群組系統(tǒng)給自己的team用。用萬(wàn)能的google出Simple Groupware,看了特性描述好象還不錯(cuò)。那就先裝上它試試吧。

    1、安裝apache、mysql、php

    yum install mysql mysql-devel mysql-server php php-cli httpd


    2、安裝php所需的支持的包

    yum install php-zlib php-gd php-mysql php-mbstring


    3、啟動(dòng)mysqld與httpd服務(wù)

    4、創(chuàng)建/var/www/html/sgs目錄,并在該目錄下下載Simple Groupware installer文件后解壓,這樣在/var/www/html/sgs目錄下存在sgs_installer.php文件

    5、打開(kāi)瀏覽器訪問(wèn)http://your_server/sgs/sgs_installer.php選擇你要的版本上面的Install,然后按照屏幕提示作下去就好啦


    posted @ 2011-02-17 22:43 shanghai_spark 閱讀(1988) | 評(píng)論 (2)編輯 收藏

    2011年2月11日 #

    打算在自己申請(qǐng)的Free Amazon EC2上放個(gè)Magento,看了下Magento的幫助也整理內(nèi)容如下:

    1、安裝apache、mysql、php

    yum install mysql mysql-devel mysql-server php php-cli httpd

    2、安裝php所需的支持的包

    yum install php-dom php-mcrypt php-gd

    3、創(chuàng)建magento數(shù)據(jù)庫(kù)

    4、下載magento full release package并解壓到/var/www/html下,并設(shè)置目錄權(quán)限為777

    5、通過(guò)瀏覽器訪問(wèn)安裝magento http://localhost/magento
    posted @ 2011-02-11 12:14 shanghai_spark 閱讀(1921) | 評(píng)論 (0)編輯 收藏

    2011年2月10日 #

    現(xiàn)在在用一個(gè)20寸的廈新電視機(jī)在做我的顯示器,它是寬屏的,最高可以支持1344x768的分辨率。可是裝了Fedora 14以后,只能發(fā)現(xiàn)最高支持的分辨率是1024x768。字體看起來(lái)都是扁扁的,很不爽!

    得想個(gè)法把這個(gè)分辨率調(diào)整過(guò)來(lái):

    1) 打開(kāi)一個(gè)Terminal窗口,切換到root身份后運(yùn)行

    Xorg -configure :1

    這個(gè)命令會(huì)在/root下生成一個(gè)叫xorg.conf.new的文件,我們運(yùn)行以下命令把它移到/etc/X11下
    mv /root/xorg.conf.new /etc/X11/xorg.conf

    2) reboot系統(tǒng)

    3)在終端中輸入 gtf 1344 768 60 -x 命令, 這樣就會(huì)在終端中顯示一些內(nèi)容. 類似下面的:
    # 1344x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 83.95 MHz
      Modeline 
    "1344x768_60.00"  83.95  1344 1408 1552 1760  768 769 772 795  -HSync +Vsync

    把它復(fù)制到 /etc/X11/xorg.conf中的[Moniter]段中,復(fù)制后的文件中[Moniter]段如下:
    Section "Monitor"
            Identifier   
    "Monitor0"
            VendorName   
    "Monitor Vendor"
            ModelName    
    "Monitor Model"
            # 1344x768 @ 
    60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 83.95 MHz
            Modeline 
    "1344x768_60.00"  83.95  1344 1408 1552 1760  768 769 772 795  -HSync +Vsync
    EndSection

    4) reboot系統(tǒng)后就會(huì)在System->Preferences->Moniters中發(fā)現(xiàn)1344x768的選項(xiàng)啦!

    5) 收工!

    posted @ 2011-02-10 16:29 shanghai_spark 閱讀(5115) | 評(píng)論 (4)編輯 收藏

    2011年2月9日 #

    在Opentaps 1.4版本我將AOP由原來(lái)的AspectJ替換為現(xiàn)在Aspectwerkz。結(jié)果我自己就首先在64bit的windows系統(tǒng)下遇到ant編譯出錯(cuò),現(xiàn)在把解決方法列在這里

    將opentaps/opentaps-common/build-aspects.xml中的weave任務(wù)內(nèi)容替換為以下內(nèi)容(其實(shí)就是把原來(lái)的ant的替換jar內(nèi)容任務(wù)分成兩部來(lái)執(zhí)行):

    <!-- ================================================================== --> 
            
    <!-- Weave advice into target jars                                      --> 
            
    <!-- ================================================================== --> 
            
    <target name="weave" depends="detect-dependencies" if="processRequired"> 
              
    <echo message="[build] =========== Start Building Aspect (Weave) ============="/> 
              
    <java classname="org.codehaus.aspectwerkz.compiler.AspectWerkzC" fork="true"> 
                
    <jvmarg value="-Daspectwerkz.definition.file=${aopConfig}"/> 
                
    <jvmarg value="-Daspectwerkz.transform.filter=no"/> 
                
    <!-- <jvmarg value="-Daspectwerkz.transform.verbose=true"/> --> 
                
    <!-- <jvmarg value="-Daspectwerkz.transform.details=true"/> --> 
                
    <arg value="-verify"/> 
                
    <classpath refid="local.class.path" /> 
                
    <classpath> 
                  
    <pathelement path="${build.dir}/classes/common"/> 
                
    </classpath> 
                
    <!-- below is the jars to post-process --> 
                
    <arg value="${ofbiz.dir}/framework/entity/build/lib/ofbiz-entity.jar"/> 
              
    </java> 
              
    <java classname="org.codehaus.aspectwerkz.compiler.AspectWerkzC" fork="true"> 
                
    <jvmarg value="-Daspectwerkz.definition.file=${aopConfig}"/> 
                
    <jvmarg value="-Daspectwerkz.transform.filter=no"/> 
                
    <!-- <jvmarg value="-Daspectwerkz.transform.verbose=true"/> --> 
                
    <!-- <jvmarg value="-Daspectwerkz.transform.details=true"/> --> 
                
    <arg value="-verify"/> 
                
    <classpath refid="local.class.path" /> 
                
    <classpath> 
                  
    <pathelement path="${build.dir}/classes/common"/> 
                
    </classpath> 
                
    <!-- below is the jars to post-process, if these jar not effect each other you can put them in same pos, else please seperate them into another task --> 
                
    <arg value="${ofbiz.dir}/framework/common/build/lib/ofbiz-common.jar"/> 
              
    </java> 
              
    <java classname="org.codehaus.aspectwerkz.compiler.AspectWerkzC" fork="true"> 
                
    <jvmarg value="-Daspectwerkz.definition.file=${aopConfig}"/> 
                
    <jvmarg value="-Daspectwerkz.transform.filter=no"/> 
                
    <!-- <jvmarg value="-Daspectwerkz.transform.verbose=true"/> --> 
                
    <!-- <jvmarg value="-Daspectwerkz.transform.details=true"/> --> 
                
    <arg value="-verify"/> 
                
    <classpath refid="local.class.path" /> 
                
    <classpath> 
                  
    <pathelement path="${build.dir}/classes/common"/> 
                
    </classpath> 
                
    <!-- below is the jars to post-process --> 
                
    <arg value="${ofbiz.dir}/applications/order/build/lib/ofbiz-order.jar"/> 
              
    </java> 
              
    <jar jarfile="${lib.dir}/${name}.jar" update="true" basedir="${build.dir}/classes/common" includes="org/opentaps/aspect/secas/**" /> 
                
    <!-- put aop.xml into target jar META-INF dir --> 
                 
    <mkdir dir="${build.dir}/classes/META-INF" /> 
                 
    <copy file="${aopConfig}" tofile="${build.dir}/classes/META-INF/aop.xml" overwrite="true"/> 
               
    <!-- create new jar with aop.xml, then copy it to orign location, using these for avoid unable rename error on windows 64bit system--> 
                   
    <zip destfile="${lib.dir}/ofbiz-entity.jar"> 
                   
    <zipfileset src="${ofbiz.dir}/framework/entity/build/lib/ofbiz-entity.jar"/> 
                   
    <fileset dir="${build.dir}/classes/"> 
                     
    <include name="META-INF/aop.xml"/> 
                   
    </fileset> 
                   
    </zip> 
               
    <delete file="${ofbiz.dir}/framework/entity/build/lib/ofbiz-entity.jar" failonerror="false"/> 
                   
    <move file="${lib.dir}/ofbiz-entity.jar" tofile="${ofbiz.dir}/framework/entity/build/lib/ofbiz-entity.jar"/> 

                   
    <zip destfile="${lib.dir}/ofbiz-common.jar"> 
                   
    <zipfileset src="${ofbiz.dir}/framework/common/build/lib/ofbiz-common.jar"/> 
                   
    <fileset dir="${build.dir}/classes/"> 
                     
    <include name="META-INF/aop.xml"/> 
                   
    </fileset> 
                   
    </zip> 
               
    <delete file="${ofbiz.dir}/framework/common/build/lib/ofbiz-common.jar" failonerror="false"/> 
                   
    <move file="${lib.dir}/ofbiz-common.jar" tofile="${ofbiz.dir}/framework/common/build/lib/ofbiz-common.jar"/> 

               
    <zip destfile="${lib.dir}/ofbiz-order.jar"> 
                   
    <zipfileset src="${ofbiz.dir}/applications/order/build/lib/ofbiz-order.jar"/> 
                   
    <fileset dir="${build.dir}/classes/"> 
                     
    <include name="META-INF/aop.xml"/> 
                   
    </fileset> 
                   
    </zip> 
               
    <delete file="${ofbiz.dir}/applications/order/build/lib/ofbiz-order.jar" failonerror="false"/> 
                   
    <move file="${lib.dir}/ofbiz-order.jar" tofile="${ofbiz.dir}/applications/order/build/lib/ofbiz-order.jar"/> 

                 
    <echo message="[build] =========== Done Building Aspect (Weave) =============="/> 
               
    </target>


    以上方法已經(jīng)在opentaps wiki [http://www.opentaps.org/docs/index.php/General_Installation_of_Opentaps#Build_Aspect_class_Errors] 中加上過(guò)了。
    posted @ 2011-02-09 22:18 shanghai_spark 閱讀(1633) | 評(píng)論 (0)編輯 收藏

    2011年2月8日 #

    OFBIZ為我們提供了POS模塊,它已經(jīng)可以滿足我們?nèi)粘J浙y的大部分要求了。但是美中不足的是它沒(méi)有提供庫(kù)存查詢功能。我也沒(méi)看出來(lái)OFBIZ有近期實(shí)現(xiàn)此功能的計(jì)劃,所以打算自己做一個(gè)。

    首先研究一下POS模塊的代碼結(jié)構(gòu):

    1、POS模塊同其它模塊的實(shí)現(xiàn)方式有所區(qū)別,它用了XUL技術(shù)來(lái)定制展示的界面。所有屏幕文件使用XUL格式定義于screens目錄之下

    2、按鈕事件與java代碼映射關(guān)系,記錄在config\buttonevents.xml下

    3、資源文件存放在XuiLabels_[locale].properties與config\PosUiLabels.xml中

    了解結(jié)構(gòu)后,加上庫(kù)存查詢功能就很簡(jiǎn)單了,我是這樣做的:

    1、在screens/default/menu/mgrmain.xml中增加一個(gè)mgrInquiryInventory庫(kù)存查詢按鈕,它會(huì)出現(xiàn)在POS的“經(jīng)理”界面中的

    2、在buttonevents.xml中加上以下行,映射事件代碼
    <event button-name="mgrInquiryInventory" class-name="org.ofbiz.pos.event.ManagerEvents" method-name="inquiryInventory" disable-lock="false"/>


    3、在ManagerEvents.java中加入inquiryInventory方法代碼(我是使用了一個(gè)ShowInventory的XPage來(lái)展現(xiàn)當(dāng)前選中項(xiàng)的庫(kù)存分布)

    4、完工。

    算了算,包括閱讀代碼和編寫這些東東總共也就花了七八個(gè)小時(shí)的effort,不知道為什么ofbiz就不肯加上這個(gè)功能呢?或者pos模塊不再發(fā)展了?





    posted @ 2011-02-08 11:29 shanghai_spark 閱讀(2293) | 評(píng)論 (4)編輯 收藏

    2010年8月14日 #

    原來(lái)opentaps中的entity model文件中大量使用了floating-point來(lái)定義數(shù)值內(nèi)容,現(xiàn)在我們要使用fixed-point來(lái)替換它們,以保證它的java type使用BigDecimal而不是Double.

    這樣就有了這次的替換任務(wù),把所有model文件中的floating-point替換成為fixed-point。

    方法對(duì)我來(lái)說(shuō)有三:
    1, 在eclipse或其它ide中查找出所有的包括floating-point文件來(lái)手工修改
    2, 在UltraEdit或其它文本編程器中進(jìn)行批量文件內(nèi)容替換
    3, 嘗試一下linux的下的sed命令?

    評(píng)估一下,3肯定是一個(gè)最有效率的選擇。那么說(shuō)干就干,let's go!

    命令如下:

    sed -"s/floating-point/fixed-point/g" `find . -name "*.xml"|xargs grep floating-point -rl`

    一句話就搞掂了,真棒!
    posted @ 2010-08-14 17:16 shanghai_spark 閱讀(1428) | 評(píng)論 (0)編輯 收藏

    2010年8月12日 #

    莫名其妙,日志中老是有無(wú)法連接oracle的異常
    java.sql.SQLException: Io 異常: The Network Adapter could not establish the connection

    先用oracle用戶登錄到服務(wù)器上
    sqlplus /nolog

    conn 
    / as sysdba

    運(yùn)行了一些sql,一切正常呀,奇怪!

    仔細(xì)想想,可能是lsnrctl的問(wèn)題,打開(kāi)listener.ora在下面插入以下內(nèi)容:
        (SID_DESC=
         (GLOBAL_DBNAME 
    = ORCL)
         (ORACLE_HOME 
    = /oracle/10g)
         (SID_NAME 
    = ORCL)
        )
    完成后的listener.ora如下
    SID_LIST_LISTENER =
      (SID_LIST 
    =
        (SID_DESC 
    =
          (SID_NAME 
    = PLSExtProc)
          (ORACLE_HOME 
    = /oracle/10g)
          (PROGRAM 
    = extproc)
        )
        (SID_DESC
    =
         (GLOBAL_DBNAME 
    = ORCL)
         (ORACLE_HOME 
    = /oracle/10g)
         (SID_NAME 
    = ORCL)
        )
      )

    LISTENER 
    =
      (DESCRIPTION_LIST 
    =
        (DESCRIPTION 
    =
          (ADDRESS 
    = (PROTOCOL = IPC)(KEY = EXTPROC1))
          (ADDRESS 
    = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
        )
      )

    保存后,重啟lsnrctl服務(wù)后就可以正常聯(lián)接了。


    posted @ 2010-08-12 17:39 shanghai_spark 閱讀(472) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲最大福利视频网站| 成人毛片免费观看视频在线| 一级毛片大全免费播放下载| 特级毛片全部免费播放| 牛牛在线精品观看免费正| 美女视频免费看一区二区| 无套内谢孕妇毛片免费看看| 免费手机在线看片| 久久99久久成人免费播放| 国产精品永久免费| A级毛片高清免费视频在线播放| 久久aa毛片免费播放嗯啊| 99精品在线免费观看| 黄色成人免费网站| 很黄很色很刺激的视频免费| 无人影院手机版在线观看免费 | 亚洲精品第一综合99久久| 在线综合亚洲欧洲综合网站| 妇女自拍偷自拍亚洲精品| 一本久久免费视频| 美女视频黄的免费视频网页| 久久精品人成免费| 最新仑乱免费视频| 亚洲国产精品一区二区三区久久| 久久精品国产亚洲精品| 亚洲黑人嫩小videos| 中文文字幕文字幕亚洲色| 综合一区自拍亚洲综合图区| 国产在线观看无码免费视频| 99在线视频免费| 成人午夜性A级毛片免费| 免费在线观看一级毛片| 亚洲av无码潮喷在线观看| 亚洲av无码一区二区三区天堂古代 | 亚洲第一网站男人都懂| 亚洲情综合五月天| 亚洲国产精品成人久久久| 亚洲AV第一成肉网| 国产一级婬片A视频免费观看| 91视频免费网址| 国产精品免费小视频|