<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 閱讀(1666) 評(píng)論(5)  編輯  收藏 所屬分類: Witrix開(kāi)發(fā)平臺(tái)

    ? CRUD(Create Read Update Delete)是一般應(yīng)用程序中最基礎(chǔ)的操作,但是用戶的需求卻很難直接映射到CRUD操作上。例如常見(jiàn)的需求如下:
    ?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én)M的業(yè)務(wù)對(duì)象,角色S處理部門(mén)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的一種限制性描述. 因此通過(guò)如下擴(kuò)展我們可以定義BizFlow的概念: BizFlow = CRUD + Filter. 根據(jù)這種觀念, witrix平臺(tái)中BizFlow被實(shí)現(xiàn)為DaoWebAction的一種無(wú)縫擴(kuò)展.
    ?? 在jsplet框架中我們通過(guò)如下url模式來(lái)訪問(wèn)后臺(tái)的CRUD操作:
    ?? /list.jsp?objectName=MyObj&objectEvent=Query
    為了實(shí)現(xiàn)BizFlow只需通過(guò)spring為DaoWebAction配置一個(gè)xml配置文件, 此后仍然可以通過(guò)
    ??? /list.jsp?objectName=MyObj&objectEvent=Query
    來(lái)訪問(wèn)后臺(tái)的CRUD操作,只是后臺(tái)會(huì)自動(dòng)應(yīng)用配置文件中的 bizId="default", bizActionId="Query-default"等配置項(xiàng).
    如果我們采用如下url來(lái)訪問(wèn)
    ??? /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ú)立的事情,它們并不屬于抽象的工作流模型本身. 理論上說(shuō),一個(gè)業(yè)務(wù)對(duì)象可以同時(shí)參與多個(gè)流程. 在工作流建模中主要通過(guò)流程步驟的先后順序的約束來(lái)描述業(yè)務(wù)進(jìn)程, 處于同一狀態(tài)的業(yè)務(wù)對(duì)象可能處在不同的流程步驟中. 而B(niǎo)izFlow可以看作是狀態(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ù)處理過(guò)程, 而workflow中往往建模的時(shí)候強(qiáng)調(diào)單流程實(shí)例視角,而一般缺乏對(duì)于流程實(shí)例相關(guān)性的描述. 現(xiàn)在國(guó)內(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條分析,并沒(méi)有帶出你下一步是如何設(shè)計(jì)來(lái)應(yīng)對(duì)這些變化與操作的,看不出具體的思路所在。

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

      個(gè)人覺(jué)得設(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)寫(xiě)得非常清楚.

    我們的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,如果你的東東做放出來(lái)做為組件的話,就必須留有可擴(kuò)展的余地。
      你也很清楚,只有配置文件,并不能解決所有的問(wèn)題。

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

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

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

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

    operator的設(shè)計(jì)正在于它的可擴(kuò)展性不夠.
    主站蜘蛛池模板: 成熟女人特级毛片www免费| 亚洲国产高清在线精品一区 | 免费一级国产生活片| 久久久久久久久久国产精品免费| 国产精品亚洲色图| 亚洲成年人电影在线观看| 不卡精品国产_亚洲人成在线| 女人被男人躁的女爽免费视频| 99视频免费播放| 中文成人久久久久影院免费观看| 亚洲国产精品嫩草影院| 亚洲国产精品综合久久久| 亚洲情XO亚洲色XO无码| 亚洲熟妇少妇任你躁在线观看无码 | 亚洲人成网站免费播放| 一区二区三区福利视频免费观看| 久久99久久成人免费播放| 小说专区亚洲春色校园| 亚洲中文字幕久久精品无码A | 日本一区二区三区免费高清| 8x成人永久免费视频| 久久免费线看线看| 国产免费伦精品一区二区三区| 国产亚洲美女精品久久久久| 亚洲av无码有乱码在线观看| 自拍偷区亚洲国内自拍| 久久亚洲精品国产亚洲老地址 | 亚洲人成网亚洲欧洲无码| 亚洲AV无码一区二区三区人| 亚洲综合成人网在线观看| 亚洲AV第一页国产精品| 亚洲AV无码专区国产乱码4SE| 亚洲人成在线播放网站| 亚洲女同成av人片在线观看| 亚洲日韩精品一区二区三区无码| 亚洲日产韩国一二三四区| 久久精品国产69国产精品亚洲| 亚洲午夜福利717| 亚洲成a人片77777kkkk| 亚洲情a成黄在线观看动漫尤物| 久久亚洲国产伦理|