培訓最后一天,報表~
感覺普元的報表有點水晶的味道,弄了個分組報表,又建數(shù)據(jù)源又建數(shù)據(jù)集有設行分組,列分組的,趕緊挺麻煩,沒有用潤乾好使,雖然潤乾工作量也挺大
看來老板要貼了心上普元了,接下來可能要實戰(zhàn)了,不知道啥樣,現(xiàn)在有兩點困難;
1\、普元報的錯誤,無從下手,不知道哪出的毛病,比如有時在展現(xiàn)層的毛病,而在邏輯處理層報錯,摸不著頭腦啊。
2、普元的構(gòu)件不熟悉,據(jù)說有1000多個構(gòu)件,不像java api一樣按照功能分的包,它是按層分的包,業(yè)務邏輯層構(gòu)件、運算層構(gòu)件、展現(xiàn)層構(gòu)件。要實現(xiàn)一個功能怎么能知道構(gòu)件包里有沒有現(xiàn)成的,恐怕這只能慢慢熟悉那些構(gòu)件庫了
3、覺得普元的報表系統(tǒng)不怎么樣,至少沒有什么讓人耳目一新的,工作流系統(tǒng)還挺強,對工作流不熟悉,不敢說什么,然后就是可維護性,可擴展性,可能一直是自己寫代碼的,看不見代碼總覺得不踏實最然功能實現(xiàn)了并以更迅速的
4、聽頭兒說這是未來軟件開發(fā)的趨勢,聽得我直郁悶,未來開發(fā)就是這么托構(gòu)件然后用連線一拉基本完事兒了嗎?!得,要不我還是轉(zhuǎn)行做小買賣去吧,嗚嗚,總的來說,覺得這種模式對程序員個人的發(fā)展沒多大好處,核心代碼都被封裝好了,不知道什么是類,對象,方法,面向?qū)ο螅材茌p而易舉做軟件工程師了,呵呵,工程師以后不值錢嘍。
自己的一點感覺,胡侃一通,不知道合不合乎邏輯,在前面的blog里有朋友留言說"千萬別被普元忽悠了",哈哈,不知道那位兄弟的理由是什么,想多聽聽大家的意見,望廣留言,多謝多謝多謝!!!
例子1:Entity的格式
<root>
<data>
<myEntity>
<myField1>1234</myField1>
<myField2>This is demo</myField2>
</myEntity>
</data>
</root>
例子2:EntityList的格式為
<root>
<data>
<list length=2>
<myEntity name="test1">
<myField1>1234</myField1>
<myField2>This is demo</myField2>
</myEntity>
<myEntity name="test2">
<myField1>2345</myField1>
<myField2>This is demo</myField2>
</myEntity>
<list>
</data>
</root>
通過Xpath來訪問數(shù)據(jù),比如
/root/data /myEntity將訪問到例子1中的<myEntity>實體
/root/data/myEntity/ myField1 將訪問到例子1中的myField1,結(jié)果為1234
/root/data/list/myEntity[@name="test1"]將訪問例子2中的<myEntity name="test1"> 實體
/root/data/list/myEntity[@name="test1"]/myField1將訪問例子2中的myField1,值為1234
第四天還沒來得及寫呢,現(xiàn)在已經(jīng)是第五天了呵呵
昨天臨時以前的項目要改寫東西,聽的斷斷續(xù)續(xù)
還是一些關(guān)于工作流的知識,只是更加復雜一下,跟著文檔一個勁兒的復制黏貼
也不知道所以然
據(jù)說下午還要考試,暈
摘要: 今天接著培訓普元EOS講rishWeb和工作流上午實現(xiàn)了一個在一個table中實現(xiàn)增刪改查,有個控件datacell,一下子就把我搞蒙了, 一個勁兒的復制黏貼,也不知道哪是哪,看起來好像類似與那個.net中的那個DataGrid,關(guān)鍵是還不大明白那些輸入輸出參數(shù)應該以什么套路配置。應該是在開始的時候就配置輸入輸出參數(shù),但是又是如何跳回到jsp的呢,<datacell:datacell ...
閱讀全文
一直苦惱與不能實現(xiàn)廣域網(wǎng)的版本控制,終于發(fā)現(xiàn)Google code就提供這種服務,它使用Subversion來控制版本,下了一個
TortoiseSVN 1.5.1
裝上,搗鼓了半天終于上傳上Google code了,哈哈。有成就感
這兩天有搞了個eclipse插件
subclipse,運行起來以后無論commit還是update都提示錯誤:
Attempted to lock an already-locked dir
通過搜索,解決辦法是 執(zhí)行clearup操作,就好了
記錄在這,Subversion還要繼續(xù)研究
今天剖析了昨天三下兩下生成的增刪改查的代碼(能看到的代碼也僅僅限于jsp頁面中的一些標簽),其他的要看的話都是xml,要用EOS的設計器看才是類似于流程圖的東西
感覺看不到親切的java代碼很不爽,呵呵
然后練習自定義運算邏輯,這下自己寫類了呵呵,eos能夠由向?qū)ё詣由深惡头椒w,就像Myeclipse中新建struts的action一樣,發(fā)現(xiàn)eos的方法都是靜態(tài)的,都是返回一個int整型值,參數(shù)列表也都是Document doc, BizContext param,看起來只有方法名可以自定義了,呵呵!
之前說過普元這套東西都是用xml格式傳遞參數(shù)的,這里就是從param中獲取xml,然后拆解每個要用到的節(jié)點,來獲取傳入的參數(shù),然后經(jīng)過處理后把返回值再放到xml節(jié)點中,好費勁。
然后是handler,為了靈活的加入新的處理,可以在一個業(yè)務邏輯的前后加入多個handler,跟一般的過濾器寫法沒什么差別。
然后是jsp Tag自定義,也是繼承了javax.servlet.jsp.tagext.TagSupport,沒有普元的東西
再然后是復雜查詢,多表查詢,他是創(chuàng)建一個查詢實體,就是視圖啦
一天下來對普元EOS了解的多了些,它以方法為單位作為構(gòu)成構(gòu)件,以達到重用的目的,各個層之間以xml格式作為聯(lián)系,開發(fā)人員基本上已圖形化開發(fā),不接觸底層技術(shù),給程序員的門檻降低了(大學生就業(yè)更難了呵呵),開發(fā)系統(tǒng)開始工業(yè)化,把零件裝起來,螺絲擰上就OK了
可能經(jīng)歷實際開發(fā)了,會有多一些不一樣的感觸吧
還是沒鬧明白難道這就是所謂SOA嗎???
普元EOS,面向構(gòu)件的開發(fā)
公司要購進普元的EOS開發(fā)工具,組織為期5天的培訓
為了今天的培訓我把我的筆記本系統(tǒng)都重裝了,折騰了半天裝數(shù)據(jù)庫,裝EOS,裝EOS補丁,不知道干嘛不做一個集成了補丁的安裝包
安裝過程中要配置數(shù)據(jù)庫,要初始化數(shù)據(jù)庫,會向數(shù)據(jù)庫中自動建好多表,然后安裝成功后可以在服務控制臺管理。
首先做了個HelloWorld
界面就是這樣的

首先新建一個構(gòu)件包(面向構(gòu)件的開發(fā)嘛),每個構(gòu)建包下有頁面構(gòu)件page,展現(xiàn)邏輯構(gòu)件pr,業(yè)務邏輯構(gòu)件biz,數(shù)據(jù)邏輯構(gòu)件data等等。
我的理解就是每個構(gòu)件就相當于分層架構(gòu)中的一層,page就是jsp頁面,pr是Struts的action,biz是spring的bean,data是hibernate的映射,普元在這之上又進行了封裝,以前我們在各個層之間傳遞數(shù)據(jù)通常由一個DTO數(shù)據(jù)傳遞對象,而普元在各個層用xml來傳遞,普元把普遍通用的實現(xiàn)邏輯處理都封裝成了構(gòu)件,我們只要調(diào)用構(gòu)件就行了。
之后又來了復雜點有刺激的,通過向?qū)崿F(xiàn)對一個單表的增刪改查,向?qū)Ц?/span>vs.net中的那個數(shù)據(jù)連接,數(shù)據(jù)適配器拖到頁面上選擇表,選擇字段,就自動生成了增刪改查,只是vs.net中可以看到生成的C#的代碼,而普元生成的只是一堆xml。

原來一天未必能完成的事,現(xiàn)在十分鐘做完,能傻瓜的都傻瓜了,真的也要下崗了。
哦,對了,這些和SOA怎么聯(lián)系上呢?
要提供給客戶一個下載xml文件備份的功能
思路確定了
生成xml
在服務器指定目錄創(chuàng)建文件
取得文件路徑,彈出下載框
Java語言:
01 <%@ page contentType="text/html;charset=UTF-8" language="java"%>
02 <%@ page import="java.io.*" %>
03 <%
04 String pathurl = (String)request.getAttribute("pathurl");
05 if(pathurl !=null && !pathurl.equals("")){
06
07 String addressReport = application.getRealPath("/")+"saveFiles"+File.separator+pathurl;
08 //String addressReport = PageConstraint.XML_PATH_SEND+pathurl;
09 addressReport = addressReport.replace(File.separator,File.separator+File.separator);
10
11 // 設置響應頭和下載保存的文件名
12 response.setContentType("APPLICATION/OCTET-STREAM;charset=UTF-8");
13 response.setHeader("Content-Disposition",
14 "attachment; filename=\"" + pathurl + "\"");
15
16 // 打開指定文件的流信息
17 java.io.FileInputStream fileInputStream =
18 new java.io.FileInputStream(addressReport);
19
20 寫出流信息
21 int i;
22 while ((i=fileInputStream.read()) != -1) {
23 out.write(i);
24 }
25
26 fileInputStream.close();
27 out.close();
28
29 }
30 %>
這么寫在jsp文件中的代碼,開始試驗沒有問題,但是如果xml中有中文,就會是亂碼,xml文件是使用utf8生成的,猜想可能是在流讀取的時候編碼不對,于是在網(wǎng)上搜得了下面這樣的寫法,通過InputStreamReader設置了編碼UTF-8
測試成功
Java語言:
01 <%@ page contentType="text/html;charset=UTF-8" language="java"%>
02 <%@ page import="java.io.*" %>
03 <%
04 String pathurl = (String)request.getAttribute("pathurl");
05 if(pathurl !=null && !pathurl.equals("")){
06
07 String addressReport = application.getRealPath("/")+"saveFiles"+File.separator+pathurl;
08 //String addressReport = PageConstraint.XML_PATH_SEND+pathurl;
09 addressReport = addressReport.replace(File.separator,File.separator+File.separator);
10
11 // 設置響應頭和下載保存的文件名
12 response.setContentType("APPLICATION/OCTET-STREAM;charset=UTF-8");
13 response.setHeader("Content-Disposition",
14 "attachment; filename=\"" + pathurl + "\"");
15
16 // 打開指定文件的流信息
17 java.io.FileInputStream fileInputStream =
18 new java.io.FileInputStream(addressReport);
19
20 // 寫出流信息
21 //int i;
22 //while ((i=fileInputStream.read()) != -1) {
23 //out.write(i);
24 //}
25
26 //fileInputStream.close();
27 //out.close();
28
29 InputStreamReader reader=new InputStreamReader(fileInputStream,"UTF-8");
30 int i=0;
31 while((i=reader.read())!=-1){
32 out.write(i);
33
34 }
35 reader.close();
36 fileInputStream.close();
37 out.close();
38 }
39 %>
總結(jié):還是對java的流相關(guān)只是掌握不清啊,不能熟練運用
一哥們在學C#,同時學的是sqlServer2005,是啊,我接觸C#那會兒才.net1.1,現(xiàn)在都3.x了
讓我?guī)兔φ{(diào)式一下程序,而我的機器尚沒有sql05,只有sql2000,期間聽說過05和2000可以同時安裝,裝吧,要不沒法附加他那2005的數(shù)據(jù)庫,費了好大勁裝好了,開始附加數(shù)據(jù)庫,但是死活附加不上去,錯誤提示:執(zhí)行Transact_SQL語句或批處理時發(fā)生了異常。未能在sysindexes中找到數(shù)據(jù)庫ID 9 對象ID 1 對應的行,請對sysindexes運行DBCC CHECKTABLE

按照提示,執(zhí)行 DBCC CHECKTABLE 還是沒有效果
遂在google上搜,有網(wǎng)友遇到這個問題是因為同時裝了sql2000,卸載了2000重裝sql2005就成功了
暈,這下功夫耗大了
卸載吧,同學提供了一個干凈卸載的工具來卸載,早就知道卸載sql2000卸不干凈,重裝會出問題,于是采用此工具
“微軟的Windows_Installer_清理實用工具msicuu2”
可誰知道,這東西幫了倒忙,好像得先運行卸載程序,再運行這個“微軟的Windows_Installer_清理實用工具msicuu2”可以幫忙將注冊表之類的垃圾清理掉,但是我直接運行了這個“微軟的Windows_Installer_清理實用工具msicuu2”,結(jié)果sql2000還在并且可以運行,在控制面板卸載,提示 找不到D:\Program Files\Microsoft SQL Server\MSSQL\Uninst.isu
暈,這是干啥的啊
接著google
找到一網(wǎng)友的播客http://www.anywolfs.com/liuhui/article.asp?id=257,提出了解決辦法,用之,終于可以卸載了
接著卸載sql2005,哎,等等,現(xiàn)在是不是可以附加了呢,試,.....還是不行,呵呵
卸載吧
哦?從控制面板貌似sql05也卸載不了了,卸了好幾次也沒反應啊,倒是不報錯

試了好幾次,貌似選哪個都不好使,點下一步,一會兒窗口就自己消失了
啊,啊啊,暈,先睡覺,明兒再搞定05
誰位大哥遇到過,提示一下啊......
今天開發(fā)中遇到一個奇怪的hibernate錯誤
我的數(shù)據(jù)庫中一個表中有個字段名叫id,但是它并不是主鍵
用hibernate映射后為
XML語言:
1 <id name="apprId" type="java.lang.Long">
2 <column name="APPR_ID" precision="11" scale="0" />
3 <generator class="assigned" />
4 </id>
5 <property name="Id" type="java.lang.Long">
6 <column name="ID" precision="11" scale="0" />
7 </property>
而我當執(zhí)行這樣的hibernate的HQL的時候
SQL語言:
1 from RcUApprInfo as model where model.Id = ?
hibernate解析成sql語句竟然是
SQL語言:
1 select ...... from rc_u_appr_info where as model where model.APPR_ID = ?
跟蹤了好幾遍,都是這樣
在確定自己的代碼沒問題后,想到可能是hibernate理解錯了
于是將Id改成了別的名
再試,竟然沒問題了
難道hibernate將凡是叫Id的都認為成主鍵??不解 不解
早上上班來,打開電腦,看到一則最新消息,google發(fā)布自己的瀏覽器了
9月3日消息 9月3日凌晨,谷歌中國與全球同步推出其開源瀏覽器Google Chrome測試版,中文名為谷歌瀏覽器.
下載地址為:http://www.google.com/chrome
記得前幾天還看見csdn上新聞說google澄清不會出瀏覽器跟IE競爭,暈,現(xiàn)在成現(xiàn)實了,google的所有服務差不多用了個遍,這個也不例外,下了一個,驚訝下載文件竟然只有幾百K,開始安裝才知道也是采用windows live那樣的安裝方式,還要下載一通。
終于安裝完啦,打開

第一感覺很簡單,把所有空間都給了頁面顯示,就像IE按了F11一樣,因為在公司是使用代理上網(wǎng),納悶的是我也沒有配置代理居然一下就能上網(wǎng),于是打開選項查找,有個設置代理的按鈕,點擊打開的竟然是IE的選項窗口,google的瀏覽器調(diào)用IE的internate選項,這不是成了遨游?
引用:面向服務的體系結(jié)構(gòu)(service-oriented architecture,SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯(lián)系起來。接口是采用中立的方式進行定義的,它應該獨立于實現(xiàn)服務的硬件平臺、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務可以以一種統(tǒng)一和通用的方式進行交互。
今天公司組織了一個SOA培訓,請的
普元公司的工程師來的,按工程師的話說SOA是一種方法,這種方法已經(jīng)由來已久了也算,在歐美國家早就用這種方法來開發(fā)標準的軟件系統(tǒng),那是不是能成為SOA是一種方法呢,呵呵
培訓中,工程師演示了普元的產(chǎn)品,他們的一個開發(fā)工具EOS包含了AppFream,Report,RishWeb,WorkFlow,軟件開發(fā)的各個層面都覆蓋到了,俺的個娘啊,感覺就是要是這些東西用起來還要我們這些程序員干嘛,只要項目經(jīng)理就行了,項目經(jīng)理跟客戶確認好需求,然后用普元的工具一通拖拽畫出流程圖,完了,這就完工了,流程圖畫出的同時我們的應用也能運行了,看效果吧,呵呵
貌似,做測試的也可以下崗了,因為每一步都是自動生成的,并且可以監(jiān)控每一步的運行情況。
半天的培訓下來,突然有種危機感,如果總經(jīng)理真的決定在我們部門推行這個EOS系統(tǒng),那我們豈不是離下崗不遠啦?
程序員真不如民工嘍。。。
自己的一點點理解 ,功力尚淺,呵呵,歡迎拍磚
忙里偷閑
一直想寫一個blog程序
架子打起來了,用struts1.2+hibernate
如何為用戶的url做轉(zhuǎn)向,比如
http://www.aygfsteel.com/liuspring,怎樣轉(zhuǎn)向?qū)儆趌iuspring的文章、留言、評論啊等等,簡單的說就是liuspring的頁面,
這個問題可把我難住了(功力太淺),于是google上搜開源的blog系統(tǒng),看他們的源碼,首先下的
roller,費了好大勁把系統(tǒng)配起來了,運行起來那個高興,接下來暈了,新版本是
struts2,還沒研究過,看了一下好像struts2能很容易實現(xiàn)我要的,可是我用的是1.x啊,接著搜,
Pebble,
blojsom ,
DLOG4J ,
myblog,都試用了,其中
blojsom使用了一個servlet,在里面解析URI,比如請求的地址是/blog/spring/,那么就被解析成/blogView.do?go=spring,以這個地址轉(zhuǎn)向,從而被struts的控制器接收。
這里得用(并且redirectURL必須是相對路徑,用完整路徑好像還不行,在我這報404錯誤)
1
httpServletRequest.getRequestDispatcher(redirectURL.toString())
2
.forward((ServletRequest)httpServletRequest, (ServletResponse)httpServletResponse);
不能用
1
httpServletResponse.sendRedirect(redirectURL.toString());
因為這樣是使IE重定向,請求的URL也隨之改變,這個圈兒就轉(zhuǎn)不下去了。
又建立了一個過濾器,用以判斷session中的用戶是否是當前訪問的博客的管理員,比如訪問/blog/spring/,判斷session中保存的用戶是否是spring,然后往request,setAttribute中放一個標示,標示是否具有管理員權(quán)限,在jsp頁面中獲取這個參數(shù)以決定是否顯示后臺管理連接。
到這里,最基本,最撓頭的問題暫時解決了,感覺肯定有更加方便、更加精妙、更加簡單的方法,只是功力還沒涉到那么深,哪位博友看到了不勝賜教,接下來還要攻克的,如何產(chǎn)生靜態(tài)html頁面,如何rss......