如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2005年11月29日

只有中小企業用OpenCMS嗎?

答案是錯的!

德國第二大銀行、歐洲第五大銀行 : HVB集團
德國的健康保險基金 : DRAGER & HANSE
世界上最大的進行石油和天然氣勘探、生産、提煉和銷售的公司之一 : British Petroleum(英國石油公司,簡稱BP)
義大利最大的能源公司 : AEM S.p.A
世界最大的冶金用煤生産商 : BHP Billiton Mitsubishi Alliance
德國最大的房地産公司之一 : AGIV
雷諾汽車
僅次於波音的世界第二大航空公司 : EADS
3M德國公司
世界最大的眼鏡鏡片生産商 : Essilor
世界著名的戶外運動用品生産商 : the North Face
義大利最大的糖業公司 : Zuccheri
...等 都用OpenCMS!

開源業務流程管理(BPM)

功能齊全的業務流程管理套件也許最先不是來自開源社群,不過這正是諸多專案在竭力使之實現的目標。隨著SOA的興起,人們對管理及編寫不同服務和Enterprise JavaBeans(EJB)的業務流程引擎的需求空前高漲,甚至對以其他方式依靠開源技術的網站來說也是如此。

這就是爲什麽Apache軟體基金會考慮採用Project Agila的原因。在該基金會的Jakarta Java工具套件當中,這個專案可以說是 “皇冠上的寶石”。Agila是Gluecode軟體公司在2004年10月捐獻的初始代碼開發而成的,這個輕便、可嵌入的開源業務流程管理引擎適合與 J2EE和較低階的平臺如J2ME一起使用。Apache的代表聲稱,正因爲如此,Agila是Apache Java中間件(Middleware)系列當中的最後一個重要部分,可以同BEA或者IBM等主要商業開發商提供的産品相媲美。目前這個專案還處於孵化階段,沒有授權文件,不過已經向公衆開放。但預計大規模的開發工作很快就會啓動。

Apache軟體基金會不是惟一遵循這條思路的組織。JBoss 也在期望把産品系列擴大到其核心應用伺服器以外的領域。JBoss近期購買了名爲jBPM的開源工作流引擎,把其豐富的Java開發經驗帶到了業務流程管理(BPM)市場上。

與Project Agila一樣,jBPM也可以作爲獨立的應用運行,或者作爲另一個應用裏面的嵌入式元件運行。與Apache專案不同的是,jBPM代碼已經可以從 JBoss的網站下載,採用該公司的制定的寬鬆通用公共許可證 (LGPL)。除了引擎本身外,jBPM還包括圖形化的流程設計器,用於建立工作流。該專案的未來計劃包括: 增加對業務流程執行語言(BPEL)的本地化支援; 就長遠而言,專案的目標是要擴展jBPM的功能,使其成爲一種成熟的企業服務匯流排(ESB)。

除了這兩個主角外,還有其他許多開源工作流引擎(有的正在擬議中),不過這些專案的發展狀況往往很難確定。不過,管理業務流程這項複雜工作需要專門技能。如果你在尋求這類軟體的開源方案,穩妥之計就是,選擇得到像Apache或者JBoss這些財力雄厚、專業的組織支援的專案。
(From : http://www.ccw.com.cn/cio/solution/htm2005/20051103_135RB.asp)

OpenCMS與Struts結合是很容易的

From http://www.opencms-forum.de/viewtopic.php?t=684&sid=34de0ed0c1e9f5b624b218e38d8b0d7d

內容如下:
To use struts in unison with OpenCms is very simple.

Everything is the same EXCEPT!

* Your jsps are in OpenCms
* In your struts-config.xml, when your doing a forward include the OpenCms servlet and the full path to the file within the VFS. So all
your forwards to jsp's would begin with /OpenCms/directories-in-vfs/the-file-in-vfs.jsp. Remember that OpenCms is "JUST" a servlet. So your really doing a forward to the opencms servlet with parameters (sorta). The paramaters being the path to the file in the vfs.

Setup your web.xml with both the OpenCms servlet and the struts servlet. Put in all the tag libraries that you need from both. And
that's it, you'll have all the advantages of managing your pages in OpenCms and all the mvc capabilites of struts.

The struts-OpenCms sourceforge project was attempting to put actions, actionforms, and all the configs files and jars in the VFS. IMHO I
don't think that's a good idea.

The approach I mentioned, just puts the JSPs in the VFS so it requires NO code changes to OpenCms or Struts.

2005年11月28日

開源商業智慧(BI)

客戶和獨立軟體發展商在購買現有商業智慧(BI)軟體的許可證(License)時往往面臨高昂費用,這也就難怪在Open Source 社群內部BI方面的工作開展得如火如荼。首先是Eclipse基金會,它已把BI列爲自己的七個最高級別專案之一。該基金會已在6月發佈了1.0版本的商業智慧軟體和報表工具(BIRT),採用其自己的Eclipse許可證,該許可證得到了開源促進會(OSI)的批准。
BIRT的主要目的是將Java-based的Web應用充當報表系統。它包括兩個部分: 一個是JAR(Java Archive)文件,該文件包括可部署在應用伺服器上的運行時元件; 另一個就是報告設計器(Report Designer),它可以作爲Eclipse插件(Plug-in),提供了方便的所見即所得的編輯功能以及標準報表專案調色板。該工具包含名爲”開放資料訪問”的框架,這樣在選擇資料來源時具有很大的靈活性。

對需要專業支援、維護及培訓的人來說,Actuate公司爲BIRT技術提供了這些服務。此外,Actuate提供的自己版本的BIRT使用商業許可證,該許可證含有知識産權保障條款。
值得關注的另一家組織就是Pentaho,這家新興公司致力於開發全面的開源BI平臺,包括報表、分析、儀錶板、資料挖掘及工作流等工具。該公司的開發隊伍聲稱,隊伍成員以前在Cognos、Oracle和SAS 等公司從事過BI應用軟體的開發。這個專案的主要伺服器架構將搭建在J2EE上,與BIRT相似的地方是,客戶端環境將基於Eclipse平臺。開發人員已努力把先進技術整合到平臺裏面,譬如對所有內容統一使用XML定義; 對分析元件使用Web服務介面,確保最大的靈活性等。
Pentaho目前還沒有提供下載版本,不過該公司稱,它計劃在年底(2005)前交付所有專案的版本,採用寬通用公共許可證(LGPL)以及所謂的“類似LGPL”的許可證,其中包括Apache、BSD和Eclipse。公司網站上提供了詳細的Roadmap。

雖然Pentaho目前也許是個霧件(vaporware),但它具備了在BI市場成爲重要競爭者的所有必要條件。該專案的開發人員說: “我們沒指望用戶僅僅是因爲它是開放的就採用它。我們希望用戶選擇它,是因爲它更好。至於這個專案結果如何,幾個月後可見分曉。”

(From : http://www.ccw.com.cn/cio/solution/htm2005/20051103_135RB.asp)

2005年11月24日

慶祝本站自2004年九月二十九日開站到今日參訪人次破萬

本站自2004年九月二十九日開站到今日約十四個月參訪人次破萬人!

[超基本] Java Static and non-Static


重點: Class 未被初始化(New instance)以前靜態方法(static method)只能存取靜態變數(static variable) 與區域變數 local variable
如下面範例 c2,c3,c4,c5無法被static method - main所存取


public class j0227 extends Object {
    static int c1=5; // 靜態變數
    public int c2=6;
    private int c3=7;
    final int c4=8;
    int c5=0;

    public static void main(String args[]) {
        int c6=4;  // 區域變數
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
        System.out.println(c4);
        System.out.println(c5);
        System.out.println(c6);
    }
}


/*
產生compile error如下:
E:\JavaExercise\Fred>javac -d . j0227.java
j0227.java:10: non-static variable c2 cannot be referenced from a static context
System.out.println(c2);
^
j0227.java:11: non-static variable c3 cannot be referenced from a static context
System.out.println(c3);
^
j0227.java:12: non-static variable c4 cannot be referenced from a static context
System.out.println(c4);
^
j0227.java:13: non-static variable c5 cannot be referenced from a static context
System.out.println(c5);
*/

結果靜態方法main()只能讀取靜態變數C1與區域變數C6

 
同樣,Class 未被初始化(New instance)以前靜態方法static method(如main)不能直接呼叫非靜態方法non-static method。

public class TypeConversion {
    public static void main(String[] args){  // 靜態方法 main()
        int a = 10;
        long b = testConvert(a);    // 因為class TypeConversion 尚未初始化,因此會產生錯誤
        System.out.println(b);
    }

    long testConvert(long a) {  // 非靜態方法
        return a;
    }
}

靜態方法main()無法直接呼叫非靜態方法testConvert(),會產生錯誤

只要改成這樣就可以了
(1)
public class TypeConversion {
    public static void main(String[] args){
// 靜態方法 main()

         int a = 10;
        TypeConversion1 t = new TypeConversion(); // 加上這行用來產生初始化物件
        long b = t.testConvert(a);  // 呼叫此物件的方法
        System.out.println(b);
    }

    long testConvert(long a) {  // 非靜態方法
        return a;
    }

為該非靜態方法所在的class建立初始化物件,再用該物件呼叫該非靜態方法

 

(2)
public class TypeConversion {
    public static void main(String[] args){
        int a = 10;
        Conversion c = new Conversion();  // 建立另一個class "Conversion"的初始化物件
        long b = c.testConvert(a);   // 呼叫這個物件的方法
        System.out.println(b);
    }
}

class Conversion {    // 將該非靜態方法放在另一個class
    long testConvert(long a) {
        return a;
    }
}

[超基本] Java Timer程式範例

分成三部分TimerService class程式, 被TimerService 定時驅動執行的程式, 啟動,停止或設定Timer Service的JSP程式

程式一 TimerService class程式

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
public class TimerService {
Timer timer = new Timer();
public TimerService() { };

public void start() throws Exception {

Calendar date = Calendar.getInstance();
date.setTime(new Date());
date.add(Calendar.DAY_OF_MONTH,1); // 驅動此程式的後一天
date.set(Calendar.AM_PM,Calendar.AM); // 上午
date.set(Calendar.HOUR,11); // 11點
date.set(Calendar.MINUTE,0); // 0分
date.set(Calendar.SECOND,0); // 0秒
date.set(Calendar.MILLISECOND,0); // 0毫秒

// timer.schedule(param1,param2,param3)
// param1: 就是要定時驅動執行的程式
// param2: 設定開始執行的時間,如上面的Calendar設定
// param3: 執行間隔時間(單位: 毫秒)
timer.schedule(
new DailyRun(),
date.getTime(),
1000 * 60 * 60 * 24
);
} // end of method

public void stop() throws Exception {
timer.cancel();
} // end of method
} // end of class

程式二 被TimerService 定時驅動執行的程式
public class DailyRun extends TimerTask {
public DailyRun() {
}

public void run() {
// 這裡是要執行的程式內容
} // End of method

} // end of class



另外要寫一支JSP來啟動與關閉Timer Service, 或者可以將執行時間與間隔透過JSP進行設定

相關文章:  使用標準的Java Timer API執行Scheduled Job



2005年11月23日

[超基本] Java Exception訊息的傳遞

作者 : Fred Wang 日期 :2005/11/23
在Multi-pier的J2EE程式設計,往往層次過多, 而難於除錯,通常會用Exception來將訊息傳到顯示端,來判斷錯誤點, 下面範例為Exception訊息如何由被呼叫的最下層method傳到主程式

範例如下 :
public class j1123 extends Object {
    public static void main(String args[]) {
        try {
           aaa();
        } catch (Exception e) {
           System.out.println("Exception:"+e.toString());
        }
    } // end of method

    // 由於bbb()會丟出exception,則aaa()必須宣告throws Exception且必須有try{ }段
    // 否則會有編譯錯誤的訊息
    private static void aaa() throws Exception{
        try {
           bbb();
        // 這裡如果不要對Excption訊息加工則不須加catch
        // catch (Exception e) throw e; 是不需要的!
        } finally {
        }
    } // end of method

    private static void bbb() throws Exception{
        // 在程式中利用throw來產生Exception message
       throw new Exception("bbb() exception!");
    } // end of method
} // end of class

2005年11月21日

SAP Business One Implementation Methodology

聽過SAP Business One的產品介紹,這個產品功能對中小型企業而言相當好, 操作及設定也十分方便
下面是SAP Bueinese One專案計畫步驟:

Project plan template :

1 Implementation Hand off from Pre sales
a. Collect as much information from the Pre-sales stage:
* Get First Meeting - Conversational Role Questions from Pre-sales.
* Get Evaluation Plan from Pre-Sales
* Get Organizational Impact Map from Pre-Sales
* Get Functional Requirements Assessment from Pre-Sales
* Get the Pre-Sales Representative to present the PROOF PRESENTATION to you. Ideally, join the Pre-Sales Representative at the customer site at that stage.
b. Identify unconventional business processes
c. Identify proposed solutions
d. Identify activity amount and data conversion amount if possible

2 Kick off Meeting with Customer
a. Present implementation methodology
b. Review Resources Available
c. Create Skills Matrix to Leverage Team Members Experience

3 Scope Analysis
a. Clarify and elaborate on All Business Processes defined in the pre-sales phase
b. Get customers business process needs in details. Divide into subjects:
* Sales Process
* Purchasing Process
* Inventory management
* Production process
* Financials and Chart of Accounts
* Sales Opportunities
* Service
* Banking
* SAP Business One hardware requirements vs. existing hardware (Allow time for any upgrades to hardware)
* Review Data conversion needs - type and amount of Data
* Establish any required integration points for third party
* Determine Backup and restore Strategy
c. Review Critical Success Factors in each section
d. Identify any limitations in the out-of-box solution and discuss work around
e. Document all major business process
f. Create a list of limitations or opportunities of the design
g. Review results of limitations and suggest improvements to current B.P.
h. Work Around possibilities - UDF's/Formatted Search/Queries/SDK
i. Establish the post production review parameters. (See Going Live Check List)

j. Create Project Plan and assign Tasks
k. Once all steps in the Scope Analysis phase have been completed, send to the client for sign off

4 Create and Agree on Monitoring Methods
a. Who on the team is responsible for tasks
b. What are the agreed upon benchmarks to judge the projects success
c. Determine how often will you check on the progress
d. Prepare periodic progress reports

5 Install and configure server and client machines
a. Install SAP Business One on Server per Install Guide
b. Install SAP Business One on Client Machines per Install Guide
c. Request & Install License from Service Market Place
d. Create databases for SAP Business One

6 Configure System set up
a. Complete System Initialization in SAP Business One
b. Complete Definitions in SAP Business One

7 Data Conversion
a. Establish data migration methodology based on import capabilities of each module and export capabilities of current system and prepare import data files
b. Deliver relevant template to customer, including user fields needed to be imported
c. Review Conversion Strategy doc - (See Section 4)
d. Refer to open balances document for specific information related to converting data (See Section 5)
e. Determine a timeline for data conversion based on the technical survey
f. Receive raw data for manipulation
g. Allow client to test the validity of their data once it has been converted
h. Obtain client sign off for imported data

8 Business Process Requirements - Execution Phase:
a. Create DB Backup after every major step has been completed
b. Create users and authorizations
c. Create User Defined Fields
d. Print out Templates
e. Define Numbering Series for Documents
f. Create queries as defined
g. Create formatted searches as defined
h. Create Reports as defined
i. Create Alerts as defined
j. Define Approval Procedures in Administration module
k. Configure Sales A/R
l. Configure Purchasing A/P
m. Configure Inventory
-1. Define Alternative Items
-2. Define Catalog Numbers
-3. Define Serial Numbers
-4. Define Batches
-5. Define Price Lists information that was not imported
n. Configure Production
o. Configure Service
p. Configure HR
q. Configure Sales Opportunities
r. Configure Financials
-1. Budgets
-2. Cost Accounting
s. Configure Banking
t. Configure Reports
u. Review users authorizations and adjust as necessary
v. Create customizations specific to users
-1. Screen Layouts
-2. Queries
-3. Reports templates - design and printing
w. Configure Service Manager per documentation in the installation package

9 User Acceptance Testing
a. Perform any necessary upgrade if a new patch was released.
b. Review the results and decide if ready for production
c. Simulate all major business processes defined above
d. Simulate major business processes with super user from the client side
e. Compare the data to established reports
f. Review results and have client sign off

10 Pre Go-Live Phase
a. Review go-live check list
b. Create or import Opening Balances
c. Create custom user manuals

(From www.sap.com)

SOA 參考資訊

1.IBM SOA and Web Services紅皮書
2.IBM SOA and Web Services專欄
3.BEA SOA資源中心

導入服務導向架構 SOA 的策略

導入服務導向架構必須有整體的規劃,確實執行每個步驟,方能克服障礙,確保成功,下列是為一些寶貴的經驗法則,對導入 SOA 有相當大的助益。

1.制定統一的 Data Schema(Canonical Schema):例如原來的 Customer 資料在 ERP 與 CRM 系統有不同的格式,在 SOA 中必須有統一的 Schema。
2.延伸 Legacy System:使用 Web services 把 Legacy System 包裝起來提供開放的服務,是一種不錯的選擇。
3.建立管理服務的機制:包括佈署、監控、量測、Routing 等等。
4.彙集服務 (Orchestrate services):如果彙集一些互動服務可以具有商務意義,則可提供彙集服務給客戶使用,通常對應 User Task 且具有 Business Transaction 特性。
5.使用可靠的訊息傳輸機制:例如使用 Message Queue 比使用 TCP/IP 的 Socket 較穩定。
6.按 Internet/Intranet 的不同,採用適當的身份識別系統與安全機制。
7.採用 Services Interface、Services Facade、Services Implementation 三層架構,提高 Services 的彈性。

From : 如何導入服務導向架構 SOA

2005年11月17日

做一個比你可以成就的還要大的夢想

史考特,在新書《牛奶如何變成牛》中,道出他自身的成功致富之道,為讀者解讀了決定成敗的關鍵就在「瞄準月亮」。

瞄準月亮要從願景規劃地圖的初期開始,它不像定義及設定可達到的夢想及目標一樣,你設立了一些看起來無法由你單獨一人完成的夢想。不管這個夢想是否可以達到,但是它反映了你在當時想要成就的任何結果。

使用傳統的目標設定方法來設立可以完成的目標會大大地改善你的工作表現,它可以在短時間之內加倍你的收入,它可以改進你的婚姻關係與友誼。但是如果你採用瞄準月亮的方法,做一個比你可以成就的還要大的夢想,將會有更大的改變與改善。不只是改善你的關係,你可以針對關係重新注入生命。除了雙倍增加你的收入,你可以到達一個自己從未想像過的境界。

瞄準月亮策略共有以下五個步驟:
1.做出決定在特定的夢想、目標、計劃上瞄準月亮。
2.列出可能阻止你在特定的夢想、目標,或計劃上面瞄準月亮的阻礙。
3.確認你需要哪些類型的夥伴或外界資源,幫助你克服所列出的阻礙。
4.確認你將嘗試運用的特定人選或資源。
5.確實地運用這些夥伴或資源,開始你在願景地圖中所定義的步驟與工作。

把瞄準月亮變成一個習慣及生活方式,你也可以成為卓越成就者。(本文摘錄自高寶書版公司出版的《牛奶如何變成牛》)

2005年11月16日

讓網站管理員最頭痛的七件事

1. 上層主管不了解, 忽略網站的重要
2. IT部門過於重視技術考慮,而非實際使用者或內容的需求
3. 行銷部門喜歡大量的圖形及花俏的動畫
4. 管理者堅持特有的喜好及特色
5. 責任多而權力少
6. 內容貧乏或者過於氾濫
7. 太少的預算及人力
更多...

2005年11月15日

OpenCMS摘要

from www.opencms.org

•OpenCms是一個網站內容管理系統
•於2000年三月第一次公開發行
•Version 5.0 (stable) released May 2003
•Version 6.0 (alpha) released September 2004
•OpenCms is true Open Source Software
•OpenCms is available under the LGPL license
•No licensing costs
•OpenCms可在下面網站免費下載 http://www.opencms.org
•特別適合用來建立公司網站及內部網站
•適用於中大型企業現有的IT基礎環境
•多數功能是根據現實世界客戶的需求開發出來的
•高度彈性及客製化
•百分之百由Java寫成
•使用許多open source Java community經過驗證的元件
•由Alkacon Software領導開發
•有活躍的開發社群 –1000+ mailing list subscribers
•廣泛的商業支援
–More then 50 official “Solution Providers”
–200+ web companies offer support
•大量的文件可供參考
–第一本OpenCms的書已經發行 (written/edited by community members)
–Interactive documentation / examples

軟硬體規格 :
•Soft & Hardware requirements
–Software:Open Source to „High End“
•e.g. Linux + Tomcat + MySQL
•e.g. Win NT + IIS + Tomcat + MS SQL
•e.g. Solaris + BEA + Oracle
–Hardware:High flexibility
•Runs on a notebook computer
•Standard configuration: Normal Intel PC, 2Ghz CPU, 1 GB Ram
•Other: SUN Sparc, cluster configuration possible
•Installation is wizard based for default components (e.g. Tomcat, MySQL/ Oracle), takes just 5 minutes