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

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

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

    xyz20003

    www.mossle.com
    隨筆 - 34, 文章 - 0, 評論 - 124, 引用 - 0
    數(shù)據(jù)加載中……

    2009年6月22日

    spring security權(quán)限管理手冊升級至spring security-3.1.3

    費了半天勁,終于把原來基于spring security 2.0.5的權(quán)限管理手冊升級到3.1.3。

    除了官方已經(jīng)不再支持ntlm和portal兩個例子之外,其他的實例都已經(jīng)通過了測試。下一步計劃是對整體內(nèi)容進(jìn)行整理,再加上3.1.3提供的新功能。

     

    目錄索引鏈接如下:

     

    序言
    I. 基礎(chǔ)篇

    1. 一個簡單的HelloWorld

    1.1. 配置過濾器
    1.2. 使用命名空間
    1.3. 完善整個項目
    1.4. 運行示例
    2. 使用數(shù)據(jù)庫管理用戶權(quán)限

    2.1. 修改配置文件
    2.2. 數(shù)據(jù)庫表結(jié)構(gòu)
    3. 自定義數(shù)據(jù)庫表結(jié)構(gòu)

    3.1. 自定義表結(jié)構(gòu)
    3.2. 初始化數(shù)據(jù)
    3.3. 獲得自定義用戶權(quán)限信息

    3.3.1. 處理用戶登陸
    3.3.2. 檢驗用戶權(quán)限
    4. 自定義登陸頁面

    4.1. 實現(xiàn)自定義登陸頁面
    4.2. 修改配置文件
    4.3. 登陸頁面中的參數(shù)配置
    4.4. 測試一下
    5. 使用數(shù)據(jù)庫管理資源

    5.1. 數(shù)據(jù)庫表結(jié)構(gòu)
    5.2. 初始化數(shù)據(jù)
    5.3. 實現(xiàn)從數(shù)據(jù)庫中讀取資源信息

    5.3.1. 需要何種數(shù)據(jù)格式
    5.3.2. 替換原有功能的切入點
    6. 控制用戶信息

    6.1. MD5加密
    6.2. 鹽值加密
    6.3. 用戶信息緩存
    6.4. 獲取當(dāng)前用戶信息
    7. 自定義訪問拒絕頁面
    8. 動態(tài)管理資源結(jié)合自定義登錄頁面
    9. 中文用戶名
    10. 判斷用戶是否登錄
    II. 保護(hù)web篇

    11. 圖解過濾器

    11.1. HttpSessionContextIntegrationFilter
    11.2. LogoutFilter
    11.3. AuthenticationProcessingFilter
    11.4. DefaultLoginPageGeneratingFilter
    11.5. BasicProcessingFilter
    11.6. SecurityContextHolderAwareRequestFilter
    11.7. RememberMeProcessingFilter
    11.8. AnonymousProcessingFilter
    11.9. ExceptionTranslationFilter
    11.10. SessionFixationProtectionFilter
    11.11. FilterSecurityInterceptor
    12. 管理會話

    12.1. 添加監(jiān)聽器
    12.2. 添加過濾器
    12.3. 控制策略

    12.3.1. 后面的用戶禁止登陸
    12.3.2. 后登陸的將先登錄的踢出系統(tǒng)
    13. 單點登錄

    13.1. 配置JA-SIG
    13.2. 配置Spring Security

    13.2.1. 添加依賴
    13.2.2. 修改applicationContext.xml
    13.3. 運行配置了cas的子系統(tǒng)
    13.4. 為cas配置SSL

    13.4.1. 生成密鑰
    13.4.2. 為jetty配置SSL
    13.4.3. 為tomcat配置SSL
    14. basic認(rèn)證

    14.1. 配置basic驗證
    14.2. 編程實現(xiàn)basic客戶端
    15. 標(biāo)簽庫

    15.1. 配置taglib
    15.2. authenticaiton
    15.3. authorize
    15.4. acl/accesscontrollist
    15.5. 為不同用戶顯示各自的登陸成功頁面
    16. 自動登錄

    16.1. 默認(rèn)策略
    16.2. 持久化策略
    17. 匿名登錄

    17.1. 配置文件
    17.2. 修改默認(rèn)用戶名
    17.3. 匿名用戶的限制
    18. 防御會話偽造

    18.1. 攻擊場景
    18.2. 解決會話偽造
    19. 預(yù)先認(rèn)證

    19.1. 為jetty配置Realm
    19.2. 配置Spring Security
    20. 切換用戶

    20.1. 配置方式
    20.2. 實例演示
    21. 信道安全

    21.1. 設(shè)置信道安全
    21.2. 指定http和https的端口
    22. digest認(rèn)證

    22.1. 配置digest驗證
    22.2. 使用ajax實現(xiàn)digest認(rèn)證
    22.3. 編程實現(xiàn)digest客戶端
    23. 通過LDAP獲取用戶信息
    24. 通過OpenID進(jìn)行登錄

    24.1. 配置
    24.2. 系統(tǒng)時間問題
    24.3. openid4java的處理流程
    25. 使用X509登錄

    25.1. 生成證書
    25.2. 配置服務(wù)器使用雙向加密
    25.3. 配置X509認(rèn)證
    26. 使用NTLM登錄
    27. 使用JAAS機(jī)制
    28. 使用HttpInvoker
    29. 使用rmi
    30. 控制portal的權(quán)限
    31. 保存登錄之前的請求
    32. 記錄操作日志
    III. 內(nèi)部機(jī)制篇

    33. 保護(hù)方法調(diào)用

    33.1. 控制全局范圍的方法權(quán)限
    33.2. 控制某個bean內(nèi)的方法權(quán)限
    33.3. 使用annotation控制方法權(quán)限

    33.3.1. 使用Secured
    33.3.2. 使用jsr250
    34. 權(quán)限管理的基本概念

    34.1. 認(rèn)證與驗證
    34.2. SecurityContext安全上下文
    34.3. Authentication驗證對象
    35. Voter表決者

    35.1. Voter表決者
    35.2. RoleVoter
    35.3. AuthenticatedVoter
    35.4. AbstractAclVoter
    36. 攔截器

    36.1. 權(quán)限配置數(shù)據(jù)源
    36.2. 權(quán)限管理器
    36.3. 后置調(diào)用管理器
    36.4. 臨時分配額外權(quán)限
    37. 用戶信息

    37.1. UserDetails
    37.2. 使用角色繼承
    37.3. 為ACL添加角色繼承
    37.4. PasswordEncoder和SaltValue
    38. 集成jcaptcha
    39. 動態(tài)資源管理

    39.1. 基本知識
    39.2. 讀取資源
    39.3. URL資源擴(kuò)展點
    39.4. METHOD資源擴(kuò)展點
    40. 擴(kuò)展UserDetails

    40.1. 實現(xiàn)UserDetails接口
    40.2. 實現(xiàn)UserDetailsService接口
    40.3. 修改配置文件
    40.4. 測試運行
    41. 鎖定用戶
    42. 設(shè)置過濾器鏈
    43. 自定義過濾器
    44. 使用用戶組

    44.1. 數(shù)據(jù)庫結(jié)構(gòu)
    44.2. 修改配置文件
    45. 在JSF中使用Spring Security

    45.1. 修改過濾器支持forward
    45.2. 自定義登錄頁面
    45.3. 顯示密碼錯誤信息
    46. 自定義會話管理

    46.1. 默認(rèn)策略的缺陷
    46.2. 記錄用戶名與ip
    46.3. 改造控制類
    46.4. 修改配置文件
    47. 匹配URL地址

    47.1. AntPathRequestMatcher
    47.2. RegexRequestMatcher
    48. 配置過濾器

    48.1. 標(biāo)準(zhǔn)過濾器
    48.2. 在http中啟用標(biāo)準(zhǔn)過濾器
    48.3. 為自定義過濾器設(shè)置位置
    49. 監(jiān)控會話過期

    49.1. 實現(xiàn)原理
    49.2. 代碼實現(xiàn)
    49.3. 目前實現(xiàn)的缺陷
    50. 多個登陸頁面

    50.1. 未登錄自動跳轉(zhuǎn)到對應(yīng)的登錄頁面
    50.2. 密碼出錯時返回對應(yīng)頁面
    51. 角色繼承

    51.1. 使用RoleHierarchyVoter
    51.2. 使用數(shù)據(jù)庫實現(xiàn)RoleHierarchy
    52. 設(shè)置方法攔截器
    IV. ACL篇

    53. ACL基本操作

    53.1. 準(zhǔn)備數(shù)據(jù)庫和aclService

    53.1.1. 為acl配置cache
    53.1.2. 配置lookupStrategy
    53.1.3. 配置aclService
    53.2. 使用aclService管理acl信息
    53.3. 使用acl控制delete操作
    53.4. 控制用戶可以看到哪些信息
    54. 管理acl

    54.1. 管理多個domain類
    54.2. 動態(tài)授權(quán)與收回授權(quán)

    54.2.1. 獲得對象的acl權(quán)限
    54.2.2. 添加授權(quán)
    54.2.3. 收回授權(quán)
    55. acl自動提醒

    55.1. 自動創(chuàng)建acl
    55.2. 自動刪除acl
    55.3. 根據(jù)id刪除acl
    V. 最佳實踐篇

    56. 最簡控制臺

    56.1. 平臺搭建
    56.2. 用戶登錄
    56.3. 用戶信息列表
    56.4. 添加用戶
    56.5. 修改用戶信息
    56.6. 修改自己的密碼
    57. 用戶組控制臺

    57.1. 添加對用戶組的支持
    57.2. 瀏覽用戶組
    57.3. 創(chuàng)建用戶組
    57.4. 修改用戶組
    A. 修改日志
    B. 常見問題解答
    C. Spring Security-3.0.0.M1

    C.1. Hello World
    C.2. Spring-EL
    C.3. RoleHierarchy
    C.4. Success Handler
    C.5. REST下的權(quán)限控制
    C.6. 管理會話同步
    D. 命名空間

    D.1. http
    D.2. authentication-provider
    D.3. ldap-server
    D.4. global-method-security
    E. 數(shù)據(jù)庫表結(jié)構(gòu)

    E.1. User
    E.2. Group
    E.3. RememberMe
    E.4. ACL
    F. 異常
    G. 事件
    H. RBAC模型(轉(zhuǎn)載)

    H.1. RBAC模型介紹
    H.2. 有關(guān)概念

    H.2.1. 什么是角色
    H.2.2. 角色與用戶組
    H.3. 基本模型RBAC0

    H.3.1. RBAC0 模型的形式定義如下
    H.4. 角色分級模型RBAC1

    H.4.1. 定義2:RBAC1 由以下內(nèi)容確定
    H.5. 限制模型RBAC2

    H.5.1. 定義3:
    H.6. 統(tǒng)一模型RBAC3
    H.7. 定義4
    H.8. 在ARBAC97中,包括三種組件
    H.9. RBAC模型的特點
    H.10. 基于party的模型
    H.11. 有關(guān)operation
    I. 認(rèn)證流程

    posted @ 2012-12-08 01:04 臨遠(yuǎn) 閱讀(6123) | 評論 (7)編輯 收藏

    輕量級工作流引擎jBPM 4.4正式發(fā)布

    jBPM-4.4于2010年7月19日正式發(fā)布。

    jBPM是jBoss旗下的一款開源工作流引擎,它的特色是提供了eclipse插件,開發(fā)人員可以通過插件直接繪畫出業(yè)務(wù)流程圖。



    jBPM 4是jBPM的最新一代產(chǎn)品,它提供的PVM(流程虛擬機(jī))可以支持多種流程語言,默認(rèn)支持的是jBPM自己的jPDL流程語言,從jBPM-4.3開 始,又提供了對BPMN-2.0的支持(不過還不完全)。jBPM的發(fā)布包中提供了一鍵式安裝的ant腳本,可以將jBPM流程引擎以及配套的管理控制 臺,流程設(shè)計器一次性安裝到本機(jī)上運行使用。

    安裝配置的詳細(xì)步驟可以參考官方的用戶手冊:http://www.family168.com/tutorial/jbpm4.0/html/installation.html

    最新發(fā)布的jBPM-4.4中解決了108個issue,不過它距離上次發(fā)布也半年有余了,jBPM-4.3發(fā)布于2009年12月底。

    jBPM-4.4是一個bug fix版本,并未對數(shù)據(jù)庫有任何修改,使用之前版本的項目基本可以平滑升級。在進(jìn)行升級時需要注意:

    1.Activity和Transition兩個接口從org.jbpm.pvm.internal.model包下移動到了 org.jbpm.api.model包下。
    2.所有與el表達(dá)式相關(guān)的部分都替換為新加的org.jbpm.pvm.internal.el.Expression。

    添加的幾個重要功能:
    1.for each支持動態(tài)的并發(fā)分支流程,會簽和并發(fā)子流程都可以用它來實現(xiàn)了。
    2.assign活動,可以對變量的值進(jìn)行復(fù)制。
    3.變量聲明,可以在xml里聲明變量。
    4.修正了console在tomcat下找不到dataSource的問題(包括報表)。

    詳細(xì)的發(fā)布信息,請參考官方的JIRA:https://jira.jboss.org/secure/ReleaseNote.jspa?projectId=10052&version=12314183

    用Alejandro的話說,This makes 4.4 the most cat-friendly jBPM yet!下個版本會對數(shù)據(jù)庫結(jié)構(gòu)進(jìn)行修改了,以便完善流程歷史庫的功能。

    相關(guān)的發(fā)布下載與文檔資源如下:
    Subversion tag: http://anonsvn.jboss.org/repos/jbpm/jbpm4/tags/jbpm-4.4/
    Maven artifact: http://repository.jboss.org/nexus/content/repositories/releases/org/jbpm/jbpm4/jbpm/4.4/
    SourceForge file: https://downloads.sourceforge.net/project/jbpm/jBPM%204/jbpm-4.4/jbpm-4.4.zip

    User Guide: http://docs.jboss.com/jbpm/v4/userguide/html_single/
    Developer Guide: http://docs.jboss.com/jbpm/v4/devguide/html_single/
    Maven Artifact: http://repository.jboss.org/nexus/content/repositories/releases/org/jbpm/jbpm4/jbpm/4.4/

    另附我們翻譯的用戶手冊和開發(fā)指南:
    用戶手冊:http://www.family168.com/tutorial/jbpm4.0/html/index.html
    開發(fā)指南:http://www.family168.com/tutorial/jbpm4devguide/html/index.html

    posted @ 2010-07-20 16:20 臨遠(yuǎn) 閱讀(2384) | 評論 (3)編輯 收藏

    拖延一個多月后,jBPM-4.4發(fā)布CR1候選版

    Alejandro太謹(jǐn)慎了,發(fā)布jBPM-4.4之前還搞了一個CR1候選版,被jBPM-4.3里那些bug困擾的同志可以直接下載這個版本使用了, 這個候選版和jBPM-4.4最終發(fā)布版基本不會有太大區(qū)別,下載地址如下:

    http://sourceforge.net/projects/jbpm/files/jBPM%204/jbpm-4.4/jbpm-4.4.CR1.zip/download

    在之前的帖子jBPM 4.4發(fā)布日期暫定于2010年6月4日里提到的幾個新特性都有了結(jié)果:

    1.支持foreach,這個是真正的動態(tài)分支功能,想玩會簽嗎?想玩動態(tài)分支嗎?想實現(xiàn)動態(tài)子流程嗎?用foreach就對了。

    2.支持在jpdl的xml中聲明變量,可以聲明實例級全局變量,也可以聲明活動級的局部變量。

    現(xiàn)在這兩個重量級的功能都可以使用了。

    對于BPMN2的支持也加強了一部分,包括m選n的inclusive gate way和可以定時啟動的TimerStartEventActivity。不過BPMN2新增的功能都是joraz走之前實現(xiàn)的,以后jBPM 4的BPMN2能走多遠(yuǎn)還是未知數(shù)。

    jBPM 4.4目前解決了100多個issue,詳細(xì)的issue列表可以參考這里:

    https://jira.jboss.org/secure/ReleaseNote.jspa?projectId=10052&version=12314183

    最后雙手合十,誠信禱告jBPM-4.4早日發(fā)布。這樣我們才能集中精力開始下一階段的開發(fā)。

    posted @ 2010-07-15 22:18 臨遠(yuǎn) 閱讀(1460) | 評論 (2)編輯 收藏

    jBPM 4.4發(fā)布日期暫定于2010年6月4日

    jbpm官方終于傳來好消息,jBPM 4.4可能在下月初發(fā)布。以下是當(dāng)前project leader的聲明:

    We are down to 9 unresolved issues left before releasing 4.4. Given the current progress, it should be possible to release jBPM 4.4 on June 4th; the date is of course tentative and subject to change. Right now the only blocker issue is JBPM-2872: fix hudson db job. All others are deferrable if not completed on time.

    If you feel like there is an issue that should not be left out, the time to bring it up is now. Visit the developers forum if you want to do so.


    聲明地址:http://community.jboss.org/thread/152282?tstart=0

    簡單來說,就是還剩下9個未處理事務(wù),按當(dāng)前進(jìn)度應(yīng)該可以在6月4日發(fā)布jBPM 4.4,其中最重要的問題是修正hudson下的db任務(wù)。最后向社區(qū)征集意見,如果誰感覺有啥issue應(yīng)該在jbpm 4.4里解決的話,就趕快提出來撒。

    jBPM 4.4的詳細(xì)發(fā)布信息可以參考這里https://jira.jboss.org/secure/ReleaseNote.jspa?projectId=10052&version=12314183, 一共是75個issue,目前已解決66個。這個版本主要是進(jìn)行bug fix,也提供了幾個重量級的新功能。

    1.解決嵌套fork/join每次嵌套會出現(xiàn)多余execution的問題。
    2.任務(wù)超時或者手工執(zhí)行signal后,自動刪除過期task。
    3.讓sub-process的id和key都支持表達(dá)式。
    4.支持在xml中聲明變量。(還在討論中)
    5.在fork中使用assignmentHandler會拋出NullPointerException。

    另外還有for-each動態(tài)fork分支這個功能,還在研究是不是要放在jbpm-4.4里,感興趣的同志可以來官方論壇提出意見。
    http://community.jboss.org/thread/152243?tstart=0

    posted @ 2010-05-24 09:57 臨遠(yuǎn) 閱讀(1757) | 評論 (0)編輯 收藏

    jBPM創(chuàng)始人發(fā)布BPMN原生引擎Activiti-5.0-alpha1

    Tom Baeyens也就是jBPM的原作者,離開了Red Hat之后,另起爐灶搞了一個Activiti的項目,這個項目是基于BPMN的原生流程引擎。

    那么這個activiti到底有啥好處呢?讓咱們一一道來:

    它基于的Apache 2.0開源協(xié)議,比jBPM的LGPL更加寬松。

    它是基于BPMN2.0標(biāo)準(zhǔn)規(guī)范的,最大的好處就是可以用oryz這個web流程設(shè)計器直接在web瀏覽器上設(shè)計流程了。(注:別高興太早,oryz是用svg寫的,IE一律不支持。)

    它是基于ibatis的,數(shù)據(jù)庫層不再對hibernate有依賴。(注:alpha1只支持h2database,后面的版本會對mysql, oracle,postegl進(jìn)行支持)

    選用BPMN作為標(biāo)準(zhǔn)流程語言,也意味著原來的jBPM里的jPDL流程語言將不會被繼續(xù)支持,也不知道PVM流程虛擬機(jī)是否會繼續(xù)下去,如果Tom不想 玩虛擬機(jī)了,activiti很可能就是一個只支持一種流程語言的引擎了。這點確實讓人感到有點兒遺憾。

    從www.activiti.org這個網(wǎng)站上可以下載到alpha1的發(fā)布包,其中包含了源代碼,草草看了一下,核心庫只有200多K,其中把原來自行實現(xiàn)的IoC自動注入的代碼都刪掉了。以后的IoC工作可能統(tǒng)一交給spring去管理,這對使用spring的同志來說,無疑是一個天大的好消息。

    api部分對外部接口進(jìn)行了簡化,ExternalActivityBehaviour不見了,換成了EventActivityBehaviour,這一點讓我感覺很舒服,畢竟signal其實也只是事件的一種特例,換成eventActivityBehaviour之后,也就意味著我們可以讓活動節(jié)點支持更多事件處理操作了。

    持久化部分換成了ibatis,這部分暫時還只支持h2database,腳本什么的也只有h2database的,雖然因為alpha1版本,功能不多情有可原,但是我還是擔(dān)心使用ibatis會否大幅度增加數(shù)據(jù)庫存儲部分的維護(hù)量。希望后續(xù)發(fā)展不要因為這部分的問題遇到障礙。

    表結(jié)構(gòu)似乎和原來的jbpm4差不多,有些表名發(fā)生了變化。表的數(shù)目又少了很多,但是我情愿認(rèn)為這不是為了優(yōu)化,而是因為這個版本不成熟,因為看不到log和history相關(guān)的表,所以,現(xiàn)在這個版本應(yīng)該是沒有歷史留痕功能的。也沒有看到變量表,也許都是用二進(jìn)制的方式來保存的吧?

    對BPMN2支持的部分,目前支持StartEvent, EndEvent, Task和UserTask,其他的都不支持,所以還是需要時間完善的。

    實際上Tom和Joram的編碼能力還是相當(dāng)驚人的,從他們倆離開Red Hat到現(xiàn)在才不過兩個月,就立刻搞出這么一個東西,而且網(wǎng)站也搞得有模有樣的,真心希望他們能延續(xù)RoadMap,把這個項目完善起來。

    項目首頁:http://www.activiti.org/

    posted @ 2010-05-20 09:25 臨遠(yuǎn) 閱讀(2171) | 評論 (1)編輯 收藏

    請把acegi替換成Spring Security(內(nèi)附視頻)

    在對web項目進(jìn)行權(quán)限管理時,采用的方法無非是寫一大堆JSP或者干脆一個Filter搞定。寫完簡單的權(quán)限功能后,又開始考慮如何自動記憶上次用戶信 息,限制每臺機(jī)器只能有一個用戶登錄,把用戶密碼進(jìn)行加密。接著更上一層樓,嘗試實現(xiàn)單點登錄,使用HTTPS保護(hù)傳輸數(shù)據(jù),防御會話偽造攻擊等等。

    于是好幾年前出現(xiàn)了名叫acegi的東西,它建立在spring的基礎(chǔ)上,提供了可以豐盛的權(quán)限功能集合,同時也以極為變態(tài)的復(fù)雜配置給了我們這 些初試權(quán)限的人悶頭一棍。甚至網(wǎng)上已經(jīng)有人流傳“every time you use acegi, a fairy die”——每當(dāng)有人使用acegi時,就會有一個精靈死去。

    正因為如此,acegi在加入spring陣營時,不但改頭換面改名成為Spring Security,而且在配置方面進(jìn)行了極大的簡化,形象的來說就是:“現(xiàn)在只需要20行的配置文件就可以完成之前幾百行才能實現(xiàn)的功能”。

    遺憾的是,現(xiàn)在依然可以看到還有人在使用acegi,甚至還有人在學(xué)習(xí)acegi,這種情況無疑讓我們感到痛心疾首。

    為了世界上不會再有精靈無謂犧牲,也為了大家的身心健康,我在此大聲疾呼:“請把acegi替換成Spring Security。”尤其對那些希望學(xué)習(xí)acegi的同志,請直接學(xué)習(xí)Spring Security。

    下面是《請把acegi替換成Spring Security》的附帶視頻,希望大家了解Spring Security的簡潔。
    http://code.google.com/p/family168/downloads/detail?name=springsecurity.zip

    posted @ 2010-03-22 09:59 臨遠(yuǎn) 閱讀(2877) | 評論 (4)編輯 收藏

    跟我學(xué)工作流——jBPM4視頻教程(免費)

    新的一年,為了讓工作流方面的初學(xué)者更快上手開發(fā),我們錄制了jBPM 4視頻教程,這套教程基于最新發(fā)布的jBPM 4.3,覆蓋了開發(fā)環(huán)境的搭建,jBPM 4與WEB工程的集成,請假流程的完整實例,jBPM 4的組織機(jī)構(gòu),事件監(jiān)聽,以及流程圖的跟蹤等功能。

    我們的網(wǎng)站提供了相關(guān)視頻和實例的免費下載,對工作流以及jBPM 4有興趣的朋友可以關(guān)注一下,也希望更多朋友在工作流方面給我們提出建議。jBPM 4視頻教程首頁:http://www.family168.com/jbpm4/video.html

    《jBPM 4視頻教程》:基于jBPM 4.3,發(fā)布日期2010-3-5。
    NO. 分級 標(biāo)題  
    01 《配置開發(fā)環(huán)境》:下載jBPM 4和eclipse,安裝GPD流程設(shè)計器,設(shè)計簡單流程。 下載   提意見
    02 《管理流程定義》:將流程定義發(fā)布到流程引擎中,實現(xiàn)查看和刪除流程定義的功能。 下載   提意見
    03 《管理流程實例》:發(fā)起新流程,使暫停的流程繼續(xù)運行,實現(xiàn)終止和刪除流程實例。 下載   提意見
    04 《設(shè)計請假流程》:以請假審批流程為例,以web的方式發(fā)布新流程定義。 下載   提意見
    05 《發(fā)起新流程》:在流程定義中設(shè)置任務(wù)分配,提供接收和完成任務(wù)的功能。 下載   提意見
    06 《流程駁回》:實現(xiàn)流程駁回和重新提交申請的功能。 下載   提意見
    07 《組織機(jī)構(gòu)》:介紹jBPM 4中默認(rèn)提供的組織機(jī)構(gòu)。 下載   提意見
    08 《監(jiān)聽事件》:為流程定義設(shè)置事件,監(jiān)聽流程執(zhí)行時觸發(fā)的事件。 下載   提意見
    09 《跟蹤流程圖》:顯示流程圖,跟蹤當(dāng)前路程實例的狀態(tài)。 下載   提意見
    www.family168.com - Lingo


    posted @ 2010-03-06 10:02 臨遠(yuǎn) 閱讀(5766) | 評論 (11)編輯 收藏

    jBPM-4.x常見問題解決方案FAQ

         摘要: 這段時間整理的jBPM-4.x常見問題以及解決方案,希望幫助對jBPM-4.x感興趣的同學(xué)少走彎路,如果有沒有覆蓋到的問題,請及時和我們聯(lián)系,我們會盡快更新這個FAQ,先說一句多謝了。:)  閱讀全文

    posted @ 2010-01-22 09:19 臨遠(yuǎn) 閱讀(2418) | 評論 (3)編輯 收藏

    Spring Security-3.0.1中文官方文檔(翻譯版)

         摘要: 這次發(fā)布的Spring Security-3.0.1是一個bug fix版,主要是對3.0中存在的一些問題進(jìn)行修正。文檔中沒有添加新功能的介紹,但是將之前拼寫錯誤的一些類名進(jìn)行了修正,建議開發(fā)者以這一版本的文檔為參考。

    另:Spring Security從2010-01-01以后,版本控制從SVN換成了GIT,我們在翻譯文檔的時候,主要是根據(jù)SVN的變化來進(jìn)行文檔內(nèi)容的比對,這次換成GIT后,感覺缺少了之前那種文本比對工具,如果有對GIT熟悉的朋友,還請推薦一下文本比對的工具,謝謝。  閱讀全文

    posted @ 2010-01-19 09:37 臨遠(yuǎn) 閱讀(5387) | 評論 (0)編輯 收藏

    輕量級工作流jBPM-4.3官方“開發(fā)指南”中文版



    jbpm4devguide

    jBPM-4.3開發(fā)手冊

    1.0

    2009-05-16 19:29:47


    序言
    1. 簡介
    1.1. 目標(biāo)讀者
    1.2. 概述
    1.3. 源代碼和WIKI
    1.4. Maven倉庫
    1.5. 依賴庫
    2. 孵化器
    2.1. timer定時器
    2.1.1. 持續(xù)時間表達(dá)式
    2.1.2. 工作日歷
    2.1.3. 定時器流向
    2.1.4. 定時器事件
    2.1.5. 定時器工作時間
    2.1.6. 定時器重復(fù)
    2.2. group活動
    2.2.1. 簡單group
    2.2.2. group定時器
    2.2.3. group多入口
    2.2.4. group同步
    2.2.5. group秘密
    2.3. 規(guī)則發(fā)布器
    2.4. java 活動
    2.5. rules-decision 活動
    2.6. rules 活動
    2.7. jms 活動
    2.7.1. 為簡化測試模擬JMS提供器
    2.7.2. 文本消息
    2.7.3. 對象消息
    2.7.4. Map消息
    2.8. 歷史會話鏈
    2.9. 創(chuàng)建認(rèn)證組
    2.10. 任務(wù)表單
    2.10.1. 使用方法
    2.10.2. 表單格式
    2.11. 實例遷移
    2.11.1. 簡單遷移
    2.11.2. 結(jié)束運行中的實例
    2.11.3. 版本范圍
    2.11.4. 活動映射
    2.11.5. 遷移處理器
    2.12. 用戶對象緩存
    2.13. 事務(wù)
    2.13.1. 獨立事務(wù)
    2.13.2. JTA事務(wù)
    2.13.3. 用戶事務(wù)
    3. BPMN 2.0
    3.1. BPMN 2.0是什么呢?
    3.2. 歷史和目標(biāo)
    3.3. JPDL vs BPMN 2.0
    3.4. Bpmn 2.0 執(zhí)行
    3.5. 配置
    3.6. 實例
    3.7. 流程根元素
    3.8. 基本結(jié)構(gòu)
    3.8.1. 事件
    3.8.2. 事件:空啟動事件
    3.8.3. 事件:空結(jié)束事件
    3.8.4. 事件:終止結(jié)束事件
    3.8.5. 順序流
    3.8.6. 網(wǎng)關(guān)
    3.8.7. 網(wǎng)關(guān):唯一網(wǎng)關(guān)
    3.8.8. 網(wǎng)關(guān):并行網(wǎng)關(guān)
    3.8.9. 任務(wù)
    3.8.10. 任務(wù):人工任務(wù)
    3.8.11. 任務(wù):Java服務(wù)任務(wù)
    3.8.12. 任務(wù):腳本任務(wù)
    3.8.13. 任務(wù):手工任務(wù)
    3.8.14. 任務(wù):java接收任務(wù)
    3.9. 完全的實例(包括控制臺任務(wù)表單)
    4. 從jBPM3轉(zhuǎn)換到j(luò)BPM4
    4.1. jBPM 4的目標(biāo)
    4.2. 知識范圍
    4.3. 流程轉(zhuǎn)換工具
    4.3.1. 概述
    4.3.2. 參數(shù)
    4.3.3. 使用示例
    4.3.4. 高級應(yīng)用
    4.4. 解釋和修改
    5. 流程虛擬機(jī)
    6. 架構(gòu)
    6.1. APIs
    6.2. 活動API
    6.3. 事件監(jiān)聽API
    6.4. 客戶端API
    6.5. 環(huán)境
    6.6. 命令
    6.7. 服務(wù)
    7. 實現(xiàn)基本活動
    7.1. ActivityBehaviour
    7.2. ActivityBehaviour實例
    7.3. ExternalActivityBehaviour
    7.4. ExternalActivity實例
    7.5. 基本流程執(zhí)行
    7.6. 事件
    7.7. 事件傳播
    8. 流程剖析
    9. 高級圖形執(zhí)行
    9.1. 循環(huán)
    9.2. 默認(rèn)執(zhí)行行為
    9.3. 功能活動
    9.4. 執(zhí)行和線程
    9.5. 流程同步
    9.6. 異常處理器
    9.7. 流程修改
    9.8. 鎖定和流程狀態(tài)
    10. 配置
    10.1. 基本配置
    10.2. 自定義工作日歷
    10.3. 自定義身份認(rèn)證組件
    11. 持久化
    12. 計劃執(zhí)行器
    12.1. 概述
    12.2. 配置
    13. 高級郵件支持
    13.1. 生產(chǎn)者
    13.1.1. 默認(rèn)生產(chǎn)者
    13.2. 模板
    13.3. 服務(wù)器
    13.3.1. 多服務(wù)器
    13.4. 擴(kuò)展點
    13.4.1. 自定義生產(chǎn)者
    13.4.1.1. 例子:自定義附件
    14. 軟件日志
    14.1. 配置
    14.2. 目錄
    14.3. JDK日志
    14.4. 調(diào)試持久化
    15. 歷史
    16. JBoss集成
    16.1. 打包流程歸檔
    16.2. 把流程歸檔發(fā)布成一個jBoss實例
    16.3. 流程發(fā)布和版本管理
    16.4. 流程引擎和J2EE/JEE編程模型
    17. Spring集成
    17.1. 概述
    17.2. 配置
    17.3. 使用
    17.4. 測試
    18. Signavio web建模器
    18.1. 簡介
    18.2. 安裝
    18.3. 配置
    A. 修改日志


    posted @ 2009-12-30 11:19 臨遠(yuǎn) 閱讀(4352) | 評論 (2)編輯 收藏

    輕量級工作流jBPM-4.3官方“用戶手冊”中文版



    jBPM4.3用戶指南

    翻譯官方文檔

    JBoss jBPM Teams

    4.3

    family168

    2009年11月1日



    1. 導(dǎo)言
    1.1. 許可證與最終用戶許可協(xié)議
    1.2. 下載
    1.3. 源碼
    1.4. 什么是jBPM
    1.5. 文檔內(nèi)容
    1.6. 從jBPM 3升級到j(luò)BPM 4
    1.7. 報告問題
    2. 安裝配置
    2.1. 發(fā)布
    2.2. 必須安裝的軟件
    2.3. 快速上手
    2.4. 安裝腳本
    2.5. 依賴庫和配置文件
    2.6. JBoss
    2.7. Tomcat
    2.8. Signavio基于web的流程編輯器
    2.9. 用戶web應(yīng)用
    2.10. 數(shù)據(jù)庫
    2.10.1. 創(chuàng)建或刪除表結(jié)構(gòu)
    2.10.2. 更新已存在的數(shù)據(jù)庫
    2.11. 流程設(shè)計器(GPD)
    2.11.1. 獲得eclipse
    2.11.2. 在eclipse中安裝GPD插件
    2.11.3. 配置jBPM運行時
    2.11.4. 定義jBPM用戶庫
    2.11.5. 在目錄中添加jPDL4模式
    2.11.6. 導(dǎo)入示例
    2.11.7. 使用ant添加部分文件
    3. 流程設(shè)計器(GPD)
    3.1. 創(chuàng)建一個新的流程文件
    3.2. 編輯流程文件的源碼
    4. 部署業(yè)務(wù)歸檔
    4.1. 部署流程文件和流程資源
    4.2. 部署java類
    5. 服務(wù)
    5.1. 流程定義,流程實例和執(zhí)行
    5.2. ProcessEngine流程引擎
    5.3. Deploying a process部署流程
    5.4. 刪除流程定義
    5.5. 啟動一個新的流程實例
    5.5.1. 最新的流程實例
    5.5.2. 指定流程版本
    5.5.3. 使用key
    5.5.4. 使用變量
    5.6. 執(zhí)行等待的流向
    5.7. TaskService任務(wù)服務(wù)
    5.8. HistoryService歷史服務(wù)
    5.9. ManagementService管理服務(wù)
    5.10. 查詢 API
    6. jPDL
    6.1. process流程處理
    6.2. 控制流程Activities活動
    6.2.1. start啟動
    6.2.2. State狀態(tài)節(jié)點
    6.2.2.1. 序列狀態(tài)節(jié)點
    6.2.2.2. 可選擇的狀態(tài)節(jié)點
    6.2.3. decision決定節(jié)點
    6.2.3.1. decision決定條件
    6.2.3.2. decision expression唯一性表達(dá)式
    6.2.3.3. Decision handler決定處理器
    6.2.4. concurrency并發(fā)
    6.2.5. end結(jié)束
    6.2.5.1. end process instance結(jié)束流程處理實例
    6.2.5.2. end execution結(jié)束流向
    6.2.5.3. end multiple多個結(jié)束
    6.2.5.4. end State結(jié)束狀態(tài)
    6.2.6. task
    6.2.6.1. 任務(wù)分配者
    6.2.6.2. task候選人
    6.2.6.3. 任務(wù)分配處理器
    6.2.6.4. 任務(wù)泳道
    6.2.6.5. 任務(wù)變量
    6.2.6.6. 在任務(wù)中支持e-mail
    6.2.7. sub-process子流程
    6.2.7.1. sub-process變量
    6.2.7.2. sub-process外出值
    6.2.7.3. sub-process外向活動
    6.2.8. custom
    6.3. 原子活動
    6.3.1. java
    6.3.2. script腳本
    6.3.2.1. script expression腳本表達(dá)式
    6.3.2.2. script 文本
    6.3.3. hql
    6.3.4. sql
    6.3.5. mail
    6.4. Common activity contents通用活動內(nèi)容
    6.5. Events事件
    6.5.1. 事件監(jiān)聽器示例
    6.5.2. 事件傳播
    6.6. 異步調(diào)用
    6.6.1. 異步活動
    6.6.2. 異步分支
    6.7. 用戶代碼
    6.7.1. 用戶代碼配置
    6.7.2. 用戶代碼類加載器
    7. Variables變量
    7.1. 變量作用域
    7.2. 變量類型
    7.3. 更新持久化流程變量
    8. Scripting腳本
    9. Configuration配置
    9.1. 工作日歷
    9.2. Email
    A. 修改日志


    posted @ 2009-12-30 11:18 臨遠(yuǎn) 閱讀(2705) | 評論 (1)編輯 收藏

    敬獻(xiàn)Spring Security-3.x版官方文檔中文版

         摘要: Spring Security-3.x新近發(fā)布,整體的項目結(jié)構(gòu)和包名都出現(xiàn)了天翻地覆的變化,與此同時,Spring Security-3.x中也提供了session-management和SpEL的多種強大功能,family168第一時間提供官方文檔的翻譯版 本,希望同大家一起領(lǐng)略Spring Security-3.x的最新時髦風(fēng)尚。 介于Spring Security官方文檔本身傾向于技術(shù)...  閱讀全文

    posted @ 2009-12-29 11:39 臨遠(yuǎn) 閱讀(5767) | 評論 (9)編輯 收藏

    讓軟件開發(fā)慢下來

    你在做軟件開發(fā)嗎?

    在啟動項目前是否做好技術(shù)選型了呢?
    在設(shè)計前是否已經(jīng)理順大體需求了呢?
    在編碼前是否已經(jīng)反復(fù)思索過對應(yīng)的設(shè)計呢?
    在測試前是否已經(jīng)準(zhǔn)備好測試用例呢?
    在部署交付前是否已經(jīng)計劃好具體的功能列表呢?

    考慮過項目的性質(zhì)嗎?互聯(lián)網(wǎng)應(yīng)用,還是內(nèi)部網(wǎng)應(yīng)用。
    弄清了項目規(guī)模大小嗎?3人月可以搞定的小項目,還是需要幾十人月的長期奮戰(zhàn)?
    確定團(tuán)隊的實力了嗎?是全員光頭新人,還是在某牛帶領(lǐng)下的小馬集團(tuán),還是經(jīng)驗豐富的水路兩棲沖鋒隊?
    如何與客戶協(xié)同合作?瀑布式一次理清所有需求,還是需要分階段迭代,或者直接進(jìn)駐客戶公司面對面開發(fā)?

    是否要使用框架呢?還是選擇最基本的jsp, jdbc應(yīng)用。
    編碼與項目如何管理,使用版本控制工具?還是用U盤copy過來,copy過去?
    如果選擇版本控制工具,究竟哪一款才適合自己的情況?
    系統(tǒng)如何劃分層次?五層?三層?其他方式?
    模塊如何劃分,按功能?按業(yè)務(wù)?混合分塊?
    開發(fā)如何分工,橫向分工,各層之間接口對接?豎向劃分每個人負(fù)責(zé)從前到后一整塊。

    如何測試?手工點點,還是使用自動化測試工具。
    測試用例如何確定,如何提高測試的有效性。
    測試的結(jié)果如何反饋給開發(fā)過程,需要使用excel還是issue跟蹤系統(tǒng)?
    測試過程中可以暴露并發(fā),事務(wù)等隱性問題嗎?
    性能測試如何進(jìn)行,壓力指數(shù)應(yīng)該保證到多少?

    后期維護(hù)的方式的選擇。
    如何維護(hù)數(shù)據(jù)庫表結(jié)構(gòu)?每次exp整個數(shù)據(jù)庫,到客戶公司imp,還是找一個員工手工比對所有表結(jié)構(gòu),還是直接實現(xiàn)數(shù)據(jù)庫版本化管理?
    如何為系統(tǒng)打補???視圖層的補丁,服務(wù)層的補丁,依賴庫的補丁。如何管理,如何實施,如何測試?
    系統(tǒng)是否擁有動態(tài)部署的能力?在系統(tǒng)升級的過程中是否可以減小出錯的可能?

    。。。。。。

    還有很多,還有很多。有些問題可以通過技術(shù)解決,有些問題需要根據(jù)具體條件進(jìn)行分析,有些需要盡力規(guī)避,有些需要硬著頭皮強頂硬撐。

    在考慮清楚這些問題可能帶來的各種問題之前,讓軟件開發(fā)慢下來,至少慢一點點也是好的,進(jìn)行下一步驟之前先了解如果出現(xiàn)了問題該如何應(yīng)對,如何解決。

    posted @ 2009-12-25 10:42 臨遠(yuǎn) 閱讀(1821) | 評論 (4)編輯 收藏

    [譯]Spring 3.0發(fā)布:基于Java 5開發(fā),添加了新的表達(dá)式語言和對REST的支持

    原文地址:http://www.infoq.com/news/2009/12/spring30

    同志們,Spring框架的3.0版本終于在今天發(fā)布啦。InfoQ特別對話了Spring框架項目的技術(shù)頭領(lǐng)Juergen Hoeller,從他口中了解到不少關(guān)于這次發(fā)布對Spring集團(tuán)帶來的改變。

    Hoeller詳細(xì)羅列了Spring 3.0中的各項新特性:

    * 基于Java 5 - 目前核心API已經(jīng)使用了Java 5的特性,諸如泛型、注解等等,因此現(xiàn)在Spring 3.0必須使用Java 5和以后版本才能跑起來。

    * Spring表達(dá)式語言(SpEL) - 這個和JSF中的統(tǒng)一EL類似,我們可以很容易在Spring 3.0中使用復(fù)雜表達(dá)式了。

    * 提升對基于注解組件的支持 - Spring JavaConfig其中的一些功能已經(jīng)被遷移到核心框架中,比如@Configuration,@Bean和@DependsOn。

    * 可以使用約束注解聲明對模型的校驗方式 - 提供了對JSR 303的支持,我們可以使用注解為bean添加諸如@NotNull和@Max(23)的校驗規(guī)則。

    * Spring MVC中提供對REST的綜合支持 - 添加了在服務(wù)器端和客戶端使用RESTful應(yīng)用的功能。

    * 提供對Java EE 6的支持 - 支持了許多Java EE 6中的功能,比如JPA 2.0和JSF 2.0,讓它們可以運行在非EE 6的容器下,比如Tomcat和J2EE 1.4應(yīng)用服務(wù)器。

    * 提供對JSR 330的支持 - 現(xiàn)在Spring已經(jīng)支持了JSR 330中介紹的javax.inject注解。

    * 基于注解進(jìn)行格式化 - bean的屬性可以使用注解來自動進(jìn)行格式化和類型轉(zhuǎn)換,比如@DateFimeFormat(iso=ISO.DATE)和@NumberFormat(style=Style.CURRENCY)。

    Spring還提供了完整的修改日志參考文檔。(譯者注:文檔方面Spring做的確實太好了,也再次感謝滿江紅團(tuán)隊的辛勤勞動。)

    Hoeller在提到SpEL時,多說了那么幾句:

    SpEL是一種功能強大的表達(dá)式語言,語法基于統(tǒng)一表達(dá)式(Unified EL),實際上它與JSF中使用的表達(dá)式非常類似。我們特別為SpEL開發(fā)了自己的表達(dá)式解析器以提供特定的功能,無論是在使用bean定義配置還是使用 Spring Integration這類項目時都可以帶來不少好處。其實在Spring核心中已經(jīng)有很多地方都應(yīng)用了像"#{...}"這樣的表達(dá)式,可以在XML的 bean定義中看到許多這樣的例子。還有@Value這個注解,它可以通過名稱動態(tài)引用其他的bean,并且可以非常簡單就獲取這些bean的屬性。

    舉個例子,下面這段XML配置(來自3.0參考文檔)使用了SpEL來配置bean的屬性,屬性值來自于JVM系統(tǒng)參數(shù):

    <bean class="mycompany.RewardsTestDatabase">
        
    <property name="databaseName"
            value
    ="#{systemProperties.databaseName}"/>

        
    <property name="keyGenerator"
            value
    ="#{strategyBean.databaseKeyGenerator}"/>
    </bean>

    Hoeller也著重介紹了Spring 3.0中對REST的支持:

    我們面對的挑戰(zhàn)是在Spring MVC的世界中加入對REST的支持,把這種強大的新功能交到MVC用戶的手中。我們決定從底層為MVC支持路徑變量的提取 - 這部分內(nèi)容協(xié)商的方向是正確的 - 考慮到Spring MVC的實力,并把它們拉升到另一種層次,同時又不會破壞基本架構(gòu)。工作進(jìn)展的非常順利,可以在已有的Spring MVC應(yīng)用中使用REST的特性。

    我們的重點聚焦在web用戶接口在REST下的轉(zhuǎn)換方式上。下一步呢,在Spring MVC的基礎(chǔ)上實現(xiàn)基于REST的網(wǎng)絡(luò)服務(wù)(Web Service)也是很有意思的一件事情,特別是OXM(Object/XML Mapping)現(xiàn)在已經(jīng)成為了Spring核心模塊之一,OXM可以和Spring MVC聯(lián)合應(yīng)用。最后,我們提供了RestTemplate類,這是一個Spring式的模板類,它作為客戶端提供了與面向REST終端服務(wù)器進(jìn)行交互的 更易用的編程方式。

    對于那些工作在Spring 2.5之上,并且已經(jīng)在代碼中使用了基于注解樣式的同志們,這次升級的路線將是非常平滑的 - 新功能可以在升級到3.0之后任意選擇使用,不需要對基礎(chǔ)架構(gòu)進(jìn)行任何修改。對于那些還在使用老版本,比如繼承了表單控制器,這些功能在3.0中還是可以 繼續(xù)使用的,只是這些功能都已經(jīng)被標(biāo)記為“被廢棄了”(deprecated)。如果想使用3.0中的新特性,就必須先使用基于注解的@MVC樣式。對于 Spring 2.0用戶,99%的代碼依然可以正常運行,但是對一些老組件的支持,比如Apache Commons Attributes, WebLogic 8.1 和 WebSphere 5.1,都已經(jīng)被刪除了。

    當(dāng)提起Spring框架的未來計劃時,Hoeller提到開發(fā)會受到Spring集團(tuán)中的其他項目的很大影響,比如Spring Integration, Spring Web Flow, Spring Source dm ServerSpring Roo等 等。在3.1的發(fā)布的新特性就會被Spring Integration 2.0和Spring Web Flow所影響,比如計劃中的第一類會話管理(first-class conversation management),擴(kuò)充作用域(scope)和細(xì)化基于注解的組件模型。2010年中旬中的3.1發(fā)布之后,會進(jìn)入3.2版本,對于3.2版本的具 體計劃還沒有最終完成。

    posted @ 2009-12-18 07:49 臨遠(yuǎn) 閱讀(1779) | 評論 (0)編輯 收藏

    “富客戶端Ext JS與系統(tǒng)模塊切分”話題PDF下載

         摘要: 上周六去Beijing OpenParty準(zhǔn)備的話題,可惜自己能力有限,拉票沒有進(jìn)入前九名(實際上是倒數(shù)第一,只有十個人愿意聽這個話題),無緣在活動的正式會議室講這個話題了。

    下來把PDF中存在的一些問題修改了一下,有興趣的同志可以下載看一下。也再次感謝一下最后在小會議室聽我講這個話題的三個同志。  閱讀全文

    posted @ 2009-12-14 09:20 臨遠(yuǎn) 閱讀(1434) | 評論 (0)編輯 收藏

    “業(yè)務(wù)比技術(shù)重要”一條企業(yè)開發(fā)中經(jīng)典的謬論

    做企業(yè)開發(fā),是業(yè)務(wù)重要還是技術(shù)重要?似乎大多數(shù)的聲音都在朝向著同一個方面:“業(yè)務(wù)比技術(shù)重要”,“理解客戶業(yè)務(wù)需求更加重要”,“我們要幫助客戶梳理需求,項目做到一半的時候,我們已經(jīng)比客戶都懂業(yè)務(wù)了”。

    作為一個搞技術(shù)的,我完全搞不清楚這種說法的起源,為什么作為本職工作的“技術(shù)”反而不如“業(yè)務(wù)”重要了呢?這里所說的“重要”是否是說我們只需要抓抓牢最重要的部分就可以解決一切問題了呢?既然所有人都認(rèn)為業(yè)務(wù)比技術(shù)重要,那為什么公司不直接招聘幾個“精通業(yè)務(wù)的人員”過來培訓(xùn)幾天技術(shù)就行了呢?為什么反而要招聘原本不重要的“技術(shù)人員”,再去臨時培訓(xùn)如此重要的“業(yè)務(wù)”呢?或者說,既然業(yè)務(wù)比技術(shù)重要那么多,為什么我們還要做技術(shù)呢?所有人都去搞業(yè)務(wù)豈不是可以把所有力量都集中在最重要的部分,進(jìn)而獲得更大的效益呢?

    聽到這種說法,人們又開始議論紛紛:“你這樣太極端了,怎么可能完全放棄技術(shù)呢?沒有技術(shù)怎么行呢?”這種說法再正常不過,因為我們的本職工作就是“軟件開發(fā)人員”,開發(fā)人員立足的根本就在于技術(shù)能力,所謂的業(yè)務(wù)問題如果不建立在技術(shù)基礎(chǔ)之上,就是完全無用的空對空瞎吹而已。對于一個開發(fā)人員來說,技術(shù)能力是必不可少的,再多“業(yè)務(wù)”也是無法彌補“技術(shù)”上的鴻溝的。

    可為什么大多數(shù)人還是認(rèn)為“業(yè)務(wù)比技術(shù)重要的”,首先公司的行為在于盈利,公司只有通過交易行為才能實現(xiàn)盈利,如果我們制作的產(chǎn)品無法滿足客戶的需求,客戶是絕對不會買賬的。怎么才能滿足客戶需求的,首先就要熟悉客戶的業(yè)務(wù),因此公司就需要一些了解特定方面業(yè)務(wù)的開發(fā)者來實現(xiàn)這些功能,這些公司對技術(shù)沒有太多要求,只要達(dá)到基本水平就可以,所以篩選員工的標(biāo)準(zhǔn)就變成了對業(yè)務(wù)的熟練程度。

    換句話說,大多數(shù)公司所需的員工是:“技術(shù)水平達(dá)到基本要求,對某一行業(yè)業(yè)務(wù)越熟練越好。”所有人對此都不會抱有懷疑,只是在信息不斷傳遞過程中,有意無意中人們隱去了前提部分,只剩下后面的“業(yè)務(wù)很重要”。

    對于一個公司來說,需要的永遠(yuǎn)不是:“技術(shù)最強者。”最有用的人是那些可以使用一定程度的技術(shù),最好滿足本行業(yè)業(yè)務(wù)需求的人們。公司不可能為了個人技術(shù)方面的渴求去犧牲業(yè)務(wù)方面的鉆研,這已經(jīng)是生存問題了。雙向選擇上,如果一個人技術(shù)不達(dá)標(biāo),是沒辦法通過面試的,如果一個人業(yè)務(wù)不達(dá)標(biāo),有可能先進(jìn)入公司熟悉業(yè)務(wù)。如果一個人技術(shù)太強了,公司留不住也只能放任員工去選擇更適合的發(fā)展環(huán)境,如果業(yè)務(wù)太強了,結(jié)果應(yīng)該也是一致的。

    對于個人來說,如果是一個技術(shù)狂熱者,也不應(yīng)該在公司中被技術(shù)左右,明辨技術(shù)和業(yè)務(wù)兩個方面,結(jié)合起來幫助公司創(chuàng)造更大效益的同時才能為自己提供一個有發(fā)展的環(huán)境。雙向選擇上,如果自身無法滿足公司的要求,是很難進(jìn)入公司的,如果感覺公司限制了自身發(fā)展,也可以考慮是否擁有更多的選擇機(jī)會。

    最后來研究一下技術(shù)和業(yè)務(wù)之間的融合問題,我們可以肯定一點,純粹的技術(shù)是沒辦法存活的,公司行為必然要涉及到解決哪些問題,純粹的業(yè)務(wù)也不是技術(shù)人員可以達(dá)到的,所以我們期望了解的就是業(yè)務(wù)和技術(shù)如何分配的問題,是五五嗎?是三七嗎?是六四嗎?現(xiàn)在只能說這個問題很難講清楚,根據(jù)不同行業(yè)需求的不同,畢竟大多數(shù)公司都停留在簡單的增刪查改階段,只要開發(fā)人員會用jsp的公司也比比皆是,相比專業(yè)的軟件公司,這些公司的入門門檻低,待遇也低,如果希望在這些公司走得更遠(yuǎn),唯一的方法就是在技術(shù)之外開辟出新疆界來。你可以搞業(yè)務(wù),搞管理,搞客戶關(guān)系,等等等等。大多數(shù)人都是可以適應(yīng)平滑轉(zhuǎn)型的,但是也有期望在技術(shù)上更進(jìn)一步的同志會進(jìn)入其他對技術(shù)要求更高的公司中。這類公司業(yè)務(wù)和技術(shù)比重大致在7:3到5:5之間,基本屬于平常不會遇到解決不了的問題,只要根據(jù)客戶的需求進(jìn)行實現(xiàn)即可,不過一但遇到技術(shù)上無法實現(xiàn)的功能,便無法自行解決,只能求助于更高級的軟件公司。

    在大部分公司都與最終用戶進(jìn)行交互時,還是存在著不少公司進(jìn)行著產(chǎn)品化行為,一方面基于以往項目積累的經(jīng)驗抽象出可復(fù)用的組件,另一方面對市場的調(diào)研總結(jié),設(shè)計出更易用,更成熟的體系結(jié)構(gòu),這些公司有實力,并且有需求在技術(shù)上更進(jìn)一步。這時也會出現(xiàn)對技術(shù)和業(yè)務(wù)職責(zé)上的分化。因為產(chǎn)品化已經(jīng)深入的某一個特定的行業(yè),對業(yè)務(wù)的需求分析細(xì)化整理都已經(jīng)十分完善,為了實現(xiàn)更精進(jìn)的業(yè)務(wù),也就需要更精進(jìn)的技術(shù)來作為支持。這些公司需要專精某些技術(shù)的員工,可以基于整理后的需求完成業(yè)務(wù),同時也需要更加專業(yè)的業(yè)務(wù)分析人員,在業(yè)務(wù)上進(jìn)行細(xì)化分析,提供給后續(xù)論證實現(xiàn)。只不過對于這種業(yè)務(wù)分析人員,大多也是從原軟件開發(fā)人員轉(zhuǎn)移過來的,他們擁有十分豐富的項目經(jīng)驗,同時擁有強力的設(shè)計能力可以為下面的實現(xiàn)人員提供規(guī)劃藍(lán)圖。歸根結(jié)底,無論是開發(fā)人員或是需求分析人員都是以技術(shù)為基礎(chǔ)的,沒辦法,畢竟我們的本職工作是開發(fā)。

    最后的最后,到底是技術(shù)重要還是業(yè)務(wù)重要呢?我想作為一個技術(shù)人員的大家,應(yīng)該心中有數(shù)了吧?


    posted @ 2009-12-07 13:02 臨遠(yuǎn) 閱讀(2552) | 評論 (19)編輯 收藏

    OpenSourceCamp歸來有感

    上周六去參加了OpenSourceCamp活動,玩了整整一天時間,感觸頗豐啊。

    首先是上午到達(dá)Intel,來到會議室先找了件合適尺寸的T恤裝起來(感謝活動贈送的禮品,謝謝),人不是特別多,所以在中間找到了幾個空位坐下。

    活動開始前,大屏幕上一直在播放著OpenSource的宣傳視頻,英語原聲中文字幕的,幾個老外不斷出來講這個OpenSource到底是如何如何,看到了Linus,接下來又出現(xiàn)了GNU的創(chuàng)始人,講到OpenSource的出現(xiàn),它的意義等等,不過留下最深印象的還是,當(dāng)其中提到了MicroSoft和Bill Gates時,視頻的背景音樂突然變成了“鬼子進(jìn)村”的那種氣氛,然后就伴著這種感覺聽了幾分鐘的bill Gates寫給開源社區(qū)的公開信,信的內(nèi)容主要是強調(diào)軟件的知識產(chǎn)權(quán)。。。感覺OpenSource和MicroSoft的隔閡還是年代久遠(yuǎn)啊。

    隨著視頻的戛然而止,活動進(jìn)入正題,首先由活動的發(fā)起人Peter介紹了OpenSourceCamp的歷史和未來的發(fā)展,然后依次是IBM談標(biāo)準(zhǔn)規(guī)范,intalio對自身的介紹,天使投資人介紹通過開源如何開展商業(yè)活動,中間還有一個“中文馬馬虎虎”的芬蘭女士介紹去芬蘭留學(xué)的。

    上午日程中記憶最深刻的是Xiao-Feng Li介紹的,如何在jvm中應(yīng)用向量運算來提升性能。主要就是說,如果我們對一批數(shù)據(jù)進(jìn)行相同操作,比如將10個數(shù)依次累加5這樣的操作,如果使用循環(huán)就需要使用10次加法計算,而向量計算可以通過一個加法操作就實現(xiàn)對初始10個數(shù)的累加操作,這樣就以內(nèi)存的代價換取的操作效率的提升。

    說真的,一開始還以為這是一個很偏門的技術(shù),可是聽到后來Xiao-Feng Li講到將這一項技術(shù)應(yīng)用于JVM的時候,并拿出了單線程下運行速度提升30%的測試數(shù)據(jù)時,我立刻就傻眼了??偸钦f理解業(yè)務(wù)最重要的同志們估計也沒想到完全是在鉆研技術(shù)也會產(chǎn)生這種意向不到的效果吧?業(yè)務(wù)應(yīng)用遇到底層技術(shù)一般就是這種結(jié)果了,應(yīng)用的反復(fù)研究造就了的結(jié)果是滿足特定需求,而底層技術(shù)的推出直接在數(shù)量級層次發(fā)生了顛覆的作用,這種底層的研發(fā)階段是枯燥的,而成果又是巨大的。借用演講人的一句話:“你可以把它研究出來,然后賣給SUN,ORACLE這些公司嘛。”先不說這話是認(rèn)真還是開玩笑,先回過頭來考慮一下之前我們是否對技術(shù)進(jìn)行過如此的鉆研探究,也能夠明白為何現(xiàn)在很多技術(shù)上的問題還是會成為我們前進(jìn)道路上的瓶頸了。

    再想想,為什么這種底層技術(shù)會直接出現(xiàn)在OpenSource中呢,更多時候它只會被公司內(nèi)部作為機(jī)密控制起來,OpenSource不是商業(yè)行為,它僅僅是一種distribution和development的形態(tài),開放式的開發(fā)形式,調(diào)動更多人的力量來催生創(chuàng)新的形成,反正個人從OpenSourceCamp上看到的OpenSource就是這樣的了。

    所以要放平心態(tài),國內(nèi)的技術(shù)積累尚未實現(xiàn)某種豐富的水平,所以建立在技術(shù)地基之上的OpenSource必定需要時間慢慢培養(yǎng),如果真是要做開放開源,低下頭做事情就對了。

    posted @ 2009-11-30 08:58 臨遠(yuǎn) 閱讀(1567) | 評論 (3)編輯 收藏

    誰應(yīng)該用流程設(shè)計器

    誰應(yīng)該用流程設(shè)計器

    在業(yè)務(wù)的梳理和設(shè)計階段都有可能用到流程設(shè)計器,這里提到的流程設(shè)計器是指有圖形界面,可以通過拖拽圖形設(shè)計流程圖的設(shè)計器,而不是說一個開發(fā)者專用的XML編輯器。

    既然涉及了圖形化,就可以實現(xiàn)通過流程圖與最終用戶進(jìn)行交互,對實際業(yè)務(wù)進(jìn)行梳理和重組。圖形比文字更容易讓雙方理解,這一點應(yīng)該不會有什么反對意見吧?

    下面就引出我們這次討論的問題:“那么這個流程設(shè)計器到底是應(yīng)該面向程序開發(fā)人員使用,還是面向最終用戶使用呢?”

    這個問題會衍生出多種不同的推斷,討論的焦點基本是圍繞在:“是否要放權(quán)給客戶進(jìn)行設(shè)計工作呢?”

    對 于這個問題大部分程序員都能及時給予否定的答案:“怎么能讓不懂技術(shù)的人去負(fù)責(zé)設(shè)計工作呢?他們設(shè)計出來的東西要是用程序無法實現(xiàn)該怎么辦?”社區(qū)中力挺 這種觀點的人不在少數(shù),比如OSWorkFlow就建議開發(fā)者通過直接編輯流程定義XML的方式設(shè)計流程,它們認(rèn)為流程設(shè)計完全屬于開發(fā)范疇,不需要也不 應(yīng)該由最終用戶介入。

    但是,從最終客戶方面又常常傳來:“需要對業(yè)務(wù)進(jìn)行定制調(diào)整”的聲音,于是迫于市場和客戶方面的壓力,開發(fā)設(shè)計人員又開始研究如何讓最終用戶可以在應(yīng)用層面對業(yè)務(wù)實現(xiàn)進(jìn)行干預(yù),于是出現(xiàn)了關(guān)于自動建表,定制表字段,自動生成表單等等相關(guān)的技術(shù)。

    面對如此浪潮蜂擁,諸如MDA體系架構(gòu)也開始蠢蠢欲動,想當(dāng)初多少人怒吼著:“讓開發(fā)人員失業(yè),零編碼實現(xiàn)業(yè)務(wù)系統(tǒng)。”那時的開發(fā)人員真是岌岌可危啊,總是擔(dān)心害怕自己哪一天就被某個程序給替代了??蓪嶋H上過了這些年,也沒看到開發(fā)人員集體失業(yè)的情況。

    難 道是客戶方面定制業(yè)務(wù)的需求減少了嗎?好像不是因為這個原因,還是有很多客戶抱怨市場瞬息萬變,應(yīng)用系統(tǒng)不好支持多邊的市場風(fēng)向。既然不是客戶的需求減 少,而實際開發(fā)人員又沒有被諸多的業(yè)務(wù)定制系統(tǒng)擠掉工作,那只能說明之前烽火連天的業(yè)務(wù)定制系統(tǒng)還無法完全滿足客戶的需求,客戶依然需要通過開發(fā)人員才能 實現(xiàn)自身特定的業(yè)務(wù)需求。

    現(xiàn)在我們依然需要面對的問題是:“客戶需要隨著市場的變動對業(yè)務(wù)作出調(diào)整和變化。”這個需求是現(xiàn)實存在的,既然市場提出了需求,勢必會導(dǎo)致我們聯(lián)想到是否可以將圖形化的流程設(shè)計器直接提供給最終用戶實現(xiàn),以便用戶對業(yè)務(wù)進(jìn)行修改呢?

    必須事先了解一點:“最終客戶不是開發(fā)人員”, 他們不可能像程序開發(fā)設(shè)計人員那樣信手拈來的編寫代碼,對業(yè)務(wù)模塊進(jìn)行調(diào)用,這一點就決定了我們最終提供給業(yè)務(wù)人員的設(shè)計器必定是功能受限的,不能把所有 功能都對其開發(fā),而是應(yīng)該限制他們的操作范圍,讓他們的操作保持在可控范圍內(nèi),避免出現(xiàn)業(yè)務(wù)人員設(shè)計出一個完全不可能運行的流程圖來,同時又要加強用戶交 互的易用性,從這些方面來看,不論對設(shè)計和開發(fā)方面對我們提出了不小的挑戰(zhàn)——如何幫助用戶在不犯錯的情況下,很容易設(shè)計出一個業(yè)務(wù)流程呢?

    我們可以看到,如果要滿足客戶定制的需求,就需要提供兩套流程設(shè)計器,開發(fā)版流程設(shè)計器需要提供各種接口方便開發(fā)擴(kuò)展調(diào)試,最好還能和實際開發(fā)的環(huán)境集成。業(yè)務(wù)版流程設(shè)計器就要更加強調(diào)易用性,在功能方面進(jìn)行限制,豐富校驗和提示方面的信息。

    posted @ 2009-11-23 12:44 臨遠(yuǎn) 閱讀(1074) | 評論 (1)編輯 收藏

    數(shù)據(jù)建模與業(yè)務(wù)建模

    數(shù)據(jù)建模與業(yè)務(wù)建模

    無論是企業(yè)信息系統(tǒng)還是web網(wǎng)站,各種大小程序的原始功能都是對數(shù)據(jù)的操作,可以看做是某一群體對一些數(shù)據(jù)的各種需求造就了一個又一個的程序,或者說是軟件系統(tǒng)。

    回頭想想,第一刻起我們就開始和數(shù)據(jù)打交道了,新項目開始的時候我們先要做什么呢?用第三方依賴搭個框架,設(shè)計目錄結(jié)構(gòu)嗎?不對,這些都是技術(shù)儲備,應(yīng)該是在項目啟動之前就完成的了。項目啟動的一刻我們在做的工作總是對數(shù)據(jù)的分析。

    我們要分析數(shù)據(jù)結(jié)構(gòu),理清數(shù)據(jù)關(guān)系,確定數(shù)據(jù)類型,還要兼顧數(shù)據(jù)量的大小,現(xiàn)在至少不用考慮數(shù)據(jù)的存儲媒介了,因為十有八九都要用數(shù)據(jù)庫,除了極少數(shù)情況應(yīng)該不會有人選擇自己編寫文件系統(tǒng)進(jìn)行數(shù)據(jù)的存儲了吧?

    上 面的這些步驟就叫做數(shù)據(jù)建模,搞程序的同志們肯定相當(dāng)輕車熟路了,從拿到用戶的第一個表單開始,在ER圖中拖出第一個Table,我們就開始進(jìn)行數(shù)據(jù)模型 的設(shè)計,設(shè)計好的數(shù)據(jù)模型將固化在某一種媒介中(基本都是數(shù)據(jù)庫),應(yīng)用系統(tǒng)的用途就是為用戶提供一個界面,讓他們對固化在媒介中(一般都是數(shù)據(jù)庫)的數(shù) 據(jù)進(jìn)行操作。

    怎 么才算是良好的數(shù)據(jù)模型呢?首先它要滿足數(shù)據(jù)固化的基本要求,所有必須的數(shù)據(jù)都必須能夠保存在數(shù)據(jù)庫里,其次這些數(shù)據(jù)的結(jié)構(gòu)應(yīng)該是容易被應(yīng)用程序操作的, 無論是增刪查改、數(shù)據(jù)校驗、數(shù)據(jù)安全、搜索查詢、統(tǒng)計匯總、數(shù)據(jù)導(dǎo)出等等功能都是可以實現(xiàn)的,而且效率不能太低。如果能夠?qū)崿F(xiàn)以上兩條,基本就可以算是一 個良好的數(shù)據(jù)模型了,這樣用戶就可以借助應(yīng)用程序?qū)?shù)據(jù)庫中自己所需的數(shù)據(jù)進(jìn)行管理、操作。

    但 是還有一個問題,是否只要提供了這些功能就足以滿足用戶的要求了呢?從上面列出的功能中我們就可以了解到,無論是CRUD增刪查改,還是查詢統(tǒng)計,無非是 “更新(update)”,“查詢(Read)”,“校驗(Check)”三個基本操作的實現(xiàn),這些操作都是基于靜態(tài)數(shù)據(jù)的單步操作,應(yīng)用程序只是在數(shù)據(jù) 外面簡單包裝了薄薄的一層,用戶面對的和要操作管理的依然是后面整個數(shù)據(jù)模型。

    這個問題可以歸結(jié)到:我們解決了用戶想要什么(What),但是并沒有了解用戶需要怎么做(How)。

    數(shù) 據(jù)建模解決了數(shù)據(jù)如何存儲,存儲的格式,以及怎么獲得已經(jīng)存儲的數(shù)據(jù)的問題,數(shù)據(jù)建模完成了數(shù)據(jù)固化和檢索的任務(wù),數(shù)據(jù)建模歸根結(jié)底是對靜態(tài)數(shù)據(jù)的建模, 給你一張ER圖,你很容易就可以了解到數(shù)據(jù)的類型、數(shù)據(jù)的關(guān)系,但是你無法從這些數(shù)據(jù)格式數(shù)據(jù)關(guān)系中弄明白客戶到底需要利用這些數(shù)據(jù)完成什么樣的任務(wù)。不 清楚這些數(shù)據(jù)從何而來,到何處去,也就決定了你編寫的應(yīng)用系統(tǒng)只能包含一個錄入界面,一個查詢界面,無法再為最終用戶提供更多的功能,因為你手中只有靜止 不動的數(shù)據(jù)而已。

    因此,為了讓應(yīng)用系統(tǒng)可以肩負(fù)起更多的功能,我們需要在業(yè)務(wù)模型的基礎(chǔ)之上進(jìn)行業(yè)務(wù)建模,比如一個文章發(fā)布系統(tǒng)中的表結(jié)構(gòu)如下所示:

    從 表結(jié)構(gòu)中可以看到一個文章包含主鍵(ID),作者(author),內(nèi)容(content),狀態(tài)(status),創(chuàng)建時間(create_time) 和修改時間(update_time)。狀態(tài)(status)字段類型為整形,可能的值為0, 1, 2, 3四種。單單從數(shù)值上來說,除了建表的人誰也搞不清楚這四個狀態(tài)到底有什么作用,但是只要配合下面的流程圖這個問題就可以迎刃而解了。

    業(yè) 務(wù)建模的目標(biāo)是在數(shù)據(jù)模型的基礎(chǔ)上,讓應(yīng)用程序幫助最終用戶解決實際業(yè)務(wù)中出現(xiàn)的問題,它所感興趣的方面數(shù)據(jù)的流向和狀態(tài)的變遷,從上面的流程圖我們就可 以看到,雖然status擁有4個狀態(tài),但是這4個狀態(tài)并不是可以隨意轉(zhuǎn)換的,“文章起草”(status=0)只能轉(zhuǎn)變?yōu)?#8220;提交待審批” (status=1),而“審批完成”(status=2)作為一個終止?fàn)顟B(tài)是不能再發(fā)生改變的。這些功能需求都是數(shù)據(jù)建模階段無法解決的,只有通過對業(yè) 務(wù)邏輯,業(yè)務(wù)流程的梳理分析才能在應(yīng)用程序中為最終用戶提供這些功能。

    業(yè)務(wù)建模讓數(shù)據(jù)模型變得有血有肉,結(jié)合了業(yè)務(wù)的數(shù)據(jù)不再是單薄的骨架,而是變成了鮮活的生靈。

    我 們借助一個最簡單的發(fā)文審批流程向大家介紹了數(shù)據(jù)建模與業(yè)務(wù)建模的關(guān)系,希望大家能夠借此了解軟件開發(fā)中業(yè)務(wù)流程與數(shù)據(jù)模型之間的關(guān)系,別小看文章表結(jié)構(gòu) 中的status狀態(tài)位,它已經(jīng)初具了有限狀態(tài)機(jī)(FSM, Finite State Machine)的雛形,很多簡易的工作流引擎都是基于FSM來實現(xiàn)的,所以請切實體會一下實際開發(fā)中流程的作用,你可能沒有使用工作流,但是我們所面對 的問題和解決的方式卻是大同小異的。

    posted @ 2009-11-20 09:41 臨遠(yuǎn) 閱讀(2336) | 評論 (3)編輯 收藏

    我們?yōu)槭裁催x擇工作流

    我們?yōu)槭裁催x擇工作流。

    一直感覺很難對那些從未接觸過工作流的同學(xué)們解釋清楚。

    還記得有一個活動中,有人提問:“工作流到底是做什么的?”回答的同志希望根據(jù)具體的實例解釋一下,就反問他:“你們公司的報銷流程是怎么走的?”結(jié)果提問的同志直接說:“直接找財務(wù)啊。”引得下面一陣喧嘩:“不用領(lǐng)導(dǎo)簽字就可以隨便報銷啊。”

    那個提供的同志心里一定感覺很無辜:“我也不知道公司的請假流程應(yīng)該找誰啊,大家每次都直接給財務(wù)了。”其實對于小公司來說,里邊工作的人本來不多,可能都是報銷這種事情都是這樣兩步完成了,可實際上真實的流程應(yīng)該是這樣:

    大家對圖中的環(huán)節(jié)估計不會有什么異議,只是對于直接拿發(fā)票找財務(wù)報銷的人來說,中間的核實部分變成了完美的黑盒,他不了解,也沒有必要去了解報銷的整個過程,站在當(dāng)事人的角度,他只要最后知道這次報銷能拿到多少錢就可以了。

    對 于一個公司的內(nèi)部事務(wù)來說,這樣就最好的,員工沒有必要去了解每個環(huán)節(jié)是如何進(jìn)行的,但是在為這種公司進(jìn)行軟件開發(fā)時無疑要面臨著掉進(jìn)陷阱的危險。假設(shè)你 只對員工進(jìn)行需求調(diào)研,他會只給你發(fā)票的單據(jù),告訴你報銷流程就是找財務(wù)。如果再去找財務(wù)進(jìn)行需求調(diào)研,他會告訴你只要看一下沒問題就可以報銷了,最有可 能略過,也可能是最關(guān)鍵的特別情況需要經(jīng)過老板審核的步驟,這個步驟可能是5000元以上必須經(jīng)老板過目,也可能是特殊事項需要老板簽字,但是因為公司日 常不會出現(xiàn)很多這種情況而被人們無意識的忽略掉,有可能到程序開發(fā)到中段時才突然想起來,然后就需要把流程重改。

    說到這里,那么使用了工作流就可以避免出現(xiàn)這類需求變更問題嗎?

    答 案是否定的,軟件開發(fā)時的需求變更常常是因為客戶對本身業(yè)務(wù)要求和業(yè)務(wù)流程的不熟悉所導(dǎo)致的,軟件開發(fā)的過程常常伴隨著流程的梳理和細(xì)化,這也是為什么很 多程序員都說:“這個項目做完了,我比他們公司里的人都懂業(yè)務(wù)了。”其實不是你比他們還懂業(yè)務(wù),真正辦公的時候你還是會被各種情況沖的頭昏腦脹,但是因為 你在軟件開發(fā)的過程中對各個部門之間的依賴和關(guān)聯(lián)進(jìn)行了完全的梳理,所以對各個部門之間的數(shù)據(jù)流和業(yè)務(wù)流了解的更為通透。

    話 說回來,工作流雖然不能解決因為客戶對本身業(yè)務(wù)的深化而造成的需求變更問題,但是它確實可以把這個風(fēng)險提前,我們知道,風(fēng)險總是越早解決越有利,因為當(dāng)我 們一張張單據(jù)化為流程圖時,客戶也能夠更好的參與到流程的解讀中來,通過流程圖可以加快業(yè)務(wù)的深化,提早暴露出之前沒有考慮到的問題,便于我們盡快的盡早 的解決。

    那么我們直接用visio不就可以了?何必使用工作流呢?

    答案是 visio也可以,只要可以限制圖形中的語義,不要讓客戶任意發(fā)揮,就完全可以實現(xiàn)工作流的效果。為什么要限制語義呢?因為只有流程圖可以直接映射為開發(fā) 完成的程序,對流程圖的細(xì)化才是真正有意義的,否則客戶畫了一張完全無法用程序?qū)崿F(xiàn)的圖形,我們該怎么辦呢?工作流一般都提供了自己定義的一套語義,大多 都是以XML格式保存的,只要以此為基礎(chǔ)畫出的流程圖都是可以轉(zhuǎn)換為實際程序的,再加上與客戶的溝通,讓客戶和程序員對流程中每個環(huán)節(jié)的理解保持一致,就 可以盡量避免理解上的偏差,減少修改和返工現(xiàn)象。

    但是工作流的學(xué)習(xí)曲線太高了,原本程序中我只需要設(shè)置幾個狀態(tài)位就可以解決問題,值得興師動眾的配上工作流嗎?

    對 這個問題的回答還需要對實際情況進(jìn)行分析,小型系統(tǒng)中,你只需要制作一個CMS,不同的管理員負(fù)責(zé)不同版塊內(nèi)容的審批,這種邏輯簡單,流程固定的需求確實 沒有必要使用工作流,使用了工作流反而會加大開發(fā)和維護(hù)的復(fù)雜度,使用狀態(tài)位模擬FSM有限狀態(tài)機(jī)也完全可以實現(xiàn)。但是在復(fù)雜的業(yè)務(wù)情況中可能存在著同步 并行,多路決策,循環(huán)遍歷等情況,這種情況下使用狀態(tài)位就無法滿足客戶的業(yè)務(wù)需求,因此隨著業(yè)務(wù)需求復(fù)雜度的上升,我們必然需要選擇功能更強大的武器來解 決這一系列的問題。




    posted @ 2009-11-18 10:07 臨遠(yuǎn) 閱讀(1951) | 評論 (7)編輯 收藏

    jBPM-4.2發(fā)布,比預(yù)期延遲了4天

    jBPM-4.2終于在2009年11月5日發(fā)布,從jBPM-4.0開始,jBPM的版本發(fā)布已經(jīng)朝向正規(guī)發(fā)展,每次發(fā)布都要經(jīng)過JIRA凍結(jié),代碼凍結(jié),測試周,然后才會發(fā)布正式版本,這次的發(fā)布是被gwt-console-1.2拖了后腿,10月30日的時候,JIRA和代碼準(zhǔn)備都接近完成,只剩下一個gwt-console-1.2升級的issue,結(jié)果一直拖了一周的時間,最終延遲到了11月5日才正式發(fā)布。

    現(xiàn)在我們可以從jBPM的官方網(wǎng)站下載jBPM-4.2的發(fā)布包了。
    下載地址:
    http://sourceforge.net/projects/jbpm/files/a%29%20jBPM%204/
    現(xiàn)在jBPM的發(fā)布包都有100M+,其中包含了所有的源代碼,第三方依賴庫,報表引擎,控制臺和web設(shè)計器,jBPM從4.0開始一直致力于提供完善的安裝,升級腳本,寄希望于讓用戶通過官方提供的ant腳本實現(xiàn)jBPM的各種安裝調(diào)試工作。

    這次jBPM-4.2發(fā)布,除了支持Process ClassLoader之外,并沒有提供更多的新功能,目前jBPM的開發(fā)還是著重于對安裝腳本,數(shù)據(jù)遷移功能進(jìn)行增補,比如這次jBPM中對jpdl-4.2.xsd的擴(kuò)充就包括了在xml中定義processInstance的遷移策略,以后的某個時間里,我們有可能直接通過processDefintion中的定義就可以實現(xiàn)讓原有流程定義對應(yīng)的流程實例直接遷移到最新發(fā)布的流程下。

    jBPM-4.2中繼續(xù)強化了版本間數(shù)據(jù)庫表結(jié)構(gòu)的升級功能,提供了4.1到4.2的數(shù)據(jù)表結(jié)構(gòu)升級腳本,雖然支持的數(shù)據(jù)庫還是只有那么幾個,但是已經(jīng)可以避免因為數(shù)據(jù)庫表結(jié)構(gòu)的不同而造成的升級問題了。

    有關(guān)jBPM-4.2的詳細(xì)更新列表可以參考官方提供的release note,地址如下所示:
    https://jira.jboss.org/jira/secure/ReleaseNote.jspa?projectId=10052&styleName=Html&version=12313768

    我們也提供了jBPM-4.2此次發(fā)布的用戶手冊與開發(fā)指南的翻譯版本,地址如下:
    http://www.family168.com/tutorial/jbpm4.0/html/
    http://www.family168.com/tutorial/jbpm4devguide/html/

    不過,在我們自身進(jìn)行版本升級的過程中,還是遇到了一些郁悶的地方,比如4.2中將所有自增主鍵都替換成用戶指定的方式,使用了idgenerator組件,通過數(shù)據(jù)庫中主鍵表統(tǒng)一管理各個數(shù)據(jù)表的主鍵生成。這個過程中使用的事務(wù)控制方式,要調(diào)用名稱為newTxRequiredCommandService的CommandService組件,但是對應(yīng)spring的整合配置文件中并沒有對這個變動進(jìn)行同步,造成的問題是如果像我們一樣使用spring與jbpm整合的方式運行jbpm4,就會直接拋出異常,這時候還需要根據(jù)官方的配置改動spring配置文件才行。在spring整合的方向,jbpm確實沒有付出多少關(guān)注啊。


    posted @ 2009-11-06 00:49 臨遠(yuǎn) 閱讀(1410) | 評論 (1)編輯 收藏

    【分享】《基于Spring Security的ACL實現(xiàn)與擴(kuò)展》內(nèi)附ppt下載

         摘要: 上次朋友間技術(shù)交流整理的ppt文檔,因為之前一直在整理Spring Security安全權(quán)限管理手冊,所以這次的主題就是《基于Spring Security的ACL實現(xiàn)與擴(kuò)展》。  閱讀全文

    posted @ 2009-09-20 22:24 臨遠(yuǎn) 閱讀(2618) | 評論 (3)編輯 收藏

    報表應(yīng)用系列——圖表JFreeChart-0.0.1啟動

    為了在信息系統(tǒng)中實現(xiàn)各種統(tǒng)計報表,我們首選了FusionChart,可惜既看不到flash控件的代碼,提供廠商也沒有免費提供諸如甘特圖的高級組件,因此我們又回歸到了JFreeChart這個擁有了將近十年歷史的經(jīng)典圖表工具上。
    另我們驚訝的不止是JFreeChart本身所具有的強悍功能,還包含著對市面上JFreeChart文檔資料的匱乏,因此,自己動手豐衣足食,我們將JFreeChart作為對報表應(yīng)用以及BI的開端,目標(biāo)是使用JFreeChart覆蓋常用的圖表應(yīng)用場景,介于我們對報表應(yīng)用的經(jīng)驗不足,敢情有識之士對我們提出一些建議。謝謝。

    下面是目前提供的在線文檔預(yù)覽:
    序言
    I. 基礎(chǔ)應(yīng)用
    1. 快速開始
    2. 柱狀圖
    2.1. 簡單柱狀圖
    2.2. 水平柱狀圖
    2.3. 三維柱狀圖
    2.4. 分組柱狀圖
    2.5. 負(fù)向坐標(biāo)
    3. 餅狀圖
    3.1. 簡單餅圖
    3.2. 炸開的餅圖
    3.3. 處理空值和負(fù)值
    3.4. 三維餅圖
    3.5. 多重餅圖
    4. 折線圖
    4.1. 簡單折線圖
    4.2. 三維折線圖
    4.3. 多重折線圖
    4.4. 設(shè)置折線樣式



    posted @ 2009-08-25 13:22 臨遠(yuǎn) 閱讀(1351) | 評論 (6)編輯 收藏

    Spring Security 安全權(quán)限管理手冊(0.1.0更新)

    隨著內(nèi)容的堆疊,文檔結(jié)構(gòu)開始漸漸混亂了,到0.1.0為止關(guān)于認(rèn)證與授權(quán)的基本功能已經(jīng)覆蓋的七七八八了,下面開始進(jìn)入整理和深入研究的階段,之后的更新會大大放慢,同時其他誰能提出一些有建設(shè)性的建議來點醒一下,否則就會真是進(jìn)入漫長蟄伏期了。

    修訂 0.1.0 2009-07-27
      1. 添加:第 7 章 自定義訪問拒絕頁面。

      2. 添加:第 8 章 動態(tài)管理資源結(jié)合自定義登錄頁面。

      3. 添加:第 39 章 設(shè)置過濾器鏈。

      4. 添加:第 40 章 自定義過濾器。

      5. 添加:第 41 章 使用用戶組。

      6. 添加:第 42 章 在JSF中使用Spring Security

      7. 添加:第 43 章 自定義會話管理。

      8. 添加:第 44 章 匹配URL地址。

      9. 添加:第 45 章 配置過濾器。

      10. 添加:第 50 章 用戶組控制臺

      11. 第 20 章 digest認(rèn)證補充了一個使用ajax進(jìn)行認(rèn)證的例子。

      12. 第 34 章 用戶信息補充了一些PasswordEncoder和SaltValue的說明。

      13. 附錄 C, Spring Security-3.0.0.M1中添加對RESTful形式URL的權(quán)限控制。

      14. 附錄 B, 常見問題解答中添加了一些FAQ。

        posted @ 2009-08-05 10:34 臨遠(yuǎn) 閱讀(1447) | 評論 (2)編輯 收藏

        Spring Security 安全權(quán)限管理手冊(0.0.9更新)

             摘要: 這次更新中包含了一個在用戶輸入密碼錯誤三次后鎖定賬戶的示例,比較有意思,推薦大家閱讀一下。  閱讀全文

        posted @ 2009-07-27 09:25 臨遠(yuǎn) 閱讀(1492) | 評論 (1)編輯 收藏

        Spring Security 安全權(quán)限管理手冊(0.0.8更新)

             摘要: Spring Security-2.0.5發(fā)布,這個bug fix版很可能為2.x系列畫上了一個句號,只是3.0的進(jìn)度一直緩慢,大概也是在等待著spring-3.0的來臨。spring security文檔寫到這里已經(jīng)到了一個階段,基本覆蓋了框架提供的所有特性,下一步要仔細(xì)考慮如何基于框架創(chuàng)造出完善的應(yīng)用了。   閱讀全文

        posted @ 2009-07-20 09:53 臨遠(yuǎn) 閱讀(1657) | 評論 (3)編輯 收藏

        Spring Security 安全權(quán)限管理手冊(0.0.7更新)

        這一次迭代,對章節(jié)的命名進(jìn)行了這里,目標(biāo)是盡快覆蓋Spring Security中提供的各項功能,從而逐漸進(jìn)入安全框架的內(nèi)核。
        修訂 0.0.7 2009-07-10  
          1. 整理章節(jié)的名稱結(jié)構(gòu)。

          2. 添加:第 14 章 自動登錄

          3. 添加:第 15 章 匿名登錄

          4. 添加:第 16 章 防御會話偽造。

          5. 添加:第 17 章 預(yù)先認(rèn)證

          6. 添加:第 18 章 切換用戶。

          7. 添加:第 19 章 信道安全。

          8. 添加:第 20 章 digest認(rèn)證。

          9. 添加:第 31 章 權(quán)限管理的基本概念。

          10. 添加:第 32 章 Voter表決者

          11. 添加:第 33 章 攔截器。

          12. 添加:附錄 F, 異常

          13. 添加:附錄 G, 事件。

          14. 第 12 章 basic認(rèn)證中添加單獨使用瀏覽器登錄的示例。



            posted @ 2009-07-13 00:37 臨遠(yuǎn) 閱讀(1399) | 評論 (2)編輯 收藏

            jBPM-4.0.GA閃亮發(fā)布,附送相關(guān)資料集合

            jBPM簡介

            jBPM 即java Business Process Management,基于java的業(yè)務(wù)流程管理系統(tǒng),它是市面上相當(dāng)流行的一款開源工作流引擎,引擎底層基于獲得Active Diagram模型。作為jBoss的一個子項目,它使用了hibernate,因此可以很好的支持主流數(shù)據(jù)庫。

            一般來說,很多人都會問一 個問題,為什么選擇jBPM4,而不是OSWorkFlow或者其他工作流引擎呢?在此就說一點兒OSWorkFlow的壞話吧,首先 OSWorkFlow自從2006年1月8日以來就再也沒有發(fā)布過新版本,其次,之前找到過一份OSWorkFlow的介紹文檔,實例中的代碼量讓人產(chǎn)生 了不小的畏懼心理,而且OSWorkFlow不提倡使用流程設(shè)計器,而是建議開發(fā)者直接進(jìn)行編碼,這就把自己限制在了開發(fā)層次,不利于向業(yè)務(wù)層面滲透。

            posted @ 2009-07-11 01:02 臨遠(yuǎn) 閱讀(2081) | 評論 (2)編輯 收藏

            Spring Security 安全權(quán)限管理手冊(0.0.6更新)

            這一次,我們添加了taglib標(biāo)簽庫的時候,以及如何使用多種方式保護(hù)方法的調(diào)用。而我們推薦大家閱讀的,包含在本次更新中的重頭戲是“使用spring security實現(xiàn)最簡的權(quán)限后臺”,這就好比我們學(xué)會了26個字母,但是依然很難講出流利的英語,我們教程的最后將包含多個知識點的匯集和整合,探索一條如何依靠spring security完成多種實際應(yīng)用的最佳實踐之路。

            13. 標(biāo)簽庫
            13.1. 配置taglib
            13.2. authenticaiton
            13.3. authorize
            13.4. acl/accesscontrollist
            13.5. 為不同用戶顯示各自的登陸成功頁面
            III. 內(nèi)部機(jī)制篇
            30. 保護(hù)方法調(diào)用
            30.1. 控制全局范圍的方法權(quán)限
            30.2. 控制某個bean內(nèi)的方法權(quán)限
            30.3. 使用annotation控制方法權(quán)限
            30.3.1. 使用Secured
            30.3.2. 使用jsr250
            V. 最佳實踐篇
            49. 最簡控制臺
            49.1. 平臺搭建
            49.2. 用戶登錄
            49.3. 用戶信息列表
            49.4. 添加用戶
            49.5. 修改用戶信息
            49.6. 修改自己的密碼

            posted @ 2009-07-10 01:53 臨遠(yuǎn) 閱讀(1222) | 評論 (0)編輯 收藏

            Spring Security手冊更新cas, basic, acl

            這次更新的都是重頭戲,CAS和ACL。其中ACL只是簡述了Spring Security中默認(rèn)提供的實現(xiàn)方式,如何讓它更明快的跑在我們的應(yīng)用里,估計還要下一番功夫。

            11. 單點登錄
            11.1. 配置JA-SIG
            11.2. 配置Spring Security
            11.2.1. 添加依賴
            11.2.2. 修改applicationContext.xml
            11.3. 運行配置了cas的子系統(tǒng)
            11.4. 為cas配置SSL
            11.4.1. 生成密鑰
            11.4.2. 為jetty配置SSL
            11.4.3. 為tomcat配置SSL
            12. basic認(rèn)證
            12.1. 配置basic驗證
            12.2. 編程實現(xiàn)basic客戶端

            posted @ 2009-06-29 18:06 臨遠(yuǎn) 閱讀(1615) | 評論 (1)編輯 收藏

            Spring Security手冊更新——添加“管理會話”和對namespace,database的整理

            新增的部分有,第八章“管理會話”,附錄D,E分別整理了命名空間中的元素和屬性,以及數(shù)據(jù)庫表結(jié)構(gòu)。

            10. 管理會話
            10.1. 添加監(jiān)聽器
            10.2. 添加過濾器
            10.3. 控制策略
            10.3.1. 后登陸的將先登錄的踢出系統(tǒng)
            10.3.2. 后面的用戶禁止登陸
            D. 命名空間
            D.1. http
            D.2. authentication-provider
            D.3. ldap-server
            D.4. global-method-security
            E. 數(shù)據(jù)庫表結(jié)構(gòu)
            E.1. User
            E.2. Group
            E.3. RememberMe
            E.4. ACL

            posted @ 2009-06-22 10:02 臨遠(yuǎn) 閱讀(1104) | 評論 (3)編輯 收藏

            主站蜘蛛池模板: 手机在线免费视频| 亚洲毛片在线观看| 亚洲一区二区三区国产精华液| 久久精品免费网站网| 在线成人a毛片免费播放| 久久精品国产亚洲香蕉| 黄色网页免费观看| 一二三四视频在线观看中文版免费| 国产亚洲成AV人片在线观黄桃| 亚洲av日韩综合一区久热| 中文字幕天天躁日日躁狠狠躁免费| 亚洲另类激情专区小说图片| 国产精品高清视亚洲一区二区| 日韩电影免费观看| 亚洲视频在线精品| 亚洲AV女人18毛片水真多| 成人黄色免费网址| 亚洲欧洲日产国产综合网| 久久成人18免费网站| 国产jizzjizz免费看jizz| 色老板亚洲视频免在线观| 久久国产高潮流白浆免费观看| 在线观看亚洲天天一三视| 国产成人综合亚洲绿色| 成人免费视频试看120秒| 亚洲一级片在线播放| 香港a毛片免费观看| 亚洲精品少妇30p| 一级做a爱过程免费视频高清| 国产精品久久免费视频| 亚洲中文字幕在线无码一区二区| 午夜不卡久久精品无码免费| 亚洲人成色777777在线观看| 一级做a爱过程免费视| 亚洲精品视频在线看| 深夜福利在线免费观看| 国产免费av片在线播放| 亚洲av中文无码乱人伦在线观看| 免费国产黄线在线观看| 亚洲人成综合在线播放| 91九色精品国产免费|