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

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

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

    posts - 176, comments - 240, trackbacks - 0, articles - 7

    BizFlow extends CRUD

    Posted on 2006-07-15 22:25 canonical 閱讀(1667) 評(píng)論(5)  編輯  收藏 所屬分類: Witrix開發(fā)平臺(tái)

    ? CRUD(Create Read Update Delete)是一般應(yīng)用程序中最基礎(chǔ)的操作,但是用戶的需求卻很難直接映射到CRUD操作上。例如常見的需求如下:
    ?1. 不同的業(yè)務(wù)處理處于不同狀態(tài)的業(yè)務(wù)對(duì)象:
    ???? 業(yè)務(wù)A處理狀態(tài)為X的業(yè)務(wù)對(duì)象,而業(yè)務(wù)B處理狀態(tài)為Y的業(yè)務(wù)對(duì)象
    ?2. 業(yè)務(wù)對(duì)象處于不同狀態(tài)的時(shí)候允許的操作不同:
    ??? 狀態(tài)處于X的業(yè)務(wù)對(duì)象允許操作U, 而狀態(tài)處于Y的業(yè)務(wù)對(duì)象允許操作V
    ?3. 不同的業(yè)務(wù)操作可能修改業(yè)務(wù)對(duì)象的不同屬性:
    ???? 操作U修改業(yè)務(wù)對(duì)象的屬性P, 操作V修改業(yè)務(wù)對(duì)象的屬性Q
    ?4. 具有不同權(quán)限的人能夠從事的業(yè)務(wù)不同:
    ????? 角色R處理業(yè)務(wù)A, 角色S處理業(yè)務(wù)B
    ?5. 具有不同權(quán)限的人即使從事同一業(yè)務(wù),所能夠操作的業(yè)務(wù)對(duì)象集合也不同:
    ???? 角色R處理部門M的業(yè)務(wù)對(duì)象,角色S處理部門N的業(yè)務(wù)對(duì)象.
    ?6. 具有不同權(quán)限的人即使可以操作同一業(yè)務(wù)對(duì)象,所能夠采取的業(yè)務(wù)操作也不同:
    ????? 角色R只能進(jìn)行操作U, 角色S只能進(jìn)行操作V
    ?7. 在業(yè)務(wù)對(duì)象上執(zhí)行操作之后可能造成狀態(tài)變遷:
    ????? 處于狀態(tài)X的業(yè)務(wù)對(duì)象上執(zhí)行操作U后狀態(tài)變?yōu)閅

    以上這些需求往往是系統(tǒng)中最易變的部分, 而它們?cè)诟拍钌锨∏”憩F(xiàn)為對(duì)CRUD的一種限制性描述. 因此通過如下擴(kuò)展我們可以定義BizFlow的概念: BizFlow = CRUD + Filter. 根據(jù)這種觀念, witrix平臺(tái)中BizFlow被實(shí)現(xiàn)為DaoWebAction的一種無縫擴(kuò)展.
    ?? 在jsplet框架中我們通過如下url模式來訪問后臺(tái)的CRUD操作:
    ?? /list.jsp?objectName=MyObj&objectEvent=Query
    為了實(shí)現(xiàn)BizFlow只需通過spring為DaoWebAction配置一個(gè)xml配置文件, 此后仍然可以通過
    ??? /list.jsp?objectName=MyObj&objectEvent=Query
    來訪問后臺(tái)的CRUD操作,只是后臺(tái)會(huì)自動(dòng)應(yīng)用配置文件中的 bizId="default", bizActionId="Query-default"等配置項(xiàng).
    如果我們采用如下url來訪問
    ??? /list.jsp?objectName=MyObj&objectEvent=Query&$bizId=test&$bizActionId=test???
    則后臺(tái)將應(yīng)用配置項(xiàng) bizId=manage, bizActionId=Query-test, 而
    ??? /list.jsp?objectName=MyObj&objectEvent=BizAction&$bizId=test&$bizActionId=test???
    則對(duì)應(yīng)于配置項(xiàng) bizId=manage, bizActionId=BizAction-test.
    ?? 應(yīng)用BizFlow配置項(xiàng)之后,所有前臺(tái)代碼都可以不做出任何改變, 因?yàn)樗鼈冎皇菍?duì)于給定數(shù)據(jù)的展現(xiàn).
    ??
    ?? BizFlow可以看作是CRUD加上簡(jiǎn)單的流程控制和權(quán)限控制所構(gòu)成, 但是它與完整的工作流模型還是有著顯著區(qū)別的. 工作流中所關(guān)注的重點(diǎn)首先是流程實(shí)例而不是業(yè)務(wù)對(duì)象實(shí)例, 在一個(gè)流程中是否存在唯一的業(yè)務(wù)對(duì)象,以及業(yè)務(wù)對(duì)象的狀態(tài)是否隨著流程流轉(zhuǎn)發(fā)生變化完全是一件獨(dú)立的事情,它們并不屬于抽象的工作流模型本身. 理論上說,一個(gè)業(yè)務(wù)對(duì)象可以同時(shí)參與多個(gè)流程. 在工作流建模中主要通過流程步驟的先后順序的約束來描述業(yè)務(wù)進(jìn)程, 處于同一狀態(tài)的業(yè)務(wù)對(duì)象可能處在不同的流程步驟中. 而BizFlow可以看作是狀態(tài)驅(qū)動(dòng)的, 當(dāng)前業(yè)務(wù)步驟直接由業(yè)務(wù)對(duì)象的狀態(tài)決定. 在BizFlow中因?yàn)橐暯鞘菢I(yè)務(wù)對(duì)象的狀態(tài),因此我們直接面對(duì)的是大量處于同一狀態(tài)的不同的業(yè)務(wù)處理過程, 而workflow中往往建模的時(shí)候強(qiáng)調(diào)單流程實(shí)例視角,而一般缺乏對(duì)于流程實(shí)例相關(guān)性的描述. 現(xiàn)在國內(nèi)很多人認(rèn)為工作流就是狀態(tài)機(jī)其實(shí)是對(duì)workflow概念的一種誤讀.
    ?

    Feedback

    # re: BizFlow extends CRUD  回復(fù)  更多評(píng)論   

    2006-07-17 09:35 by ronghao
    很感興趣,我前段時(shí)間的想法和這個(gè)比較象,只是放到業(yè)務(wù)層攔截而已.這個(gè)不會(huì)是你的一個(gè)產(chǎn)品吧?

    # re: BizFlow extends CRUD  回復(fù)  更多評(píng)論   

    2006-08-07 23:05 by OneEyeWolf
      你這個(gè)東東,其實(shí)和workflow是沾不上邊的,不知道為什么叫BizFlow.你所描述的業(yè)務(wù)狀態(tài)的變化是雜亂的,視具體業(yè)務(wù)對(duì)象屬性和商業(yè)邏輯操作而定,一般很難設(shè)計(jì)出驅(qū)動(dòng)對(duì)象發(fā)生狀態(tài)變化的事件機(jī)制。所以叫BizFlow明顯的讓人誤解。
      如果你和workflow勉強(qiáng)的相比,可能會(huì)讓你的思路受到影響。

      你上述對(duì)業(yè)務(wù)對(duì)象的7條分析,并沒有帶出你下一步是如何設(shè)計(jì)來應(yīng)對(duì)這些變化與操作的,看不出具體的思路所在。

      實(shí)際項(xiàng)目復(fù)雜的操作并不能分析出這幾條而到此為止,要想滿足這7條,估計(jì)是非常困難的。估計(jì)你的只能滿足你特定領(lǐng)域的一些簡(jiǎn)單的操作。

      個(gè)人覺得設(shè)計(jì)應(yīng)當(dāng)分享具體的職責(zé),這樣可以復(fù)用,同時(shí)隔離變化
      實(shí)體描述器(descriptor):對(duì)實(shí)體對(duì)象的一個(gè)描述,
      操作器(Operator):具體操作器的實(shí)現(xiàn)分為:creator, deletor, saveOrUpdator, updator等幾種實(shí)現(xiàn)。
      查詢器:實(shí)現(xiàn)對(duì)實(shí)體的簡(jiǎn)單與復(fù)雜的關(guān)聯(lián)查詢。 

      導(dǎo)航器:實(shí)現(xiàn)對(duì)實(shí)體的業(yè)務(wù)操作后,發(fā)生的具體跳轉(zhuǎn)。
    驗(yàn)證器(Validator): 實(shí)現(xiàn)對(duì)業(yè)務(wù)數(shù)據(jù)的驗(yàn)證
    權(quán)限認(rèn)證器(Authencator):實(shí)現(xiàn)權(quán)限的判斷




     
      
      
      

    # re: BizFlow extends CRUD  回復(fù)  更多評(píng)論   

    2006-08-07 23:21 by canonical
    @OneEyeWolf
    具體實(shí)現(xiàn)的策略就是 CRUD + Filter, 我已經(jīng)寫得非常清楚.

    我們的bizflow實(shí)現(xiàn)是基于tpl技術(shù)的,而不是使用operator的概念, 那樣太受局限了。

    bizflow是由biz object 驅(qū)動(dòng)的流轉(zhuǎn),而不是由步驟的先后順序驅(qū)動(dòng)的流轉(zhuǎn),所以它不是完整的工作流。

    簡(jiǎn)單的bizflow可以滿足眾多不需要分支的流轉(zhuǎn)需求,這已經(jīng)足夠做一些有意義的事情。

    對(duì)于事件機(jī)制不是設(shè)計(jì)而是描述。

    # re: BizFlow extends CRUD  回復(fù)  更多評(píng)論   

    2006-08-07 23:32 by OneEyeWolf
    基于接口定義不代表就不能基于TPL,如果你的東東做放出來做為組件的話,就必須留有可擴(kuò)展的余地。
      你也很清楚,只有配置文件,并不能解決所有的問題。

      雖然你的思路是對(duì)的,作為應(yīng)用只需要二、八開就足夠了,即只需要滿足80%的需求,就已經(jīng)大大降低了開發(fā)人員的工作量。

      但作為框架或組件的思想,遠(yuǎn)遠(yuǎn)不在于此,而在于可擴(kuò)展。

    # re: BizFlow extends CRUD  回復(fù)  更多評(píng)論   

    2006-08-07 23:43 by canonical
    @OneEyeWolf
    如果你有興趣, 應(yīng)該讀一讀我其他的文章, 以搞清楚我在說些什么.
    http://canonical.blogdriver.com/canonical/961298.html

    operator的設(shè)計(jì)正在于它的可擴(kuò)展性不夠.
    主站蜘蛛池模板: 亚洲中文字幕视频国产| 亚洲另类激情综合偷自拍| 中文字幕在线成人免费看| 亚洲尹人九九大色香蕉网站| 蜜桃视频在线观看免费网址入口| 日本精品久久久久久久久免费| 亚洲VA中文字幕无码一二三区 | 特级做a爰片毛片免费看| 久久青草亚洲AV无码麻豆| 在线成人a毛片免费播放| 国产精品免费久久久久久久久| 亚洲成人网在线观看| 日韩精品成人亚洲专区| 18观看免费永久视频| 日本免费精品一区二区三区| 亚洲人成综合在线播放| 在线观看午夜亚洲一区| 在线a级毛片免费视频| 伊人免费在线观看高清版| 亚洲欧洲专线一区| 男男gay做爽爽的视频免费| 久久综合日韩亚洲精品色| 又黄又爽无遮挡免费视频| 亚洲免费电影网站| 成人网站免费看黄A站视频| 亚洲欧美精品午睡沙发| 在线免费观看亚洲| 亚洲五月综合缴情在线观看| 日韩在线视频免费看| 国产精品视频免费| 国产色无码精品视频免费| 麻豆va在线精品免费播放| www.亚洲日本| 亚洲特级aaaaaa毛片| 亚洲爆乳无码一区二区三区| 国产无遮挡色视频免费视频| 成人a视频片在线观看免费| 95免费观看体验区视频| 嫩草成人永久免费观看| 亚洲人6666成人观看| 亚洲高清在线mv|