ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>
05òq´çš„æ—¶å€™å¿™ç€å’ŒçŽ°åœ¨çš„è€å©†è°ˆé‚£ä»Žæ¥æ²¡è°ˆ˜q‡è€Œå¯¼è‡´è¿‡åˆ†é¥¥æ¸´çš„æ‹çˆ±åQ?6òq´çš„æ—¶å€™æ–°é…置了机器,忙ç€é€šå…³ä½¿å‘½å¬å”¤å’Œç”ŸåŒ–屿œºï¼›07òq´çš„æ—¶å€™å’Œå¼ 祖良一èµïL¿»è¯?a >AJAXä¼ä¸š¾U§å¼€å?/a>åQŒç¬¬ä¸€‹Æ¡ç¿»è¯‘,忙得åƒé»„牛,慢得åƒèœ—牛,在心里祈¼œøP¼Œ¾˜»è¯‘出æ¥çš„东西ä¸è¢«éª‚ž®±å¥½åQ?8òq´çš„æ—¶å€™å’Œä¸é›ªå³°ã€æ€Õd¸ä»¤åˆä¸€èµïL¿»è¯?a >Springæ”È•¥åQŒç¬¬äºŒæ¬¡¾˜»è¯‘åQŒç†Ÿ¾lƒäº†ä¸€äº›ï¼Œä½†æ˜¯æ¯ä¸€ä¸ªå¥å还是è¦èŠ×ƒ¸Šå¾ˆå¤šæ—‰™—´åQŒå¾ˆå¤šæ—¶å€™è¿˜å¾—一个è¯ä¸€ä¸ªè¯çš„确认,¾˜»è¯‘å¯ÒŽˆ‘æ¥è¯´æ˜¯ä¸ªè‹¦åŠ›‹z»ï¼Œ½W¬ä¸€‹Æ¡ç¿»è¯‘完我就告诉自己ä¸è¦å†ç¿»è¯‘了åQŒä½†æ˜¯Springæ”È•¥¼‹®å®žæ˜¯ä¸€æœ¬å¥½ä¹¦ï¼Œå®Œå…¨æ˜¯ä¹¦æœ¬èínå¸å¼•了我åQŒåŒæ ·åœ¨å¿ƒé‡Œ¼œˆç¥·åQŒä¸è¦ç³Ÿíy‹äº†˜q™æœ¬ä¹¦ã€?9òq´äº†åQŒå’Œè¾›é¹ä¸€èµ·å®Œæˆè¿™æœ¬ã€ŠHead First Process-深入‹¹…出‹¹ç¨‹ã€‹ï¼Œ˜q˜æ˜¯¼œˆç¥·åQŒåƒä¸‡ä¸è¦å†™å‡ºåžƒåœ¾ï¼Œæœ‰æ—¶å€™ï¼Œæˆ‘常惻I¼Œæœ‰å¿…è¦è¿™ä¹ˆè¾›è‹¦å—åQŸæˆ‘是一个喜‹Æ¢æ„淫的人,¾l常ž®±æŠŠæ€çÈA抛到了多òq´ä¹‹åŽï¼Œåœ¨æœªæ¥é‡Œ‹z‹æ´‹è‡ªå¾—åQŒäºŽæ˜¯å›žæ¥æ—¶ž®±æœ‰äº†åŠ¨åŠ›ã€?br />
我负责该书的½W¬ä¸€éƒ¨åˆ†åQŒåŒ…括了工作‹¹çš„æŽ§åˆ¶æ¨¡å¼ã€èµ„æºæ¨¡å¼ã€æ•°æ®æŽ§åˆ¶æ¨¡å¼ä¸Žå¼‚å¸¸å¤„ç†æ¨¡å¼åQŒåŒ…括了对三¿Uæµ½E‹è§„范的介ç»ã€å¯¹å¼€æºå·¥ä½œæµçš„介¾lã€å¯¹jBPM4的分æžã€‚è¾›é¹è´Ÿè´£è¯¥ä¹¦çš„åŽåŠéƒ¨åˆ†åQŒä»–å¯Ò޵½E‹åº”用有ç€éžå¸¸ä¸°å¯Œçš„ç»éªŒï¼Œç›®å‰ä»–æ£åœ¨æå·žå®žæ–½ä¸€ä¸ªBPM的大™å¹ç›®åQŒå…¶ä¸åŒ…括了完整的IBM产å“套äšgåQŒåŒ…括了ä¼ä¸šé›†æˆå’ŒESB。很多ähè®¤äØ“å·¥ä½œ‹¹åªæ˜¯OAåQŒè¿™å…¶å®žæ˜¯ä¸€ä¸ªè¯¯åŒºï¼Œå·¥ä½œ‹¹ç¡®å®žåœ¨OA里应用的éžå¸¸å¤šï¼Œä½†è¿™ä»…ä»…åªæ˜¯ä¸€ä¸ªæ–¹é¢ã€‚说实è¯åQŒæˆ‘å¯ÒŽœ¬ä¹¦ä¹Ÿéžå¸¸çš„æœŸå¾…,éžå¸¸æœŸå¾…è¾›é¹åœ¨ä¹¦ä¸åˆ†äº«ä»–众多的实施ç»éªŒï¼Œä»–是一个éžå¸¸å‹¤å¥‹çš„人,˜q™ç‚¹è®©æˆ‘钦佩䏿¢åQŒå¸¸å¸¸æƒ³åQŒç‰æˆ‘到äº?0多å²åQŒè¿˜ä¼šä¸ä¼šæœ‰ä¸€é¢—勤奋的心ã€?br />
å®¶ä½ç‡•郊åQŒä¸Šç在东直门,æ¯å¤©åœ¨èµ\ä¸Šå››ä¸ªå°æ—Óž¼ŒæŒ¤é‚£ä¼ 说ä¸çš„930åQŒæ—¶å¸¸å®‰æ…°è‡ªå·±ï¼šå“¥æŒ¤çš„䏿˜?30åQŒå“¥æŒ¤çš„æ˜¯å¯‚寞。谢谢è€å©†åQŒå°½½Ž¡è¿˜˜q˜ç€æˆ¿è´·å˜åœ¨ç€å¿ƒç†éšœç¢åQŒä½†æ˜¯è¿˜æ˜¯äؓ我在东直门租了个房ååQŒä¸‹å‘¨è“vž®±å¯ä»¥èµ°è·¯ä¸Šç了åQŒè¿™æ ·ä¹Ÿä¼šæœ‰äº†æ›´å¤šçš„æ—‰™—´æ¥å®Œæˆè¿™æœ¬ä¹¦ã€?br />
˜q˜æ˜¯é‚£å¥è¯ï¼šæˆ˜æˆ˜å…¢å…¢ã€?br />
å一˜q‡å®ŒåQŒå…¬å¸çš„æ–°é¡¹ç›®ä¹Ÿå¼€å§‹äº†åQŒæ—¶ž®šç½‘ç«™ã€‚æŠ€æœ¯æ ˆåŒ…æ‹¬äº†ï¼šOSGIã€JCRã€RESTã€æ¸˜q›å¼å¢žå¼ºã€‚该™å¹ç›®æœ‰ä¸ªå·¨å¤§çš„äº®ç‚¹ï¼Œä¸æ˜¯å¾æ˜Šæ˜¯æˆ‘们的技术leaderåQŒè€Œæ˜¯å¼€å‘äh员ä¸ä¸€åŠæ˜¯å¥³ç”ŸåQŒè¿™æ äh¯å¤©pair的时候就生活在祖国的花å›ä¸äº†ã€?br />
希望能写些有价值的东西åQŒå¾å¾—åˆ˜æ±Ÿçš„åŒæ„åQŒå°†ä¼šåœ¨åšå®¢˜qžè²éƒ¨åˆ†ç« 节。第一部分˜qžè²çš„将是工作æµçš„èµ„æºæ¨¡å¼ï¼Œå†…容包括å‰è¨€ã€åŸºæœ¬æ¦‚å¿üc€åˆ›å»ºæ¨¡å¼ã€æŽ¨æ¨¡å¼ã€æ‹‰æ¨¡å¼ã€è¿‚回模å¼ã€è‡ªåŠ¨å¼€å§‹æ¨¡å¼ã€å¯è§æ€§æ¨¡å¼ã€å¤šèµ„æºæ¨¡å¼ä»¥åŠæœ€åŽçš„ž®ç»“ã€‚é™äºŽç¯‡òq…,ž®†ä¼šåˆ†èŠ‚˜q›è¡Œ˜qžè²ã€‚考虑到å¤åˆ‰™º»çƒ¦ï¼Œž®†ä¼šåœ?a >开放浽E‹ç¤¾åŒ?/a>˜qžè²æ‰€æœ‰å†…容,åšå®¢ä¼šè¿žè½½æ¦‚è¦åƈæä¾›é“¾æŽ¥ã€?br />
ç›®æ ‡åQ?/font> jBPM-side ProcessDesigner是一个独立的设计器,åŸÞZºŽ Flex技术。其目的在于既ä‹É得程åºå¼€å‘äh员能够基于其˜q›è¡Œä¸šåŠ¡‹¹ç¨‹çš„徿¨¡ï¼ŒåŒæ—¶ä¸šåŠ¡äººå‘˜ä¹Ÿèƒ½å¤ŸåŸºäºŽå…¶˜q›è¡Œ½Ž€å•的建模和修改,例如修改节点的顺åºã€å‚ä¸Žè€…ç‰æ“作。æ¤å¤–, jBPM-side ProcessDesignerå…ähœ‰å¾ˆé«˜çš„å¯é…置性,在浽E‹å®šä¹?/font> schemeå˜åŒ–的情况下åQŒèƒ½å¤Ÿå¾ˆå¿«çš„åšå‡ºé€‚é…。å³å…¶ä¸Žå…·ä½“的浽E‹å®šä¹‰è¯a€æ— å…³åQŒå¯ä»¥å¯¹ jPDLã€?/font> XPDLã€?/font> BPELéƒ½è¿›è¡Œå¾æ¨¡ã€?/font> jBPM-side ProcessDesignerçš„æ•°æ®æ ¸å¿ƒæ˜¯ xmlã€?/font>
功能规划åQ?/font>
一ã€?/span> 囑ÖŞ建模
支挋¹ç¨‹æ¨¡åž‹ä¸Žå›¾å½¢å…ƒç´ 的一一对应åQŒæ”¯æŒé€šè¿‡å›‘ÖÅžå…ƒç´ æ¥è¿›è¡Œæµ½E‹çš„建模。浽E‹æ¨¡åž‹ä¸Žå›‘ÖÅžå…ƒç´ ä¹‹é—´é€šè¿‡ xml˜q›è¡Œäº’相转æ¢ã€‚图形徿¨¡æ–¹é¢ï¼Œæ”¯æŒå›‘ÖÅžå…ƒç´ çš„æ‹–æ‹½ã€å®šä½ã€å¤åˆ¶ã€ç²˜è´ß_¼Œæ”¯æŒå¿«æ·é”®æ“作,例如 do/undoã€?/font> deleteã€?/font>
二ã€?/span> ‹¹ç¨‹å‚与者的适é…导入
支æŒåœ¨è¿›è¡Œæµ½E‹å¾æ¨¡æ—¶åQŒé€‚é…导入‹¹ç¨‹å‚与者。在˜q›è¡Œäººå·¥å‚与节点定义æ—Óž¼Œé€‰æ‹©å‚与者。进行ähå‘?/font> /部门 /è§’è‰²çš„æœ¬åœ°å¾æ¨¡ï¼Œæä¾›æœ€½Ž€å•的必需属性ã€?/font>
三ã€?/span> 囑ÖŞ展现ä¸?/font> xml¾~–辑的互相切æ?/font>
支挋¹ç¨‹å›‘ÖÅžä¸?/font> xml¾~–辑的切æ¢ï¼Œæ”¯æŒ xml定义的本地导入和导出ã€?/font>
å››ã€?/span> ‹¹ç¨‹çš„分包与版本½Ž¡ç†
支挋¹ç¨‹å®šä¹‰çš„分包和版本½Ž¡ç†åQŒéœ€è¦æœåŠ¡å™¨ç«¯çš„æ”¯æŒã€?/font>
五ã€?/span> 与æœåŠ¡å™¨ç«¯çš„˜qœç¨‹è°ƒç”¨
åœ¨æ”¯æŒæœåŠ¡å™¨ç«¯çš„˜qœç¨‹è°ƒç”¨ä¹‹å‰åQ?/font> jBPM-side ProcessDesigner仅仅是本åœ?/font> xmlçš„å¯¼å…¥å¯¼å‡ºå¾æ¨¡ã€‚采ç”?/font> restful-wsåQŒåŸºäº?/font> xml在æœåŠ¡å™¨ä¸Žè®¾è®¡å™¨ä¹‹é—´ä¼ é€’æ•°æ®ã€?/font>
å…ã€?/span> 与业务适é…çš?/font> DSL
七ã€?/span> ‹¹ç¨‹çš„æƒé™ç®¡ç?/font>
支æŒå¯Ò޵½E‹å®šä¹‰çš„分类æƒé™½Ž¡ç†åQŒä¸åŒä¸šåŠ¡éƒ¨é—¨å¯¹å±žäºŽè‡ªå·±çš„æµ½E‹å®šä¹‰æœ‰å„è‡ªçš„ç®¡ç†æƒé™ã€‚æ¤åŠŸèƒ½ç‹¬ç«‹ä¸?/font> jBPM-side ProcessDesigneråQŒä½†æ˜¯éœ€è¦é€šè¿‡å¥‘约使得 jBPM-side ProcessDesignerå¯Ò޵½E‹å®šä¹‰çš„展现˜q›è¡Œ˜q‡æ×oã€?/font>
在拥挤的公交车上è¯Õd®Œã€Šå·¥ä½œæµ½Ž¡ç†(æ¨¡åž‹ã€æ–¹æ³•å’Œ¾pÈ»Ÿ)》,自从æ¬å®Œå®Óž¼Œä¸Šççš„èµ\途çªç„¶å˜å¾—饘qœã€?/p>
˜q™æœ¬ä¹¦ç¡®å®žæ˜¯æŒ‰ç…§å®ƒçš„å‰¯æ ‡é¢˜ç»„¾l‡çš„åQŒåˆ†åˆ«ä»‹¾l工作æµçš„徿¨¡æ¨¡åž‹ã€åº”用工作æµå¼€å‘çš„æ–ÒŽ³•以åŠéƒ¨åˆ†å•†ä¸šçš„工作æµäº§å“ã€?br />
对petri¾|‘çš„ä»‹ç»æ˜¯è¿™æœ¬ä¹¦çš„é‡ç‚¹ï¼Œå¦‚果惛_¯¹petri¾|‘有个大概的了解而åˆä¸æ„¿æ„接触深奥的数å¦åQŒé‚£ä¹ˆå¯ä»¥ä¸€è¯…R€‚本书éšåŽåˆ†æžäº†å¦‚何å¯Ò޵½E‹æ¨¡åž‹è¿›è¡Œåˆ†
æžï¼ŒåŒ…æ‹¬å¯¹å¾æ¨¡æ£¼‹®æ€§ä¸Žå¦çš„定é‡åˆ†æžä»¥åŠå¯¹èµ„æºè¿è¡Œæ•ˆçŽ‡çš„å®šæ€§åˆ†æžã€‚至于介¾l的工作‹¹äñ”å“ï¼Œå› äØ“òq´ä»£ä¹…远åQŒå¯è¯ÀL€§ä¸é«˜ã€‚应用工作æµå¼€å‘çš„æ–ÒŽ³•ž®±æ›´æ˜¯ç†è®?
了,ä¸è¿‡ä½œäؓ一æœ?000òq´çš„ä¹¦ï¼Œé‡Œé¢æåˆ°çš„ä¸€äº›åŽŸåˆ™è¿˜æ˜¯å¾ˆæœ‰æ•æïLš„æ„æ€ï¼Œä¾‹å¦‚和客户在一赗÷€è„P代开å‘ã€äº¤‹¹çš„é‡è¦æ€§ç‰½{‰ã€?/p>
è¯Õd®Œ˜q™æœ¬ä¹¦ï¼ŒåŠ ä¸Šå…ˆå‰çš„范玉顺的书åQŒçªç„¶å°±æ˜Žç™½ä¸ÞZ»€ä¹ˆBPEL会如æ¤ä¹‹‹¹è¡ŒåQŒåŽŸå› åœ¨äºŽå®ƒä»¬éƒ½éžå¸¸å¼ø™°ƒBPR的概念,å³ä¸šåŠ¡æµ½E‹é‡¾l„。也ž®±æ˜¯ä»Žä¸€å¼€å§‹ï¼Œå·¥ä½œ
‹¹ç³»¾lŸå°±æ˜¯çž„准BPR˜q™ä¸ªç›®æ ‡æ¥çš„åQŒæƒ³åˆ©ç”¨å·¥ä½œ‹¹ç³»¾lŸå°†æ•´ä¸ªä¼ä¸šçš„业务浽E‹éƒ½½Ž¡ç†èµäh¥ã€‚ç›®æ ‡å¦‚æ¤è¿œå¤§ï¼Œæ•´åˆè‡ªç„¶æ˜¯ä¸èƒ½é¿å…,整åˆåŒ…括了对人员的整åˆï¼Œä¹ŸåŒ…
括了对IT¾pÈ»Ÿçš„集æˆã€‚如æ¤ä»¥æ¥ï¼Œæç„¶å¤§æ‚ŸåQšBPEL˜q™ç§å¼ø™°ƒæœåС集æˆçš„æ‰§è¡Œè¯a€æ— 怪乎会大¾U¢å¤§ç´«äº†ã€‚至于说国内最普é的工作æµåº”用åQšå°†å·¥ä½œ‹¹å¼•擎嵌入应
用系¾lŸä¸åQŒåˆ†¼›ÀLµ½E‹é€»è¾‘与业务逻辑åQŒåˆ™è‡ªç„¶ç™ÖM¸äº†å¤§é›…ä¹‹å ‚äº†ã€‚ä¸€å¥è¯è¯ß_¼Œž®±æ˜¯å›½å†…应用工作‹¹çš„层次太低。或者å˜q‡æ¥ä¹Ÿå¯ä»¥ç†è§£ï¼šçŽ°åœ¨çš„æ‰€è°“BPM软äšg都眼
高手低,ä¸å¤ªé€‚åˆå›½å†…的应用ã€?/p>
坿˜¯é—®é¢˜ä¾æ—§å˜åœ¨åQŒå³BPELæ ÒŽœ¬ä¸Šè¯´æ˜¯ä¸€¿U执行è¯a€åQŒè¦ä¸šåŠ¡äººå‘˜ç†è§£½Ž€ç›´æ˜¯å¼ÞZh所难,所以BPMN应è¿è€Œç”Ÿã€‚好å§ï¼ŒBPMN有了åQŒè‡ªç„¶BPMNåˆ?
BPELçš„æ˜ ž®„å°±å‡ºçŽ°äº†ï¼Œå¯æƒœ˜q™ç»ˆ½I¶æ˜¯ä¸€åŽ¢æƒ…æ„¿ï¼Œä¸€¿U是业务建模è¯è¨€åQŒä¸€¿U是计算机执行è¯a€åQŒä¸é—´çš„代沟æ¯?0ã€?0˜q˜å®½ã€‚å°±åƒç§‘比,½‹®ç在他眼里比大‹¹?
˜q˜å¹¿é˜”ã€?/p>
æ¤å¤–åQŒBPEL的应用还å˜åœ¨ä¸€ä¸ªå¤©ç„¶çš„éšœç¢åQŒå³åº”用集æˆä»Žæ¥éƒ½ä¸æ˜¯ä¸€ä»¶è½»æ„¡š„事情。将接å£ç”¨web
service包装一下就SOA了?ž®±é¢å‘æœåŠ¡äº†åQŸè¿™é¬ÆD¯ä½ 也信,那å¯çœŸæ˜¯ä½ æœåŠ¡ï¼Œä½ å…¨å®¶æ‰æœåŠ¡å‘¢ã€‚åº”ç”¨é›†æˆä¸è½ÀL¾åQŒæ‰€è°“çš„ä¼ä¸šæ•æ·æ€§ï¼šèƒ½å¤Ÿæ ÒŽ®å¤–部环境
çš„å˜åŒ–迅速调整æœåŠ¡ç¼–æŽ’æµ½E‹é‚£è‡ªç„¶æ˜¯é•œä¸æœˆåQŒæ°´ä¸èŠ±äº†ã€‚å›ä¸è§åQŒæ— 数程åºå‘˜ä»¬åœ¨å¼€å£å¤§éª‚:é ,‹¹ç¨‹åˆè¦è°ƒæ•´åQŒæ—©åƒå±Žäº†ï¼ŸåQ?/p>
所以结论有�
1ã€å›½å†…的嵌入å¼å·¥ä½œæµåº”用˜q˜æ˜¯ä»€ä¹ˆé€‚用ž®Þq”¨ä»€ä¹ˆå§åQŒå’ŒXPDL\BPELéƒ½æ— å…»I¼›
2ã€ä¸€å¿ƒè¦SOAã€è¦BPEL。那别指望它能凞®‘工作é‡åQŒä¹Ÿåˆ«æŒ‡æœ›æµ½E‹èƒ½å¤Ÿè¿…速修改;
3ã€è¦å¯¹ä¼ä¸šæµ½E‹è¿›è¡Œæ•æïL®¡ç†ï¼Œé‚£å°±è€ƒè™‘文档化,别考虑执行ã€?/p>
大概èŠ×ƒº†ä¸‰å¤©çš„æ—¶é—´è¯»å®Œè¿™æœ¬ä¹¦åQŒä¹¦æœ¬èín也ä¸åŽšï¼Œè¯»è“væ¥å¾ˆå¿«ã€‚这本书出版äº?/span>2001òqß_¼Œæ‰€ä»¥å¯¹å®ƒä¹Ÿæ²¡æœ‰æŠ±æœ‰å¾ˆå¤§çš„æœŸæœ›ï¼Œä½†æ˜¯˜q˜ä¸é”™ï¼Œç‰¹åˆ«æ˜¯å‰ä¸‰ç« åQŒå¾ˆæœ‰äº›æƒŠå–œã€‚åŽé¢å…³äºŽå·¥ä½œæµä»¿çœŸçš„æ˜qîC¹Ÿå¾ˆåˆ°ä½ã€‚但是关于技术实玎ͼŒåˆ™å¤§éƒ½ç•¥˜q‡äº†ã€?/span>
æ€È»“一下里é¢ä¸ªäºø™§‰å¾—ä¸é”™çš„部分ã€?/span>
½W¬ä¸€ç« 很ä¸é”™åQŒå¼ºè°ƒäؓ什么需è¦å·¥ä½œæµ½Ž¡ç†¾pÈ»Ÿã€?/span>
ä¼ä¸š¾lè¥çŽ¯å¢ƒçš„å˜åŒ–:˜q‡åŽ»ä¼ä¸šå¸‚场竞争主è¦å›´ç»•ç€å¦‚何æé«˜ç”Ÿäñ”率进行,现在则是围绕æ–îCñ”å“的竞争而展开。新产å“çš„ähæ ¼æ€ÀL˜¯é«˜äºŽå…¶ähå€û|¼Œé€šè¿‡ç«žäº‰åQŒähæ ¼æ‰é€æ¸æŽ¥è¿‘ä»·å€û|¼Œäº§å“å¤±åŽ»ç‹¬å æœŸï¼ŒåŒæ—¶ä¹Ÿæ„味ç€äº§å“生命周期的结æŸã€‚与产å“生命周期¾~©çŸæ‰€å¯¹åº”的,是客户定制äñ”哿•°é‡çš„å¢žåŠ ã€?/span>
在这¿U情况下åQŒä¼ ¾lŸä¸²è¡Œçš„产å“ç ”åˆ¶ä¼šåšgé•¿äñ”å“的上市旉™—´åQŒåŒæ—¶ä¸²è¡Œè¿‡½E‹ä¹Ÿæ˜¯åœ¨ä¼ä¸šä»¥åŠŸèƒ½äØ“æ ¸å¿ƒåˆ’åˆ†¾l„织机构下的必然产物ã€?/span>
æ•æ·åˆ‰™€ æå‡ºçš„背景åQšç”¨æˆ·éœ€æ±‚å¤šæ ·åŒ–ã€ä¸ªæ€§åŒ–åQŒæ‰€æœ‰ä¼ä¸šéƒ½ž®†å¤„于一¿U连¾l改å˜ã€ä¸å¯é¢„è§çš„市场环境ä¸ï¼Œæ¤æ—¶é—®é¢˜çš„æ ¸å¿ƒåœ¨äºŽæ˜¯å¦æŠ“使œºé‡ã€å¿«é€Ÿå“应市场ã€å¼€å‘新产å“ã€‚æ•æ·åˆ¶é€ çš„åŸºæœ¬æ€æƒ³æ˜¯ï¼Œä¼ä¸šèƒ½å¤Ÿå¯ÒŽŒ¾lå˜åŒ–ã€ä¸å¯é¢„‹¹‹çš„市场需求åšå‡ºå¿«é€Ÿååº”ï¼Œå¼ø™°ƒé¢å‘å¸‚åœºçš„æ•æäh€§ã€‚å®žçŽ°æ•æ·åˆ¶é€ 的关键是对ä¼ä¸š˜q›è¡Œæ•æ·åŒ–æ”¹é€ å’Œé‡ç»„。其ä¸ä¼ä¸šç»„¾l‡ç»“æž„å‘生é‡å¤§çš„å˜åŒ–åQŒä¼ ¾lŸçš„ä¼ä¸š¾l„织¾l“构是功能部门制åQŒå³æŒ‰ç…§ä¸åŒçš„功能和èŒèƒ½è®„¡«‹ä¸åŒçš„部门,上下¾U§ä¹‹é—´åÅžæˆä¸€ä¸ªæ ‘型的¾l“构。这¿U结构的¾~ºç‚¹åœ¨äºŽåQšæ¯ä¸ªå•元都ç”׃¸Šä¸€¾U§çš„功能å•å…ƒ˜q›è¡Œ½Ž¡ç†åQŒå‡ºçŽ°é—®é¢˜æ—¶åQŒæ¯ä¸€¾U§éƒ½ä¼šæŠŠè´£ä“Q推到上一¾U§ï¼Œ˜q™æ ·ä¼šé€ æˆéƒ¨é—¨èŒè´£ä¸æ¸…。柔性底åQŒä¸€ä¸ªç”Ÿäº§æµ½E‹å¾€å¾€è·¨è¶Šå¤šä¸ªéƒ¨é—¨åQŒéƒ¨é—¨ä¹‹é—´çš„åè°ƒæˆæœ¬å¾ˆé«˜åQŒæ‰¯çš®ã€‚需è¦å¾ç«‹è“vé¢å‘‹¹ç¨‹çš„组¾l‡æœºæž„,按照ä¼ä¸šè¦å®žçŽ°çš„ä¸»è¦ä¸šåŠ¡‹¹ç¨‹æ¥é…¾|®ç»„¾l‡æœºæž„,以项目楾l„织人员åQŒå‡ž®‘内部ä¸å¿…è¦çš„æ²Ÿé€šåè°ƒæˆæœ¬ï¼Œæé«˜å¯¹å¸‚场的å“应速度ã€?/span>
ç”±æ¤åQŒéœ€è¦å·¥ä½œæµ¾pÈ»Ÿæ¥å¯¹ä¼ä¸šçš„æµ½E‹è¿›è¡Œåˆ†æžå’Œæ¢³ç†ã€‚ç„¶åŽå›´¾l•这些浽E‹æ¥˜q›è¡Œä¼ä¸šçš„业务釾l„和攚w€ ã€?/span>
½W¬äºŒç« 的亮点在于如何实施工作‹¹ç³»¾lŸã€?/span>
工作‹¹çš„实施ä¸åŒäºŽæ™®é€šçš„业务处熾pÈ»ŸåQŒå®ƒé¦–先需è¦åœ¨æˆ˜ç•¥å±‚次上对ä¼ä¸šçš„ä¸šåŠ¡ç›®æ ‡è¿›è¡Œåˆ†æžï¼Œ¼‹®å®šä¼ä¸šçš„æˆ˜ç•¥ç›®æ ‡å’Œ¾l„ç»‡è¦æ±‚åQŒç„¶åŽå†˜q›å…¥åˆ°å…·ä½“的实施阶段åQŒåˆ†ä¸ÞZ¸‰ä¸ªé˜¶ŒDµï¼šæ¨¡åž‹å»ºç«‹é˜¶æ®µã€æ¨¡åž‹å®žä¾‹åŒ–阶段和模型执行阶ŒDüc€‚实施工作æµçš„目的在于æé«˜ä¼ä¸šçš„æŸ”性,能够æ ÒŽ®å¸‚场的å˜åŒ–䏿–改˜q›å…¶ä¸šåŠ¡‹¹ç¨‹ã€‚å…¶ä¸ä½œè€…强调了工作‹¹çš„两个é‡è¦èŒè´£åQšé›†æˆå’Œä»¿çœŸã€‚工作浾pÈ»Ÿæœ¬èínæ˜¯ä¸€ä¸ªå®Œæˆæµ½E‹å¾æ¨¡å’Œ‹¹ç¨‹½Ž¡ç†çš„èÊYä»¶ç³»¾lŸï¼Œä½†æ˜¯ä¸ÞZº†åœ¨ä¼ä¸šçš„实际业务ä¸å¾—到有效的应用åQŒå®ƒå¿…须和ä¼ä¸šå·²æœ‰çš„æˆ–è´ä¹°çš„其他业务¾pÈ»Ÿå®žçް集æˆåQŒé€šè¿‡é›†æˆæ¥æé«˜æ•´ä¸ªä¼ä¸?/span> 的应用水òq›_’Œåº”用效率ã€?/span>
½W¬ä¸‰ç« 分æžå·¥ä½œæµ¾pÈ»Ÿçš„组æˆä»¥å?/span>WFMC定义的五个接å£ã€‚很清晰ã€?/span>
½W¬å››ç« 到½W¬å…«ç« æ˜q°å…·ä½“商业äñ”å“的大概技术实现ã€?/span>XPDL规范和分布å¼çš„工作æµåQŒç”±äºŽçŽ°åœ¨å·²¾l是B/S软äšg的天下,所以里é¢çš„分布å¼åœ¨˜q™é‡Œæ˜‘Ö¾—ç†æ‰€å½“然。这部分å¯ä»¥è·Œ™¿‡ã€?/span>
½W¬ä¹ç« 讲˜qîC½œè€…实现的一个工作浾pÈ»ŸCIMFlow。亮点在于分布å¼å·¥ä½œ‹¹æœºçš„设计方案ã€?/span>
æ ¸å¿ƒæ€æƒ³æ˜¯ï¼šå¤šä¸ªå·¥ä½œ‹¹æœºåˆ†é…¾l™å¤šä¸ªéƒ¨é—¨ï¼Œä¸Žè¿™ä¸ªéƒ¨é—¨ç›¸å…³çš„‹¹ç¨‹æˆ–æµ½E‹èŠ‚ç‚¹å°±ç”Þp¿™ä¸ªéƒ¨é—¨ä¸“属的工作‹¹æœºæ‰§è¡ŒåQŒéƒ¨é—¨å¯ä»¥å„自独立修改这些浽E‹æˆ–‹¹ç¨‹èŠ‚ç‚¹ã€‚å¦å¤–äØ“äº†é›†ä¸ç®¡ç†ï¼Œå†è®¾¾|®ä¸€ä¸ªä¸»æŽ§å·¥ä½œæµæœºï¼Œé›†ä¸½Ž¡ç†˜q™äº›éƒ¨é—¨å·¥ä½œ‹¹æœºã€‚è¿™æ ·å¯ä»¥æé«˜æµ½E‹çš„æŸ”æ€§ã€‚å¾ˆèµžçš„æ€æƒ³åQŒä½†æ˜¯å®žçŽ°æ— ç–‘å¤æ‚了ã€?/span>
½W¬åç« è®²å¦‚ä½•åœ¨ä¼ä¸šæµ½E‹é‡¾l„ä¸åº”用工作‹¹ã€‚å¶è§‰å¾—åQŒè¿™æœ¬ä¹¦ä¸€æ—¦ä¸Šå‡åˆ°ä¼ä¸š˜qè¥çš„层‹Æ¡è®²è§£å·¥ä½œæµåQŒé©¬ä¸Šå°±å¾ˆèµžäº†ï¼ŒO(∩_∩)O~。其ä¸å…³äºŽæµ½E‹ä»¿çœŸéƒ¨åˆ†å¾ˆæ˜¯å¥½çœ‹ï¼Œé¢ 覆了自己对‹¹ç¨‹ä»¿çœŸçš„è§‚ç‚V€‚以å‰è®¤ä¸ºæ˜¯‹¹ç¨‹ä»¿çœŸæ˜¯ç¡®ä¿æµ½E‹å¾æ¨¡çš„逻辑æ£ç¡®åQŒå±žäºŽèÊYä»¶æµ‹è¯•çš„èŒƒç•´ã€‚è¿™é‡Œçš„ä»¿çœŸå´æ˜¯ä¸ÞZ¼ä¸šå†³½{–æä¾›æ•°æ®ã€‚éœ€è¦æ³¨æ„的是对资æºçš„定义。资æºåŒ…括了人ã€ä¸šåŠ¡ç³»¾lŸã€è¿è¥æˆæœ¬ç‰½{‰ï¼Œå¾ˆå¹¿ä¹‰çš„æ¦‚念ã€?/span>
最åŽä¸€ç« 冋ơ强调工作æµé›†æˆèƒ½åŠ›çš„é‡è¦æ„义。丼›è®©æˆ‘想起了BPELã€?/span>
åˆä¸Šä¹¦ï¼Œæˆ‘想åQŒè¿™æ˜¯åœ¨è®²å·¥ä½œæµå—,( âŠ?/span>oâŠ?/span> )?åQŒå’‹å’Œæˆ‘å°è±¡ä¸çš„工作‹¹ä¸ä¸€æ ·å“©ã€‚我惻I¼Œä½œè€…æ›´å¼ø™°ƒçš„应该是一¿U高端的业务‹¹ç¨‹½Ž¡ç†åQŒå®ƒæ—¢ä¸æ˜¯çŽ°æœ‰çš„å·¥ä½œ‹¹ã€ä¹Ÿä¸æ˜¯BPM软äšgåQŒç„¶è€Œåˆä¸æ˜¯BPGåQŒå› 为它½Ž¡ç†çš„æµ½E‹æ˜¯å¯ä»¥é©¬ä¸Šæ‰§è¡Œçš„。åªèƒ½è¿™ä¹ˆæƒ³åQŒä½œä¸?/span>7òq´å‰ä½œè€…对工作‹¹çš„ç†è§£åQŒæœŸæœ›å¤ªå¤šã€?/span>
如果有电å版åQŒå€¼å¾—一读,如果买纸版,ž®±æ²¡æœ‰å¿…è¦äº†ã€?/span>
一�span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
从用æˆïLš„角度分æžå·¥ä½œ‹¹ç³»¾lŸçš„¾l„战q™é‡Œçš„用户分ä¸ÞZ¸¤¾c»ï¼šä¸€¾cÀL˜¯åº”用¾pÈ»Ÿå¼€å‘ähå‘˜ï¼ˆä»¥åŽ½Ž€¿U°å¼€å‘äh员)åQŒä¸€¾cÀL˜¯åº”用¾pÈ»Ÿçš„æœ€¾lˆç”¨æˆøP¼ˆä»¥å޽ހ¿U°æœ€¾lˆç”¨æˆøP¼‰ã€‚对于最¾lˆç”¨æˆ¯‚€Œè¨€åQŒå·¥ä½œæµ¾pÈ»Ÿå¾€å¾€æ˜¯ä¸èƒ½ç›´æŽ¥ä‹É用的åQŒå®ƒéœ€è¦ç”±IT部门的开å‘äh员嵌入到应用¾pÈ»Ÿä¸ã€‚å¼€å‘ähå‘˜æ‰æ˜¯å·¥ä½œæµ¾pÈ»Ÿçš„直接ä‹É用者,˜q™é€ æˆäº†é—®é¢˜ï¼šå·¥ä½œ‹¹ç³»¾lŸæ›´å¤šå…³æ³¨äºŽå¼€å‘äh员的需求,例如如何快速开å‘ã€å¦‚何更好的嵌入业务逻辑½{‰ç‰åQŒè€Œæœ€¾lˆç”¨æˆïLš„需求被或多或少的忽略了ã€?/span>
˜q™é‡Œä»Žæœ€¾lˆç”¨æˆïLš„角度˜q›è¡Œåˆ†æžã€?/span>
1�span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
é¢å‘å¼€å‘äh员的‹¹ç¨‹è®¾è®¡å™?/span>
最¾lˆç”¨æˆ·é€šè¿‡‹¹ç¨‹è®¾è®¡å™¨å¯¹ä¸šåŠ¡‹¹ç¨‹˜q›è¡Œæè¿°åQŒå®žé™…是一个浽E‹å¾æ¨¡çš„˜q‡ç¨‹ã€‚ç†è®ÞZ¸ŠåQŒä¸šåŠ¡åˆ†æžå¸ˆå®Œæˆ˜q™ä¸ªä¸šåŠ¡‹¹ç¨‹å»ºæ¨¡çš„过½E‹ï¼Œòq¶ä¸”业务分æžå¸ˆå¾€å¾€è¢«å‡å®šäØ“éžæŠ€æœ¯äh员。对于业务分æžè€Œè¨€åQŒæµ½E‹å¾æ¨¡é€šå¸¸æ˜¯æŠ½è±¡çš„åQŒä¸€å®šç¨‹åº¦ä¸Šæ˜¯æ¨¡¾pŠçš„åQŒå¾æ¨¡çš„目的在于通过囑ÖÅžçš„åÅžå¼å‘å…¶ä»–äºø™§£é‡Šä¸€ä¸ªä¸šåŠ¡çš„˜q‡ç¨‹åQŒå›¾å½¢åªæ˜¯ä¸€¿Uæ–¹å¼ï¼Œé‡‡ç”¨å®ƒåªæ˜¯å®ƒæ›´æ˜“于ç†è§£å’Œæ˜“于沟通,实际¾cÖM¼¼äº?/span>DSL。实际上ä¼ä¸šçš„è§„ç« åˆ¶åº¦ã€æ–‡å—æ˜q°çš„æ‰§è¡Œ‹¹ç¨‹éƒ½æ˜¯å¯¹ä¸šåŠ¡æµ½E‹å…·ä½“çš„æè¿°æ–¹å¼ã€?/span>
对于工作‹¹è€Œè¨€åQŒè¿™ä¸ªå¾æ¨¡æ‰€äº§ç”Ÿçš„æµ½E‹æ˜¯éœ€è¦è¢«å¼•擎执行的。这ž®Þp¦æ±‚æµ½E‹ä¸æ¯ä¸€ä¸ªèŠ‚ç‚¹çš„å®šä¹‰éƒ½æ˜¯è¦æœ‰æ˜Žç¡®å«ä¹‰çš„,它需è¦è¢«è®¡ç®—机明¼‹®è€Œå‡†¼‹®çš„è§£é‡Šã€‚åŒæ—Óž¼Œå‡ÞZºŽé›†æˆä¸šåŠ¡¾pÈ»Ÿçš„需è¦ï¼Œ‹¹ç¨‹æ¨¡åž‹å®šä¹‰å¾€å¾€å¸¦æœ‰å¾ˆå¤šé¢å¤–的属性ã€?/span>
所以现实ä¸çš„æµ½E‹è®¾è®¡å™¨å¾€å¾€å±žæ€§é…¾|®ç¹å¤šã€‚导致最¾lˆç”¨æˆ·åœ¨æ‰“å¼€è®¾è®¡å™¨åŽæ ÒŽœ¬æ— ä»Žä¿®æ”¹å’Œå¾æ¨¡ï¼Œä»–需è¦å…³æ³¨å¾ˆå¤šä¸Žä¸šåŠ¡æ— å…³çš„é…¾|®ï¼Œæ— æ„ä¸çš„修改往往产生‹¹ç¨‹æ— 法˜qè¡Œçš„åŽæžœã€?/span>
2�span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
工作™å¹åˆ—è¡?/span>
å³ä“Q务列表。工作浾pÈ»Ÿé€šè¿‡å·¥ä½œ™å¹åˆ—表进行ähå·¥ä“Q务的分é…。最¾lˆç”¨æˆ·é€šè¿‡è¯¥åˆ—è¡¨ç¾æ”¶ã€å¤„ç†æ¯å¤©çš„工作åQŒå·¥ä½œä»¥å·¥ä½œ™å¹çš„å½¢å¼å±•现。对于工作项åQŒç”¨æˆähœ‰ç€å¤šç§ä¸šåŠ¡æ“作åQšç¾æ”¶ã€å®Œæˆæäº¤ã€æ”¶å›žã€å›žé€€½{‰ç‰ã€‚对于分é…给他äh的工作项åQŒä¹Ÿå˜åœ¨ç€å¤šç§ä¸šåŠ¡æ“作åQšå‚¬åŠžã€æé†’ã€æ—¶é—´é™å®šç‰½{‰ã€?/span>
3�span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
‹¹ç¨‹˜q½è¸ª
用户在处ç†å·¥ä½œé¡¹æ—Óž¼Œå¯¹è¯¥å·¥ä½œåœ¨æµ½E‹ä¸æ‰€å¤„çš„ä½ç½®˜q›è¡ŒæŸ¥çœ‹åQŒäº†è§£å½“剿µ½E‹çš„状æ€å’Œæ‰§è¡Œæƒ…况。一般情况下åQŒæµ½E‹è¿½ítªä»¥å›‘ÖŞ化的方å¼å±•现。用户通过ä¸åŒçš„å›¾æ ‡å’Œæ ‡ç¤ºæ¥åŒºåˆ†æµ½E‹ä¸å„个节点的状æ€å’Œå‚与者信æ¯ã€?/span>
4�span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
‹¹ç¨‹å®žä¾‹½Ž¡ç†
包括‹¹ç¨‹å®žä¾‹ã€èŠ‚ç‚¹å®žä¾‹ã€å·¥ä½œé¡¹å®žä¾‹çš„管ç†ã€‚改å˜çжæ€ï¼ŒåŒ…括了挂赗÷€é‡æ–°å¯åЍã€ç»ˆæ¢ã€èŸ©è½¬ç‰½{‰ã€‚主è¦ç›®çš„在于对‹¹ç¨‹äºÞZؓ执行错误˜q›è¡Œäººå·¥òq²é¢„以åŠå¯Ò޵½E‹ä¿¡æ¯çš„监控ã€?/span>
二�span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
¾pÈ»Ÿæž¶æž„
从用æˆïLš„角度分æžå®Œå·¥ä½œæµ¾pÈ»Ÿçš„组æˆï¼Œ˜q™é‡Œä»Žå¼€å‘äh员的角度分æžå·¥ä½œ‹¹ç³»¾lŸçš„æž¶æž„。系¾lŸæž¶æž„里的æ¯ä¸€éƒ¨åˆ†æ˜¯å¦‚ä½•ä¸Žç”¨æˆ·ä½¿ç”¨çš„éƒ¨åˆ†è¿›è¡Œå¯¹åº”ï¼Œä»¥åŠæ¯ä¸€éƒ¨åˆ†åœ¨å®žçŽ°æ—¶éœ€è¦æ³¨æ„的事项ã€?/span>
1�span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
整体构æˆ
如图åQŒå„模å—分层¾l„织åQŒä½äºŽä¸Šå±‚的模å—ä¾èµ–于底层的模å—。æ£å¦‚ä½ æ‰€çœ‹åˆ°çš„ï¼Œ‹¹ç¨‹å®šä¹‰æ¨¡åž‹ä½äºŽæ•´ä¸ªå·¥ä½œ‹¹ç³»¾lŸçš„æœ€ä½Žå±‚åQŒå› 为它是整个工作浾pÈ»Ÿçš„基¼‹€ã€?/span>
‹¹ç¨‹å®šä¹‰æ¨¡åž‹åQšå®šä¹‰å¯¹‹¹ç¨‹˜q›è¡Œæè¿°çš„æ‰€æœ‰å¯¹è±¡ã€‚å› ä¸ºå¯¹‹¹ç¨‹˜q›è¡Œæè¿°çš„æœ¬è´¨å°±æ˜¯åˆ©ç”¨è¿™äº›æ¨¡åž‹è¿›è¡Œå¾æ¨¡ï¼Œæ‰€ä»¥è¿™äº›æ¨¡åž‹å¯¹è±¡çš„实现直接军_®šç€å·¥ä½œ‹¹ç³»¾lŸå¯¹‹¹ç¨‹çš„æ˜q°èƒ½åŠ›ã€?/span>
¾l„织¾l“构适é…器:工作‹¹ç³»¾lŸåœ¨ä¸Žä¸šåŠ¡ç³»¾lŸè¿›è¡Œé›†æˆæ—¶åQŒéœ€è¦è¿›è¡Œç»„¾l‡é€‚é…åQŒé€šè¿‡˜q™ä¸€˜q‡ç¨‹ž®†ä¸šåŠ¡ç³»¾lŸé‡Œçš„组¾l‡æœºæž„导入到工作‹¹ç³»¾lŸé‡Œã€‚具体实现时åQŒå·¥ä½œæµ¾pÈ»Ÿéœ€è¦å¾ç«‹è“v自己的组¾l‡æœºæž„模型(包å«åœ¨æµ½E‹å®šä¹‰æ¨¡åž‹é‡ŒåQ‰ï¼Œè¦é€‚应多ç§ä¸šåŠ¡¾pÈ»ŸåQŒå¾€å¾€éœ€è¦å¾ç«‹å¤šå¥—模型,æ ÒŽ®å…·ä½“情况˜q›è¡Œåˆ‡æ¢ã€‚æœ‰å¤šç§æ–¹å¼å®Œæˆ˜q™ä¸ªé€‚é…åQŒæœ€½Ž€å•çš„æ–¹å¼æ˜¯åˆ©ç”?/span>SQLé…ç½®è¯Õd–数殘q›è¡Œè¯ä¹‰è½¬æ¢ã€?/span>
‹¹ç¨‹è®¾è®¡å™¨ï¼šä¾›ç”¨æˆ·ä‹É用的å¯è§†åŒ–图形工兗÷€‚毿U图形都对应ç€ä¸€¿Uæµ½E‹å®šä¹‰æ¨¡åž‹ã€‚具体的实现æœ?/span>Swingã€?/span>SWTåQŒä½†æ˜¯åŸºäº?/span>AJAXçš?/span>WEBè®¾è®¡å™¨æ— ç–‘ä¼šæä¾›æ›´å¥½çš„å¯ç”¨æ€§ã€?/span>
‹¹ç¨‹æ‰§è¡Œå¼•擎åQšå°†‹¹ç¨‹å®šä¹‰æ¨¡åž‹è§£é‡Šä¸ºæµ½E‹å®žä¾‹æ¨¡åž‹ã€‚利用这些浽E‹å®žä¾‹æ¨¡åž‹å®Œæˆæµ½E‹çš„调度和执行。在工作‹¹ç³»¾lŸé‡ŒåQŒæ‰§è¡Œå¼•擎是整个¾pÈ»Ÿçš„æ ¸å¿ƒã€‚实现时ä¸ä»…需è¦è€ƒè™‘å„ç§‹¹ç¨‹è°ƒåº¦çš„实玎ͼŒ˜q˜è¦è€ƒè™‘执行的效率ã€ç¼“å˜ã€æ—¥å¿—牽{‰ã€?/span>
工作™å¹å¼•擎:解æžå‚与者定义模型和工作™å¹å®šä¹‰æ¨¡åž‹ï¼Œç”Ÿæˆç›¸åº”的工作项。对用户对工作项的æ“作作出å“应ã€?/span>
WEB应用åQšå·¥ä½œæµ¾pÈ»Ÿçš?/span>WEB展现。包括了工作™å¹åˆ—è¡¨ã€æµ½E‹è¿½ítªä»¥åŠæµ½E‹å®žä¾‹ç®¡ç†çš„æ“ä½œå’Œæ˜¾½Cºã€?/span>
‹¹ç¨‹ä»¿çœŸåQšå¯¹å»ºç«‹å¥½çš„‹¹ç¨‹æ¨¡åž‹˜q›è¡Œ˜q行仿真åQŒæ¨¡æ‹Ÿæµ½E‹æ¨¡åž‹çš„æ‰§è¡Œ˜q‡ç¨‹ã€‚目的在于å‘现浽E‹å¾æ¨¡è¿‡½E‹ä¸çš„ç–æ¼ï¼Œå‘现由æ¤å¯ÆD‡´çš„æµ½E‹ä¸èƒ½è¿è¡Œã€?/span>
æ—‰™—´æœåŠ¡åQšæä¾›å¯¹æ•´ä¸ª‹¹ç¨‹å®žä¾‹æ‰§è¡Œæ—‰™—´å’Œä“Q务执行时间的控制åQŒæ ¹æ®è§„则触å‘相应的旉™—´äº‹äšgåQŒä¾‹å¦‚ä“Q务超时ã€ä“Q务预è¦ç‰½{‰ã€‚æ ¹æ®è§„则自动触å‘å¯åŠ¨æ–°çš„æµ½E‹å®žä¾‹ã€?/span>
业务集æˆåQšæä¾›å·¥ä½œæµ¾pÈ»Ÿä¸Žä¸šåŠ¡ç³»¾lŸçš„å¥‘åˆæ–¹å¼ã€‚典型的实现包括通过注册事äšg监å¬å™¨å’Œæä¾›æŽ¥å£æŠ½è±¡¾c»è°ƒç”¨ä¸šåŠ¡ç³»¾lŸä»£ç ã€æä¾?/span>API¾l™ä¸šåŠ¡ç³»¾lŸè°ƒç”¨ã€å·¥ä½œé¡¹é©±åŠ¨ä¸šåŠ¡è¡¨å•和脚本引擎执行业务逻辑脚本½{‰ç‰ã€‚特定于工作™åšw©±åŠ¨ä¸šåŠ¡è¡¨å•,为方便开å‘,¾l大多数的工作æµåŽ‚å•†éƒ½æä¾›äº†ç”µå表å•的实现ã€?/span>
2�span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
åŸÞZºŽäº‹äšg的浽E‹æ‰§è¡Œå¼•æ“?/span>
‹¹ç¨‹æ‰§è¡Œå¼•擎的主è¦èŒè´£å°±æ˜¯è´Ÿè´£æµ½E‹çš„调度和执行ã€?/span>
首先需è¦å°†‹¹ç¨‹å®šä¹‰æ¨¡åž‹è§£é‡Šä¸ºæµ½E‹å®žä¾‹æ¨¡åž‹ï¼Œåœ¨å®šä¹‰æ¨¡åž‹å’Œå®žä¾‹æ¨¡åž‹ä¹‹é—´å»ºç«‹èµ·å¯¹åº”å…³¾p…R€‚一个简å•的对应关系如下图所½Cºï¼š
执行引擎ž®†æµ½E‹å®šä¹‰æ¨¡åž‹çš„属性读å–到相应的实例模型里åQŒç”±å®žä¾‹æ¨¡åž‹å®Œæˆ‹¹ç¨‹çš„调度和执行。当ç„Óž¼Œä¸Šå›¾åªæ˜¯ä¸€ä¸ªç®€å•çš„æè¿°åQŒå®žé™…情况è¦å¤æ‚的多åQŒç‰¹åˆ«æ˜¯èŠ‚ç‚¹å®šä¹‰åQ?/span>ActivityDefinitionåQ‰ï¼Œæ ÒŽ®å®žé™…应用åQŒå¾€å¾€å˜åœ¨ç€å¤šç§¾cÕdž‹åQŒå…¸åž‹çš„æœ‰å¼€å§‹èŠ‚ç‚¹ï¼ˆStartDefinitionåQ‰ã€ä“Q务节点(TaskDefinitionåQ‰ã€è‡ªåŠ¨èŠ‚ç‚¹ï¼ˆAutoDefinitionåQ‰ã€åˆ†è£‚节点(SplitDefinitionåQ‰ã€æ±‡èšèŠ‚ç‚¹ï¼ˆJoinDefinitionåQ‰ã€ç»“æŸèŠ‚ç‚¹ï¼ˆEndDefinitionåQ‰ç‰½{‰ã€‚这些节点的实例æ ÒŽ®¾cÕdž‹çš„ä¸åŒæ‰§è¡Œä¸åŒçš„逻辑。其ä¸ï¼Œåˆ†è£‚节点实例和汇èšèŠ‚ç‚¹å®žä¾‹è´Ÿè´£æµ½E‹çš„调度åQŒå®ƒä»¬å†³å®šæµ½E‹çš„‹¹å‘åQŒé€šå¸¸æƒ…况下,它们会调用一个脚本引擎执行一ŒDµè„šæœ¬æ¥å†›_®š‹¹ç¨‹çš„æµå‘ï¼ŒåŒæ—¶åQŒä¹Ÿä¼šæä¾›å¯¹å¤–暴露的接å£åQŒç”±ä¸šåŠ¡¾pÈ»Ÿå®žçްåQŒæŽ¥å£è¿”回的¾l“果军_®š‹¹ç¨‹çš„æµå‘。ä“Q务节点实例和自动节点实例则负责浽E‹çš„æ‰§è¡ŒåQŒäØ“ä¿è¯‹¹ç¨‹æ‰§è¡Œå¼•擎èŒè´£çš„æ¸…æ™îC»¥åŠå¯¹å¤–围设施的æ¾è€¦åˆåQŒå®ƒä»¬åªæ˜¯å‘布相关的事äšgåQŒé€šè¿‡äº‹äšgå‘布/订阅机制æ¥è§¦å‘具体的逻辑执行ã€?/span>
典型的事件有‹¹ç¨‹å¯åŠ¨äº‹äšgã€æµ½E‹ç»“æŸäº‹ä»¶ã€è¿›å…¥èŠ‚ç‚¹äº‹ä»¶ã€ç¦»å¼€èŠ‚ç‚¹äº‹äšgã€æ—¶é—´äº‹ä»¶ç‰ã€‚例如,ä»ÕdŠ¡èŠ‚ç‚¹å®žä¾‹çš„è¿›å…¥èŠ‚ç‚¹äº‹ä»¶å°†ä¼šè§¦å‘工作项引擎生æˆå·¥ä½œ™å¹ï¼ˆWorkitemåQ‰ï¼Œòq¶è§¦å‘æ—¶é—´æœåŠ¡å™¨å¼€å§‹è®¡æ—¶ã€?/span>
3�span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
åŸÞZºŽå……血模型的工作项引擎
å¯ÒŽœ€¾lˆç”¨æˆ¯‚€Œè¨€åQŒå¤§éƒ¨åˆ†çš„业务æ“作都集ä¸åœ¨å¯¹å·¥ä½œ™å¹çš„æ“ä½œä¸Šã€‚å¸¸è§çš„包括工作™å¹çš„æäº¤ã€æ”¶å›žã€å§”‹z¾ã€è¿½åŠ å’Œé€€å›žã€‚è¿™äº›æ“作从¾pÈ»Ÿè®¾è®¡çš„角度ä¸ä»…涉åŠåˆ°å·¥ä½œ™å¹ï¼ˆWorkitemåQ‰å¯¹è±¡å†…部状æ€çš„å˜åŒ–åQŒè€Œä¸”å½±å“到浽E‹æ‰§è¡Œå¼•擎的调度以åŠç›¸å…³çš„其他工作项对象状æ€ã€?/span>
工作™å¹å¼•擎的èŒè´£åŒ…括两部分。第一åQŒç›‘å¬ä“Q务节点实例的˜q›å…¥äº‹äšgåQŒç”Ÿæˆå·¥ä½œé¡¹å®žä¾‹ã€‚第二,处ç†ä¸Šé¢æåˆ°çš„å„¿U工作项æ“作ã€?/span>
实现æ—Óž¼Œå·¥ä½œ™å¹ç”Ÿæˆå™¨æ ÒŽ®ä»ÕdŠ¡å‚与者的执行模å¼å…¸åž‹çš„分为四¿U情况:
竞争å‚与åQ?/span>当有多个å‚与者å‚与该ä»ÕdŠ¡æ—Óž¼Œäº§ç”Ÿç«žäº‰åQŒè°å…ˆå¼€å§‹è¿™™å¹å·¥ä½œï¼Œž®Þq”±è°è´Ÿè´£å®Œæˆè¯¥å·¥ä½œã€‚æ¤æ—Óž¼Œå·¥ä½œ™å¹ç”Ÿæˆå™¨ç”Ÿæˆå¤šä¸ªå·¥ä½œ™å¹å®žä¾‹ï¼Œåœ¨æŸä¸ªå·¥ä½œé¡¹å®Œæˆæ—¶ä¼š¾lˆæ¢å…¶ä½™å·¥ä½œ™åV€?/span>
™åºåºå‚与åQ?/span>多个å‚与者按照指定的™åºåºå®Œæˆè¯¥å·¥ä½œã€?/span>A完æˆä¹‹åŽç”?/span>B完æˆåQ?/span>B完æˆä¹‹åŽå†äº¤¾l?/span>C完æˆã€‚æ¤æ—Óž¼Œå·¥ä½œ™å¹ç”Ÿæˆå™¨ç”Ÿæˆå¤šä¸ªå·¥ä½œ™å¹å®žä¾‹ï¼Œæ ÒŽ®™åºåºä¾æ¬¡‹È€‹zÕd„个工作项ã€?/span>
å…±åŒå‚与åQ?/span>多个å‚ä¸Žè€…åŒæ—¶å¯¹å·¥ä½œ˜q›è¡Œå¤„ç†ã€‚æ¤æ—Óž¼Œå·¥ä½œ™å¹ç”Ÿæˆå™¨ç”Ÿæˆå¤šä¸ªå·¥ä½œ™å¹å®žä¾‹åƈ全部‹È€‹z…R€?/span>
æ™ø™ƒ½å†³ç–åQ?/span>å˜åœ¨å¤šä¸ªå‚与者的情况下,工作™å¹ç”Ÿæˆå™¨èƒ½å¤Ÿæ ÒŽ®ä¸€å®šçš„æŒ‡æ ‡åQˆç”±æ•°æ®åˆ†æžåQŒä¾‹å¦‚ähå‘˜çš„å¤„ç†æ•ˆçއåQŒå·¥ä½œè´Ÿè½½ç‰½{‰ï¼‰å’Œè§„则æ¥å†›_®šè¯¥èŠ‚ç‚¹çš„å‚ä¸Žè€…åÆˆä¸ºå…¶ç”Ÿæˆç›¸åº”工作™åV€‚这里涉åŠåˆ°½Ž—法ã€?/span>
对于工作‹¹ç³»¾lŸè€Œè¨€åQŒå„¿Uæµ½E‹å®žä¾‹å¯¹è±¡éƒ½æ˜¯å……血模型。特定于å„ç§å·¥ä½œ™åÒŽ“作的处ç†åQŒæ¤æ—¶çš„工作™å¹å¯¹è±¡äº¦è®¾è®¡ä¸ºå……血模型åQŒå°†ä¸šåŠ¡é€»è¾‘ž®è£…到领域模型里åQŒç®€åŒ–领域模型之间的交互åQŒçœå޻频¾Jçš„get/set。由领域模型å†å§”‹z‘Öˆ°å…·ä½“的处ç†ç±»é‡Œã€?/span>
Client->(Business Facade)->Domain Model->service->Data Access(DAO)
4�span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
工作™åšw©±åŠ¨ä¸šåŠ¡è¡¨å•çš„ä¸šåŠ¡é›†æˆæ–¹å¼
最¾lˆç”¨æˆ·å¯¹ä»ÕdŠ¡çš„å¤„ç†ï¼Œå¿…ç„¶ç”±å·¥ä½œé¡¹å¯¹åº”ç€æŸä¸€ä¸šåŠ¡è¡¨å•。用户在工作™å¹åˆ—表里选择自己需è¦åŠžç†çš„工作™å¹ï¼Œç”±å·¥ä½œé¡¹å¯ÆDˆªåˆîC¸šåŠ¡è¡¨å•ã€?/span>
特定äº?/span>WEB¾pÈ»ŸåQŒä¸šåŠ¡è¡¨å•çš„å¯ÆDˆªç”?/span>url完æˆã€‚在‹¹ç¨‹å®šä¹‰æ¨¡åž‹è®¾è®¡æ—Óž¼Œž®?/span>url讄¡½®å…¥èŠ‚ç‚¹å±žæ€§ï¼Œç”Ÿæˆå·¥ä½œ™åÒŽ—¶ž®†æ¤urlä¿å˜åœ¨å·¥ä½œé¡¹å¯¹è±¡å±žæ€§é‡Œã€‚点å‡Õd·¥ä½œé¡¹è¯¦ç»†ä¿¡æ¯æ—¶å³æ‰“å¼€è¯?/span>urlåQŒå®Œæˆåˆ°ä¸šåŠ¡è¡¨å•的导航。业务表å•页é¢é€šå¸¸éœ€è¦å¼•入处ç†å·¥ä½œé¡¹é€»è¾‘的父™åµé¢æˆ–者导入定制的js库,˜q™äº›çˆ‰™¡µé¢æˆ–js库由工作‹¹äñ”å“æä¾›ã€‚è¿™æ øP¼Œå¯¹äºŽä¸šåŠ¡è¡¨å•¾~–写åQŒå·¥ä½œæµé€»è¾‘æ˜¯é€æ˜Žçš„ã€?/span>
一ã€ä»€ä¹ˆæ˜¯ä¸šåŠ¡‹¹ç¨‹
业务‹¹ç¨‹æ˜¯ä¸€ä¸ªæŠ€æœ?/span>术è¯åQŒå®ƒå…ähœ‰å‡†ç¡®çš„定义:有组¾l‡çš„‹zÕdЍåQ?/span>ç›æ€º’è”ç³»åQŒäØ“å®¢æˆ·åˆ›é€ äh倹{€?/span>
˜q™å¥è¯å¾ˆå¥½ç†è§£ã€‚甚臛_¯ä»¥è¯´ä»ÖM½•ä¼ä¸šçš„æ´»åŠ¨éƒ½æ˜¯ä»¥ä¸šåŠ¡ä¸ÞZ¸»¾U¿ï¼Œä»¥æµ½E‹äØ“¾U¿çƒ¦ä¸²è”èµäh¥çš„。ä¼ä¸šçš„è§„ç« åˆ¶åº¦ã€æ“作手册ç‰éƒ½ä¸Žä¸šåŠ¡‹¹ç¨‹æœ‰ç€å¥‘åˆç‚V€?/span>
二ã€ä¸šåŠ¡æµ½E‹å¯¹äºŽä¼ä¸šçš„æ„ä¹‰
业务‹¹ç¨‹å¯¹äºŽä¼ä¸šçš„æ„ä¹‰ä¸ä»…仅在于对ä¼ä¸šå…³é”®ä¸šåŠ¡çš„ä¸€¿Uæ˜qŽÍ¼Œæ›´åœ¨äºŽå¯¹ä¼ä¸šçš„业务è¿è¥æœ‰ç€æŒ‡å¯¼æ„义åQŒè¿™¿Uæ„义体现在对资æºçš„优化ã€å¯¹ä¼ä¸š¾l„织机构的优化以åŠå¯¹½Ž¡ç†åˆ¶åº¦çš„一¾pÕdˆ—改å˜ã€‚è¿™¿U优化的目的实际也是ä¼ä¸šæ‰€˜q½æ±‚çš„ç›®æ ‡ï¼šé™ä½Žä¼ä¸šçš„è¿è¥æˆæœ¬ï¼Œæé«˜å¯¹å¸‚场需求的å“应速度åQŒäº‰å–ä¼ä¸šåˆ©æ¶¦çš„æœ€å¤§åŒ–ã€?/span>
三ã€ä¸šåŠ¡æµ½E‹ä¹Ÿæ˜¯ä¸€ä¸ªä½“¾p?/span>
业务‹¹ç¨‹é€šå¸¸çš„表现åÅžå¼æ˜¯‹¹ç¨‹å›¾ï¼ˆä¸æ˜¯å”¯ä¸€å½¢å¼åQ‰ï¼Œæ¯•竟囑ÖŞ是最易于ç†è§£çš„一¿UåÅžå¼ï¼Œä½†ä¼¼ä¹Žæˆ‘们太å…Ïx³¨äºŽæµ½E‹å›¾æœ¬èín而忽略了其他。除了浽E‹å›¾ä¹‹å¤–åQŒä¸šåŠ¡æµ½E‹è¿˜åº”è¯¥åŒ…æ‹¬ç›®æ ‡å’ŒæŒ‡å¯¼æ–¹é’ˆï¼Œ˜q™æ‰æ˜¯ä¸€ä¸ªå®Œæ•´çš„业务‹¹ç¨‹ã€‚在梳ç†ä¸šåŠ¡ä½¿ç”¨ä¸šåŠ¡‹¹ç¨‹æè¿°æ—‰™¦–å…ˆè¦æƒ›_ˆ°çš„æ˜¯è¯¥æµ½E‹æ‰€è¦è¾¾åˆ°çš„ç›®æ ‡åQŒèƒ½ä¸ºå®¢æˆ·åˆ›é€ 什么ähå€û|¼Œè„Þq¦»å¼€ä¸šåŠ¡ç›®æ ‡æˆ–è€…è¯´¾U¯çÑa为æ˜qîC¸šåŠ¡è€Œæ˜qîC¸šåŠ¡æ˜¯æ²¡æœ‰æ„ä¹‰çš„ã€‚åŒæ—¶åœ¨åˆ¶å®šä¸šåŠ¡‹¹ç¨‹æ—¶ä¹Ÿè¦è€ƒè™‘到该业务‹¹ç¨‹çš„æŒ‡å¯¼æ–¹é’ˆï¼ŒåŒä¸€ä¸ªä¸šåŠ¡å¯èƒ½æœ‰å¾ˆå¤š¿U业务浽E‹çš„æè¿°å½¢å¼åQŒå…·ä½“哪一¿U是最åˆé€‚çš„åQŒè¿™é‡Œå°±å¿…须有一个指导方针楘q›è¡Œ¾U¦æŸã€?/span>
å››ã€ä¸šåŠ¡æµ½E‹çš„特å¾
1ã€å±‚‹Æ¡æ€§ã€é€å±‚抽象
业务‹¹ç¨‹æ˜¯æœ‰å±‚次性的åQŒè¿™¿U层‹Æ¡ä½“现在ç”׃¸Šè‡³ä¸‹ã€ç”±æ•´ä½“到部分ã€ç”±å®è§‚到微观ã€ç”±æŠ½è±¡åˆ°å…·ä½“的逻辑关系ã€?/span>
˜q™æ ·ä¸€ä¸ªå±‚‹Æ¡å…³¾pȬ¦åˆäh们的æ€ç»´ä¹ 惯åQŒæœ‰åˆ©äºŽä¼ä¸šä¸šåŠ¡æ¨¡åž‹çš„å¾ç«‹ã€‚一般æ¥è¯ß_¼Œæˆ‘们å¯ä»¥å…ˆå¾ç«‹ä¸»è¦ä¸šåŠ¡æµ½E‹çš„æ€ÖM½“˜q行˜q‡ç¨‹åQˆå…¶ä¸åŒ…括了整个ä¼ä¸šçš„大的战略)åQŒç„¶åŽå¯¹å…¶ä¸çš„æ¯™åÒŽ´»åŠ¨è¿›è¡Œç»†åŒ–ï¼Œè½å®žåˆ°å„个部门的业务˜q‡ç¨‹åQŒå¾ç«‹ç›¸å¯¹ç‹¬ç«‹çš„å业务浽E‹ä»¥åŠäؓ其æœåŠ¡çš„è¾…åŠ©ä¸šåŠ¡‹¹ç¨‹ã€?/span>
业务‹¹ç¨‹ä¹‹é—´çš„层‹Æ¡å…³¾pÖM¸€å®šç¨‹åº¦ä¸Šä¹Ÿåæ˜ äº†ä¼ä¸šéƒ¨é—¨ä¹‹é—´çš„层‹Æ¡å…³¾p…R€‚ä¸åŒå±‚¾U§çš„部门有ç€å¯¹ä¸šåŠ¡æµ½E‹ä¸åŒçš„分çñ”½Ž¡ç†æƒé™ã€‚决½{–层ã€ç®¡ç†è€…ã€ä‹É用者å¯ä»¥æ¸…晰的查看åˆîC¸‹å±žå’Œä¸‹å±žéƒ¨é—¨çš„业务浽E‹ã€?/span>
ä¸ÞZ‹É得所建立的业务浽E‹èƒ½å¤Ÿæ›´™åºç•…çš„è¿è¡Œï¼Œä¸šåŠ¡‹¹ç¨‹çš„æ”¹˜q›ä¸Žä¼ä¸š¾l„织¾l“构的优化是一个相互制¾U¦ã€ç›¸äº’促˜q›çš„˜q‡ç¨‹ã€?/p>
2ã€ä»¥äºÞZØ“æœ?/span>
¾l„ç»‡ä¸æœ€é‡è¦çš„部分是人员的工作方å¼ä»¥åŠæž„æˆä»–ä»¬æ¯æ—¥æ“作的工作‹¹ç¨‹ã€?/span>
人是业务‹¹ç¨‹çš„驱动者,¾l„织ä¸çš„æ¯ä¸€ä¸ªäh都会在业务浽E‹ä¸å……当一个角艌Ӏ‚通过良好的业务浽E‹ï¼Œæ¯ä¸€ä¸ªäh都会有自己清晰的èŒè´£åQŒè¦æ±‚具有良好的沟通å作æ„识和团队æ„识åQŒæ˜Ž¼‹®è‡ªå·±åœ¨ä¸€ä¸ªä¸ªä¸šåŠ¡‹¹ç¨‹ä¸æ‰€æ‹…当的角艌Ӏ?/span>
åŒæ—¶å¯¹äºŽå‚与其ä¸çš„业务浽E‹ï¼Œæ¯ä¸ªäººå‘˜éƒ½è¦æœ‰è‡ªå·Þqš„å馈ã€?/span>
首先åQŒæ¯ä¸ªäh员都能查看到˜q™äº›ä¸šåŠ¡‹¹ç¨‹åQŒä»–们需è¦å……分ç†è§£è¿™äº›ä¸šåŠ¡æµ½E‹ã€æµ½E‹çš„业务æ„义和目的,˜q™äº›ä¸šåŠ¡‹¹ç¨‹é€šè¿‡åˆ‡åˆä»–们ç†è§£èƒ½åŠ›çš„æ–¹å¼ï¼ˆåˆ‡åˆä¸šåŠ¡çš„å›¾å½¢ã€è¯´æ˜Žæ–‡å—ã€ç›¸åº”的制度ã€è§„èŒƒã€æ ‡å‡†ç‰½{‰ï¼‰å¾—以展现ã€?/span>
其次åQŒå¯¹äºŽæµ½E‹è¿è¡Œä¸å˜åœ¨çš„问题或瓉™¢ˆåQŒæ¯ä¸ªäh员都è¦ç§¯æžå馈(æå‡ºä¿®æ”¹çš„å¾è®®ï¼Œæˆ–者在æƒé™èŒƒå›´å†…直接修改)以促˜q›æµ½E‹çš„æŒç®‹æ”¹è¿›åQŒä¸šåŠ¡æµ½E‹çš„½Ž¡ç†å’Œå˜åЍä¸ä»…仅是业务分æžäh员或½Ž¡ç†äººå‘˜çš„èŒè´£ï¼Œæ¯ä¸€ä¸ªå‘˜å·¥éƒ½è¦å‚与其ä¸ï¼Œå¦åˆ™åªæœ‰å¤ÞpÓ|。管ç†äh员和决ç–层更é‡è¦çš„èŒè´£æ˜¯åˆ¶å®šå‡ÞZ¸šåŠ¡æµ½E‹çš„规则和约æŸï¼Œåœ¨è¿™ä¸ªè§„则和¾U¦æŸèŒƒå›´å†…,员工å¯ä»¥æ ÒŽ®å˜åŒ–的商业环境对业务‹¹ç¨‹åšå‡º˜q…速修改,˜q™æ ·ä¸å¿…½{‰åˆ°é¢†å¯¼äº†è§£æƒ…况åŽå†åšå‡ºå†³ç–从而失åŽÀLœºä¼šã€?/span>
3ã€å¯¹‹¹ç¨‹˜q行效益的分æž?/span>
从ä¼ä¸šæŠ•资者的角度æ¥è®²åQŒå¥½çš„业务浽E‹è®¾è®¡å¿…然是能够ä¸ÞZ¼ä¸šå¸¦æ¥æœ€é«˜åˆ©æ¶¦çš„è®¾è®¡ã€‚å› æ¤ï¼Œå¯¹ä¸šåŠ¡æµ½E‹çš„æ•ˆç›Šåˆ†æžæ˜¯è¯„价业务浽E‹çš„一个é‡è¦æ–¹é¢ã€‚èƒ¦åŠ¡æ•°æ®æ˜¯æœ€å…³é”®çš„æ•°æ®ï¼Œä½†è¿™¿U分æžä¸ä¸€å®šå®Œå…¨æ˜¯ç”±æ•°æ®æ”¯æ’‘çš„åQŒæœ‰äº›æ˜¯ä¸èƒ½é‡åŒ–的,比如人员效率½{‰ç‰ã€?/span>
五ã€ä¸šåŠ¡æµ½E‹ç®¡ç?/span>
良好的业务浽E‹ç®¡ç†æ˜¯ä¿è¯ä¼ä¸šç‰|´»˜qè¥çš„关键(业务‹¹ç¨‹½Ž¡ç†åˆä½•ž®ä¸æ˜¯ä¸€¿U业务浽E‹ï¼ŸåQ‰ã€?/span>
1ã€ä¸šåŠ¡åˆ†æž?/span>
实际˜q™ä¹Ÿæ˜¯ä¸šåŠ¡æµ½E‹ç®¡ç†æœ€é‡è¦çš„部分。它需è¦å¯¹ä¼ä¸šä¸šåŠ¡æœ‰ç€å¼ºå¤§çš„分æžèƒ½åŠ›ï¼Œå› äØ“ä¸šåŠ¡åˆ†æžå¯¹ä¼ä¸šçš„˜qè¥æœ‰ç€é‡å¤§çš„æŒ‡å¯¼æ„ä¹‰ï¼Œåªæœ‰å…·å¤‡äº†è¿™æ ïLš„业务分æžèƒ½åŠ›åQŒæ‰èƒ½æŠŠæ¡ä½ä¼ä¸š˜qè{的真实浽E‹ï¼Œè€Œä¸”˜q™ç§åˆ†æžèƒ½åŠ›å¾€å¾€å¸¦æœ‰å¯ÒŽ•´ä¸ªè¡Œä¸šçš„æ·±åˆ»ç†è§£å’Œå‰çžÀL€§ã€‚没有异议,业务分æžåœ¨äºŽäººï¼Œä¸?/span>ITæ— å…³ã€?/span>
2ã€ä¸šåŠ¡æµ½E‹çš„æŒç®‹æ”¹è¿›
ä¸ä»…仅是‹¹ç¨‹½Ž¡ç†äººå‘˜åQˆç®¡ç†å†³½{–层åQ‰æ ¹æ®è¿è¡Œæ•ˆç›Šçš„分æžå’Œå•†ä¸šçŽ¯å¢ƒçš„åˆ†æžå¯Ò޵½E‹è¿›è¡Œé‡æ•´ã€‚还包括æ¯ä¸ªå‘˜å·¥å¯¹å…¶å‚与的浽E‹çš„æŒç®‹å馈和挾l改˜q›ã€‚柔性的业务‹¹ç¨‹ã€?/span>
3ã€IT¾pÈ»Ÿä¸Žä¸šåŠ¡æµ½E‹çš„关系
IT¾pÈ»Ÿä¸Žä¸šåŠ¡æµ½E‹åƈ没有直接的关¾p…R€‚æ£å¦?/span>06zåœ?/span>SOA帖å里表辄¡š„åQ?/span>soa95%以上的工作是在åšä¸šåŠ¡‹¹ç¨‹çš„分æžè§£æž„å’Œé‡æ•´åQŒæŠ€æœ¯å±‚é¢çš„æ”¯æŒåªå 5%ä¸åˆ°ã€‚在è½å®žåˆ°æŠ€æœ¯å±‚é¢ï¼Œä½ 觉得一ä¸?/span>soa产哽I¶ç«Ÿåº”该包括些什么内容呢åQŸè¿™äº›å†…容åˆèƒ½æœ‰å¤šå°‘是能够辅助大家对业务‹¹ç¨‹˜q›è¡Œåˆ†æžå’Œæµ‹è¯•ï¼Œå¯¹ä¸šåŠ¡å…ƒç´ è¿›è¡Œé‡æ•´å’Œå†åˆ†é…ï¼Ÿå¦‚æžœä½ ä»¬çœŸçš„æœ‰è¿™ä¸ªèƒ½åŠ›ï¼Œä½ ä»¬è§‰å¾—æ˜¯åœ¨˜q™é‡Œ¾l§ç®‹å¼€å‘èÊY件过苦日å,˜q˜æ˜¯åŽÕd¼€æ‹“商业咨询呢åQŸæˆ‘的观ç‚ÒŽ˜¯åQ?/span>SOA很美好,但是一è½åœ°ž®±å˜æˆäº†ž®ä¸‘。所谓的业务‹¹ç¨‹½Ž¡ç†è½¯äšgåŒç†ã€?/span>
å¯ä»¥˜q™æ ·ç†è§£åQšä¸šåŠ¡æµ½E‹ç®¡ç†æ˜¯ä¸€ä¸ªå¾ˆå¤§çš„命题åQ?/span>IT¾pÈ»Ÿé€šè¿‡ä¿¡æ¯åŒ–对它的å集˜q›è¡Œæ”¯æ’‘åQŒè¿™é‡Œçš„IT¾pÈ»ŸåŒ…括的范围很òq¿æ³›åQŒåŒ…括了所有的ä¼ä¸šåº”用软äšgåQˆæ‰€æœ‰çš„ä¼ä¸šåº”用软äšg都å¯ä»¥çœ‹ä½œæ˜¯å¯¹ä¼ä¸šæŸéƒ¨åˆ†çš„业务浽E‹è¿›è¡Œçš„æè¿°åQ‰ã€‚业务浽E‹ç®¡ç†çš„æ ¸å¿ƒåœ¨äºŽä¸šåŠ¡‹¹ç¨‹çš„分æžè§£æž„å’Œé‡æ•´åQŒè¿™ç‚ÒŽ˜¯æ‰€æœ‰èÊY仉™ƒ½ä¸å¯ä¼åŠçš„,关键在于人。至äº?/span>BPM˜q˜æ˜¯å·¥ä½œ‹¹ï¼Œå®ƒä»¬æœ¬æ¥ž®±æœ‰å®ƒä»¬è‡ªå·±çš„适用范围åQŒç¡¬è¦æŠŠå®ƒæå‡åˆ°ä¸šåŠ¡‹¹ç¨‹½Ž¡ç†çš„高度æ¥å®£ä¼ åQŒé‚£ž®ÞqœŸçš„å’Œž®ä¸‘ä¸€æ øP¼Œæ»‘稽而寽W‘ã€?/span>
å…Ïx³¨ä¸‹ç¯‡åQ?/span>BPM是干什么的
收回是工作æµå‚与者对自己“已办ä»ÕdŠ¡”åQˆå¯¹å·²å®Œæˆçš„工作™å¹ï¼‰çš„一¿Uæ“作,å›_‚与者主动对已办ç†è¿‡çš„工作项˜q›è¡Œé‡æ–°åŠžç†ã€?/span>
ä¸ÞZ»€ä¹ˆè¦æ”¶å›žåQ?/span>
å‚与者完æˆä“Q务åŽåQŒå‘çŽ°è‡ªå·±åŠžç†æœ‰é”™è¯¯½{‰æƒ…况åŽåQŒéœ€è¦å°†æ¤ä“QåŠ¡æ”¶å›žé‡æ–°åŠžç†ã€?/p>
工作™å¹çš„å‚与方å¼
ç›®å‰æœ‰å››¿Uæ–¹å¼ï¼šå…±åŒå‚与ã€ç«žäº‰å‚与ã€é¡ºåºå‚与ã€åŸºäºŽè§’色的共åŒå‚与ã€?/p>
下é¢ä¼šé’ˆå¯¹è¿™å››ç§æ–¹å¼˜q›è¡Œè®¨è®ºã€?/p>
工作™åÒŽ”¶å›žæ¨¡å¼?/strong>
1ã€æœªè§¦å‘下一节点的工作项的收å›?/strong>
å›_½“å‰ä“QåŠ¡èŠ‚ç‚¹åÆˆæœªå®Œæˆï¼Œä¾æ—§å¤„于执行状æ€?/p>
1.1å…±åŒå‚与
如图åQšåœ¨èŠ‚ç‚¹A未结æŸä¹‹å‰ï¼Œworkitem1ã€workitem2å’Œworkitem3æ£å¸¸å®ŒæˆåŽå¯ä»¥ä“Qæ„æ”¶å›žã€‚在åªäñ”生一个workitem的情况下åQŒä¸å˜åœ¨æœªè§¦å‘下一节点的收回情å†üc€?/p>
1.2™åºåºå‚与
如图åQ?/span>workitem1ã€?/span>workitem2å’?/span>workitem3™åºåºå®ŒæˆåQ?/span>workitem1åœ?/span>workitem2½{¾æ”¶åQˆåŒ…括挂起和手工¾lˆæ¢åQ‰å‰å¯ä»¥æ”¶å›žåQŒåŒæ øP¼Œworkitem2åœ?/span>workitem3½{¾æ”¶åQˆåŒ…括挂起和手工¾lˆæ¢åQ‰å‰ä¹Ÿå¯ä»¥æ”¶å›žã€?/span>在åªäº§ç”Ÿä¸€ä¸?/span>workitem的情况下åQ?/span>ä¸å˜åœ¨æœªè§¦å‘下一节点的收回情å†üc€?/span>
1.3竞争å‚与
å› äØ“åªä¼šäº§ç”Ÿä¸€ä¸?/span>workitemåQŒè¯¥workitem完æˆåŽä¼šç«‹åˆ»è§¦å‘下一节点åQŒæ‰€ä»¥ä¸å˜åœ¨æœªè§¦å‘下一节点的收回情å†üc€?/span>
1.4åŸÞZºŽè§’色的共åŒå‚ä¸?/span>
ä¸?/span>1.1相åŒã€?/span>
2ã€å·²è§¦å‘下一节点的工作项的收å›?/span>
2.1å…±åŒå‚与
问题1åQšå¤šä¸ªå·¥ä½œé¡¹æ—¶è°å¯ä»¥æ‰§è¡Œæ”¶å›žæ“作åQ?/span>
workitem1ã€?/span>workitem2å’?/span>workitem3都å¯ä»¥æ‰§è¡Œæ”¶å›žæ“作。第一个工作项的收回将会导致节ç‚?/span>Bå®žä¾‹çš„åˆ é™¤ï¼ŒåŒæ—¶èŠ‚ç‚¹A釿–°æ¢å¤æ‰§è¡Œçжæ€ã€?/span>
问题2åQšèŠ‚ç‚?/span>B处于什么状æ€èŠ‚ç‚?/span>A的工作项å¯ä»¥æ‰§è¡Œæ”¶å›žæ“作åQ?/span>
ç”?/span>A触å‘的节ç‚?/span>B处于æ£åœ¨æ‰§è¡Œçš„状æ€ï¼ŒèŠ‚ç‚¹B所产生的工作项åQ?/span>
aå…±åŒå‚与 工作™å¹å‡æœªç¾æ”¶ã€æŒ‚èµähˆ–手工¾lˆæ¢
b™åºåºå‚与 ½W¬ä¸€ä¸ªå·¥ä½œé¡¹æœªç¾æ”¶ã€æŒ‚èµähˆ–手工¾lˆæ¢
c 竞争å‚与 工作™å¹å‡æœªç¾æ”¶ã€æŒ‚èµähˆ–手工¾lˆæ¢
d角色 åŒå…±åŒå‚ä¸?/span>
问题3åQšå·¥ä½œé¡¹æ”¶å›žäº§ç”Ÿçš„媄å“?
节点A釿–°æ‰§è¡ŒåQŒæ”¶å›žçš„工作™åšw‡æ–°æ‰§è¡Œã€‚节ç‚?/span>B釿–°æ¢å¤æœªè§¦å‘状æ€ï¼ŒBæ‰€äº§ç”Ÿçš„å·¥ä½œé¡¹å…¨éƒ¨åˆ é™¤ã€?/span>
2.2™åºåºå‚与
问题1åQšå¤šä¸ªå·¥ä½œé¡¹æ—¶è°å¯ä»¥æ‰§è¡Œæ”¶å›žæ“作åQ?/span>
workitem1ã€?/span>workitem2å’?/span>workitem3æ ÒŽ®™åºåºå¯ä»¥ä¾æ¬¡æ‰§è¡Œæ”¶å›žæ“作ã€?/span>
2.3竞争å‚与
情况½Ž€å•ï¼Œåªæœ‰ä¸€ä¸ªå·¥ä½œé¡¹åQŒæ‰€ä»¥å¯ä»¥ç›´æŽ¥æ”¶å›žã€?/span>
2.4åŸÞZºŽè§’色的共åŒå‚ä¸?/span>
å?/span>2.1
工作‹¹æ”¶å›žæ¨¡å¼?/strong>
åŽç®‹è§¦å‘节点åªèƒ½æ˜¯äh工节点(å¯ä»¥æ˜¯å¤šä¸ªï¼Œè‡›_°‘一个)åQŒå¦åˆ™ä¸æ”¯æŒæ”¶å›žã€‚ç›®å‰ä¸æ”¯æŒçˆ¶å‹¹ç¨‹ä¹‹é—´çš„æ”¶å›žã€?/p>
ä¸€ä¸ªå…¸åž‹çš„åŒæ¥æ±‡èšæƒ…å†µåQ?/span>
节点1首先执行完毕åQŒä½†æ˜¯å› ä¸ºæ˜¯åŒæ¥æ±‡èšåQŒæ‰€ä»¥å®ƒä¸ä¼šè§¦å‘实际的æµè½¬ï¼›è€ŒèŠ‚ç‚?/span>2的完æˆåˆ™ä¼šè§¦å‘节ç‚?/span>3的执行。在˜q™ç§æƒ…况下,节点2的工作项å¯ä»¥æ‰§è¡Œæ”¶å›žæ“作åQŒè€ŒèŠ‚ç‚?/span>1çš„å·¥ä½œé¡¹å› äØ“åŽç®‹æ²¡æœ‰è§¦å‘节点而ä¸èƒ½æ”¶å›žã€?/span>
回退åQˆRollback WorkItemåQ?/span>
回退是工作æµå‚与者对自己“待办ä»ÕdŠ¡”åQˆå®žé™…是对工作项åQ‰çš„一¿Uæ“作,å›_‚与者主动回退待办ä»ÕdŠ¡åˆ—è¡¨ä¸çš„ä»ÕdŠ¡åˆ°å·²¾l执行过的äh工节ç‚V€?/p>
ä¸ÞZ»€ä¹ˆè¦å›žé€€åQ?/span>
å‚与者接å—ä“Q务åŽåQŒå‘çŽîC¸åº”ç”±è‡ªå·±åŠžç†æ¤ä“Q务或以å‰çš„æ‰§è¡Œè€…åŠžç†æœ‰é”™è¯¯½{‰æƒ…况åŽåQŒéœ€è¦å°†æ¤æŽ¥å—çš„ä»ÕdŠ¡å›žé€€¾l™ä»¥å‰æŸä¸ªèŠ‚ç‚¹çš„æ‰§è¡Œè€…é‡æ–°åŠžç†ã€?/p>
回退模å¼
回退的情况实际上是éžå¸¸å¤æ‚çš„åQŒå…¶ä¸åŒ…括了å‚ä¸Žè€…çš„é‡æ–°é€‰æ‹©ä»¥åŠå›žé€€çš„æ¡ä»¶åˆ¤æ–牽{‰ã€‚这里先列出常è§çš„回退模å¼åQˆå…¶å®žä¹Ÿæ˜¯æˆ‘们支æŒçš„æ¨¡å¼åQ‰ã€?/p>
串行
˜q™ç§æƒ…况最为简å•,åŽç®‹èŠ‚ç‚¹å¯ä»¥å›žé€€åˆ°å‰¾lä“Qæ„äh工节ç‚V€‚回退åŽï¼ŒèŠ‚ç‚¹é‡èµ°ã€?/p>
分支
˜q™ç§æƒ…况也相对简å•,实际执行的分支上的节点å¯ä»¥å›žé€€åˆ°å‰¾lä“Qæ„äh工节点(ä¸åŒºåˆ†ä¸»æ”¯å’Œåˆ†æ”¯åQ‰ã€‚åŒæ øP¼Œä¸ÀL”¯ä¸Šçš„节点也å¯ä»¥å›žé€€åˆîC“Qæ„实际执行的分支上的节点ã€?/p>
å¯èƒ½çš„问题:多次回退åŽçš„回退节点选择。例如:½W¬ä¸€‹Æ¡æµ½E‹ç»˜q‡èŠ‚ç‚?ã€èŠ‚ç‚?到达节点5åQŒèŠ‚ç‚?å¯ä»¥å›žé€€åˆ°èŠ‚ç‚?ã€èŠ‚ç‚?和节ç‚?çš„ä“Qæ„ä¸€ä¸ªï¼Œæ¤æ—¶èŠ‚ç‚¹5回退到节ç‚?åQŒèŠ‚ç‚?é‡èµ°åQŒè¿™ä¸€‹Æ¡æµ½E‹æ”¹ä¸ºç»˜q‡èŠ‚ç‚?到达节点5åQŒèŠ‚ç‚?回退时如何选择回退节点åQŸæ¤æ—¶çš„½{–略是以最˜q‘实际执行的分支为准åQŒå³èŠ‚ç‚¹5åªå…许回退到节ç‚?和节ç‚?åQŒä¸å…许回退到节ç‚?和节ç‚?。(抹去记忆åQ?/p>
òq¶å‘
对于òq¶å‘的情况,分支节点åªå…许在分支的节炚w—´å›žé€€ã€?/p>
åŒç†åQŒä¸»æ”¯èŠ‚ç‚¹ä¹Ÿåªå…许在ä¸ÀL”¯çš„节炚w—´å›žé€€ã€?/p>
多实例汇è?/p>
在这¿U情况下åQŒèŠ‚ç‚?会äñ”ç”?个实例,实际相当于ç‘ô¾låÆˆå‘。节ç‚?æ ÒŽ®å…·ä½“哪个节点触å‘的它而äñ”ç”Ÿå›žé€€èŠ‚ç‚¹ã€‚åŒæ—¶ä¸å…许回退到节ç‚?以åŠå‰ç®‹çš„节点去ã€?/p>
åæµ½E?/p>
支æŒåæµ½E‹åˆ°çˆ¶æµ½E‹çš„回退åQŒä¹Ÿæ”¯æŒçˆ¶æµ½E‹åˆ°åæµ½E‹èŠ‚ç‚¹çš„å›žé€€ã€‚éœ€è¦æ³¨æ„的是勹程节点有å¯èƒ½äñ”生多个勹程实例åQŒåœ¨˜q™ç§æƒ…况䏋䏿”¯æŒçˆ¶å‹¹ç¨‹ä¹‹é—´çš„相互回退ã€?/p>
回退节点的å‚与者选择
默认½{–略是由原先节点的实际å‚ä¸Žè€…é‡æ–°å¤„ç†ï¼Œæ¯”如节点2回退到节ç‚?åQŒåˆ™èŠ‚ç‚¹1的实际å‚ä¸Žè€…é‡æ–°å¤„ç†è¯¥èŠ‚ç‚¹ä»ÕdŠ¡ã€‚è¿™ä¹Ÿç¬¦åˆå¤§å¤šæ•°å®žé™…的业务场景ã€?/p>
在节点ä“Q务竞争å‚与的情况下,æä¾›å¦ä¸€¿Uç–略,匙®©äººå‘˜é‡æ–°ç«žäº‰ã€?/p>
回退的æ¡ä»¶åˆ¤æ–?/strong>
对于多ähåQˆæˆ–者多部门åQŒç”¨æˆøP¼‰å‚与的工作项åQŒæä¾›ä¸åŒçš„回退½{–ç•¥
ä»ÀL„人回退å›_›žé€€åQŒå‰©ä½™å·¥ä½œé¡¹æ‰‹å·¥¾lˆæ¢
æœ€åŽæäº¤äh回退æ‰å›žé€€
‹¹ç¨‹å®šä¹‰æœŸå®šä¹‰è¯¥½{–ç•¥ã€?/span>
å¦å¤–‹¹ç¨‹å®šä¹‰æ—¶æä¾›èŠ‚ç‚¹å¯å›žé€€åˆ—表åQŒç”±ç”¨æˆ·åœ¨å®šä¹‰æœŸå¯¹å¯å›žé€€çš„节点进行é™åˆ¶ã€?/span>
关于业务补å¿
ä¸šåŠ¡è¡¥å¿æ˜¯ä¸€ä¸ªå¾ˆé‡è¦çš„æ¦‚念,在回退的情况下需è¦ç›¸åº”的回退部分业务æ“作。这里由引擎æä¾›¾lŸä¸€çš„æŽ¥å£ï¼Œ˜q”回回退路径åQŒç”±å®¢æˆ·è‡ªå®šä¹‰ä»£ç 进行匹é…处ç†ã€?/span>
关于实现
很多工作‹¹å¼•擎通过‹¹ç¨‹å®šä¹‰æ—¶ç»˜å‡ºå›žé€€¾U¿æ¥æ˜‘ּ的支æŒå›žé€€åQŒè¿™¿Uå®žçŽ°åœ¨ä¸šåŠ¡å¤æ‚çš„æƒ…å†µä¸‹ä¼šé€ æˆ‹¹ç¨‹å›„¡š„异常烦çåQŒä½†æ˜¯æ¯”较清晎ͼŒå®žçŽ°æ¯”è¾ƒå®ÒŽ˜“。éšå¼å®žçŽ°ç›¸æ¯”è€Œè¨€ä¼˜ç‚¹æ›´å¤šã€?/span>
ä¸€ã€æµ½E‹å®žä¾‹çš„状æ€?/span>
状æ€åˆ†ä¸?/span>5¿Uï¼šå®žä¾‹åŒ–ã€æ‰§è¡Œä¸ã€æŒ‚èµ—÷€æ‰‹å·¥ç»“æŸã€æ£å¸¸ç»“æŸã€?/span>
状æ€çš„å˜è¿å¦‚下图:
二ã€èŠ‚ç‚¹å®žä¾‹çš„çŠ¶æ€?/span>
状æ€åˆ†ä¸?/span>5¿Uï¼šå®žä¾‹åŒ–ã€æ‰§è¡Œä¸ã€æŒ‚èµ—÷€æ‰‹å·¥ç»“æŸã€æ£å¸¸ç»“æŸã€?/span>
状æ€çš„å˜è¿å¦‚下图:
三ã€å…·ä½“节点的状æ€?/span>
¾l†åˆ†åQ?/span>
Aã€äh工节ç‚V€ç‰å¾…节ç‚?/span>
˜q™ä¸¤ä¸ªèŠ‚ç‚¹è¢«è§¦å‘åŽå˜åœ¨ä¸€ä¸ªæ‰§è¡Œç‰å¾…çš„˜q‡ç¨‹åQŒæ‰€ä»¥å¯ä»¥è¢«ç”¨æˆ·ç›´æŽ¥æŒ‚è“v和手工结æŸã€‚äh工节点的挂è“væ„å‘³ç€æ‰€æœ‰æœªå®Œæˆå·¥ä½œ™å¹çš„æŒ‚è“våQŒåŒæ—¶ç›¸åº”æ—¶é—´æœåŠ¡çš„æ—‰™—´è®¡ç®—的挂赗÷€‚手工结æŸä¼šä½¿æµ½E‹èŸ©˜q‡è¯¥èŠ‚ç‚¹åQˆæ‰€æœ‰å·¥ä½œé¡¹æ‰‹å·¥¾l“æŸåQ‰ï¼Œ¾l§ç®‹å¾€åŽæµè½¬ã€?/span>
Bã€å¼€å§‹èŠ‚ç‚V€ç»“æŸèŠ‚ç‚V€åˆ†æ”¯èŠ‚ç‚V€è‡ªåŠ¨èŠ‚ç‚?/span>
˜q™äº›èŠ‚ç‚¹çš„ç‰¹ç‚¹åœ¨äºŽè¢«è§¦å‘åŽç«‹åˆÀL‰§è¡Œå’Œ‹¹è{åQŒæ‰€ä»¥ä¸ä¼šå˜åœ¨æŒ‚起和手工¾l“æŸçš„状æ€ã€?/span>
Cã€åƈå‘节ç‚V€æ±‡èšèŠ‚ç‚?/span>
òq¶å‘节点和汇èšèŠ‚ç‚¹ä¸å˜åœ¨æŒ‚è“v的状æ€ï¼ŒåŒæ—¶ä¸èƒ½è¢«ç”¨æˆïL›´æŽ¥æ‰‹å·¥ç»“æŸï¼Œå®ƒä»¬çš„状æ€å—‹¹ç¨‹å®žä¾‹çжæ€å’Œç›¸å…³èŠ‚ç‚¹å®žä¾‹çŠ¶æ€çš„å½±å“ã€?/span>
òq¶å‘节点和汇èšèŠ‚ç‚¹çš„æƒ…å†µå¤æ‚一些,分模å¼è®¨è®?/span>
å›?/span>1
1ã€åŒæ¥æ±‡èšï¼ˆå›?/span>1åQ?/span>
æ ÒŽ®æƒ…况触å‘节点0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2ä¸çš„一个或多个åQŒæ±‡èšèŠ‚ç‚¹ç‰å¾…所有实际触å‘的节点完æˆåŽå†æ‰§è¡Œ‹¹è{。ä¸é—´æ±‡èšèŠ‚ç‚¹åªä¼šäñ”生一个实例ã€?/span>
1.1ã€æ£å¸¸æµè½¬æ—¶çš„处ç†ç–ç•?/span>
当汇èšèŠ‚ç‚ÒŽœªè¢«è§¦å‘æ—¶åQˆå³èŠ‚ç‚¹0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2都未执行¾l“æŸåQ‰ï¼Œòq¶å‘节点处于执行状æ€ï¼Œä¸€æ—¦æ±‡èšèŠ‚ç‚¹è¢«è§¦å‘åQˆå³èŠ‚ç‚¹0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2有一个执行结æŸï¼‰åQŒåƈå‘节ç‚ÒŽ£å¸¸ç»“æŸåƈ且汇èšèŠ‚ç‚¹å¤„äºŽæ‰§è¡ŒçŠ¶æ€ï¼Œæ‰€æœ‰åƈå‘出的节点实例执行结æŸåŽåQŒæ±‡èšèŠ‚ç‚ÒŽ£å¸¸ç»“æŸï¼Œ‹¹ç¨‹¾l§ç®‹‹¹è{ã€?/span>
1.2ã€ç”¨æˆähŒ‚èµ—÷€æ‰‹å·¥ç»“æŸç›¸å…Œ™Š‚点的处熽{–ç•¥
1.2.1ã€æ±‡èšèŠ‚ç‚ÒŽœª‹È€‹zÀL—¶
节点0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2的挂起和æ¢å¤æ‰§è¡Œä¸ä¼šå½±å“òq¶å‘节点的状æ€ï¼ˆä¾æ—§å¤„于执行状æ€ï¼‰åQ›èŠ‚ç‚?/span>0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2çš„ä“Q一手工¾l“æŸéƒ½ä¼šè§¦å‘汇èšèŠ‚ç‚¹åQŒä‹Éòq¶å‘节点æ£å¸¸¾l“æŸåQŒå¦‚æžœæ‰€æœ‰åÆˆå‘的节点实例都结æŸï¼ˆåŒ…括手工¾l“æŸå’Œæ£å¸¸ç»“æŸï¼‰åQŒæ±‡èšèŠ‚ç‚ÒŽ£å¸¸ç»“æŸï¼Œè§¦å‘‹¹ç¨‹‹¹è{ã€?/span>
1.2.2ã€æ±‡èšèŠ‚ç‚¹å·²‹È€‹zÀL—¶
节点0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2的挂起和æ¢å¤æ‰§è¡Œä¸ä¼šå½±å“汇èšèŠ‚ç‚¹çš„çŠ¶æ€ï¼ˆä¾æ—§å¤„于执行状æ€ï¼‰åQ›èŠ‚ç‚?/span>0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2的手工结æŸä¼šå½±å“汇èšèŠ‚ç‚¹çš„çŠ¶æ€ï¼Œæ¯ä¸ªèŠ‚ç‚¹å®žä¾‹çš„æ‰‹å·¥ç»“æŸä¼šå¼•è“v汇èšèŠ‚ç‚¹çš„åˆ¤æ–ï¼Œå¦‚æžœæ‰€æœ‰åÆˆå‘的节点实例åQˆåŒ…括æ£å¸¸ç»“æŸå’Œæ‰‹å·¥¾l“æŸåQ‰éƒ½¾l“æŸåQŒæ±‡èšèŠ‚ç‚ÒŽ£å¸¸ç»“æŸï¼Œè§¦å‘‹¹ç¨‹‹¹è{ã€?/span>
1.3ã€ç”¨æˆähŒ‚èµ—÷€æ‰‹å·¥ç»“æŸæµ½E‹çš„处熽{–ç•¥
1.3.1ã€æ±‡èšèŠ‚ç‚ÒŽœª‹È€‹zÀL—¶
‹¹ç¨‹çš„æŒ‚èµ·å’Œæ¢å¤æ‰§è¡Œä¸ä¼šå½±å“òq¶å‘节点的状æ€ï¼ˆä¾æ—§å¤„于执行状æ€ï¼‰åQŒèŠ‚ç‚?/span>0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2会被全部挂è“v或æ¢å¤ï¼›‹¹ç¨‹çš„æ‰‹å·¥ç»“æŸä¼šå¼•è“v所有节点的手工¾l“æŸã€?/span>
1.3.2ã€æ±‡èšèŠ‚ç‚¹å·²‹È€‹zÀL—¶
‹¹ç¨‹çš„æŒ‚èµ·å’Œæ¢å¤æ‰§è¡Œä¸ä¼šå½±å“汇èšèŠ‚ç‚¹çš„çŠ¶æ€ï¼ˆä¾æ—§å¤„于执行状æ€ï¼‰åQŒèŠ‚ç‚?/span>0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2未执行结æŸçš„实例会被全部挂è“v或æ¢å¤ï¼›‹¹ç¨‹çš„æ‰‹å·¥ç»“æŸä¼šå¼•è“v所有节点的手工¾l“æŸã€?/span>
2ã€nOutOfM汇èšåQˆå›¾1åQ?/span>
æ ÒŽ®æƒ…况触å‘节点0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2ä¸çš„一个或多个åQŒæ±‡èšèŠ‚ç‚¹ç‰å¾?/span>N个实际触å‘的节点完æˆåŽå³æ‰§è¡Œ‹¹è{åQ?/span>N>0ä¸?/span>N<MåQ?/span>M为实际触å‘的节点个数åQ‰ï¼Œåœ?/span>N<=0å’?/span>N>=M的情况下å³äØ“åŒæ¥æ±‡èšã€‚ä¸é—´æ±‡èšèŠ‚ç‚¹åªä¼šäñ”生一个实例ã€?/span>
2.1ã€æ£å¸¸æµè½¬æ—¶çš„处ç†ç–ç•?/span>
当汇èšèŠ‚ç‚ÒŽœªè¢«è§¦å‘æ—¶åQˆå³èŠ‚ç‚¹0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2都未执行¾l“æŸåQ‰ï¼Œòq¶å‘节点处于执行状æ€ï¼Œä¸€æ—¦æ±‡èšèŠ‚ç‚¹è¢«è§¦å‘åQˆå³èŠ‚ç‚¹0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2有一个执行结æŸï¼‰åQŒåƈå‘节ç‚ÒŽ£å¸¸ç»“æŸåƈ且汇èšèŠ‚ç‚¹å¤„äºŽæ‰§è¡ŒçŠ¶æ€ï¼ŒNä¸ªåÆˆå‘出的节点实例执行结æŸåŽåQŒæ±‡èšèŠ‚ç‚ÒŽ£å¸¸ç»“æŸï¼Œ‹¹ç¨‹¾l§ç®‹‹¹è{åQ?/span>M-N的节点实例被手工¾l“æŸã€?/span>
2.2ã€ç”¨æˆähŒ‚èµ—÷€æ‰‹å·¥ç»“æŸç›¸å…Œ™Š‚点的处熽{–ç•¥
2.2.1ã€æ±‡èšèŠ‚ç‚ÒŽœª‹È€‹zÀL—¶
节点0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2的挂起和æ¢å¤æ‰§è¡Œä¸ä¼šå½±å“òq¶å‘节点的状æ€ï¼ˆä¾æ—§å¤„于执行状æ€ï¼‰åQ›èŠ‚ç‚?/span>0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2çš„ä“Q一手工¾l“æŸéƒ½ä¼šè§¦å‘汇èšèŠ‚ç‚¹åQŒä‹Éòq¶å‘节点æ£å¸¸¾l“æŸåQŒå¦‚æž?/span>Nä¸ªåÆˆå‘的节点实例都手工结æŸï¼Œòq¶å‘节点æ£å¸¸¾l“æŸåQŒè§¦å‘汇èšèŠ‚ç‚¹ï¼Œæ±‡èšèŠ‚ç‚¹æ£å¸¸¾l“æŸåQŒè§¦å‘æµ½E‹æµè½¬ï¼ŒM-N的节点实例被手工¾l“æŸã€?/span>
2.2.2ã€æ±‡èšèŠ‚ç‚¹å·²‹È€‹zÀL—¶
节点0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2的挂起和æ¢å¤æ‰§è¡Œä¸ä¼šå½±å“汇èšèŠ‚ç‚¹çš„çŠ¶æ€ï¼ˆä¾æ—§å¤„于执行状æ€ï¼‰åQ›èŠ‚ç‚?/span>0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2的手工结æŸä¼šå½±å“汇èšèŠ‚ç‚¹çš„çŠ¶æ€ï¼Œæ¯ä¸ªèŠ‚ç‚¹å®žä¾‹çš„æ‰‹å·¥ç»“æŸä¼šå¼•è“v汇èšèŠ‚ç‚¹çš„åˆ¤æ–,如果Nä¸ªåÆˆå‘的节点实例åQˆåŒ…括æ£å¸¸ç»“æŸå’Œæ‰‹å·¥¾l“æŸåQ‰éƒ½¾l“æŸåQŒæ±‡èšèŠ‚ç‚ÒŽ£å¸¸ç»“æŸï¼Œè§¦å‘‹¹ç¨‹‹¹è{åQ?/span>M-N的节点实例被手工¾l“æŸã€?/span>
2.3ã€ç”¨æˆähŒ‚èµ—÷€æ‰‹å·¥ç»“æŸæµ½E‹çš„处熽{–ç•¥
2.3.1ã€æ±‡èšèŠ‚ç‚ÒŽœª‹È€‹zÀL—¶
‹¹ç¨‹çš„æŒ‚èµ·å’Œæ¢å¤æ‰§è¡Œä¸ä¼šå½±å“òq¶å‘节点的状æ€ï¼ˆä¾æ—§å¤„于执行状æ€ï¼‰åQŒèŠ‚ç‚?/span>0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2会被全部挂è“v或æ¢å¤ï¼›‹¹ç¨‹çš„æ‰‹å·¥ç»“æŸä¼šå¼•è“v所有节点的手工¾l“æŸã€?/span>
2.3.2ã€æ±‡èšèŠ‚ç‚¹å·²‹È€‹zÀL—¶
‹¹ç¨‹çš„æŒ‚èµ·å’Œæ¢å¤æ‰§è¡Œä¸ä¼šå½±å“汇èšèŠ‚ç‚¹çš„çŠ¶æ€ï¼ˆä¾æ—§å¤„于执行状æ€ï¼‰åQŒèŠ‚ç‚?/span>0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2未执行结æŸçš„实例会被全部挂è“v或æ¢å¤ï¼›‹¹ç¨‹çš„æ‰‹å·¥ç»“æŸä¼šå¼•è“v所有节点的手工¾l“æŸã€?/span>
3ã€èöL别汇èšï¼ˆå›?/span>1åQ?/span>
æ˜?/span>nOutOfM汇èšçš„特例,N=1
4ã€å¤šå®žä¾‹æ±‡èšåQˆå›¾2åQ?/span>
å›?/span>2
æ ÒŽ®æƒ…况触å‘节点0ã€èŠ‚ç‚?/span>1ä¸çš„一个或多个åQŒèŠ‚ç‚?/span>0和节ç‚?/span>1ä»ÀL„一个执行结æŸåŽéƒ½ä¼šè§¦å‘汇èšèŠ‚ç‚¹äº§ç”Ÿä¸€ä¸ªæ–°çš„å®žä¾‹ï¼Œæ±‡èšèŠ‚ç‚¹å®žä¾‹ç´§æŽ¥ç€è§¦å‘节点2åQŒèŠ‚ç‚?/span>2也会产生多个实例ã€?/span>
4.1ã€æ£å¸¸æµè½¬æ—¶çš„处ç†ç–ç•?/span>
当汇èšèŠ‚ç‚ÒŽœªè¢«è§¦å‘æ—¶åQˆå³èŠ‚ç‚¹0ã€èŠ‚ç‚?/span>1都未执行¾l“æŸåQ‰ï¼Œòq¶å‘节点处于执行状æ€ï¼Œä¸€æ—¦æ±‡èšèŠ‚ç‚¹è¢«è§¦å‘åQˆå³èŠ‚ç‚¹0ã€èŠ‚ç‚?/span>1有一个执行结æŸï¼‰åQŒæ±‡èšèŠ‚ç‚¹ä¼šç´§æŽ¥ç€è§¦å‘节点2åQŒæ±‡èšèŠ‚ç‚ÒŽ£å¸¸ç»“æŸã€‚æ‰€æœ‰åÆˆå‘出的节点实例执行结æŸåŽåQŒåƈå‘节ç‚ÒŽ£å¸¸ç»“æŸã€?/span>
4.2ã€ç”¨æˆähŒ‚èµ—÷€æ‰‹å·¥ç»“æŸç›¸å…Œ™Š‚点的处熽{–ç•¥
节点0ã€èŠ‚ç‚?/span>1的挂起和æ¢å¤æ‰§è¡Œä¸ä¼šå½±å“òq¶å‘节点的状æ€ï¼ˆä¾æ—§å¤„于执行状æ€ï¼‰åQ›èŠ‚ç‚?/span>0ã€èŠ‚ç‚?/span>1的手工结æŸä¼šå½±å“òq¶å‘节点和汇èšèŠ‚ç‚¹çš„çŠ¶æ€ï¼Œæ¯ä¸ªèŠ‚ç‚¹å®žä¾‹çš„æ‰‹å·¥ç»“æŸä¼šå¼•è“v汇èšèŠ‚ç‚¹äº§ç”Ÿæ–°çš„å®žä¾‹òq¶è§¦å‘节ç‚?/span>2åQŒåŒæ—¶ä¼šå¼•è“vòq¶å‘节点的判æ–ï¼Œå¦‚æžœæ‰€æœ‰åÆˆå‘的节点实例都手工结æŸï¼Œòq¶å‘节点æ£å¸¸¾l“æŸã€?/span>
4.3ã€ç”¨æˆähŒ‚èµ—÷€æ‰‹å·¥ç»“æŸæµ½E‹çš„处熽{–ç•¥
‹¹ç¨‹çš„æŒ‚èµ·å’Œæ¢å¤æ‰§è¡Œä¸ä¼šå½±å“òq¶å‘节点的状æ€ï¼ˆä¾æ—§å¤„于执行状æ€ï¼‰åQŒèŠ‚ç‚?/span>0ã€èŠ‚ç‚?/span>1ã€èŠ‚ç‚?/span>2会被全部挂è“v或æ¢å¤ï¼›‹¹ç¨‹çš„æ‰‹å·¥ç»“æŸä¼šå¼•è“v所有未¾l“æŸèŠ‚ç‚¹çš„æ‰‹å·¥ç»“æŸã€?/span>
5ã€éšå¼ç»“æŸï¼Œæ²¡æœ‰æ±‡èšèŠ‚ç‚¹ä¸ŽåÆˆå‘节点对应(å›?/span>3åQ?/span>
å›?/span>3
æ‰€æœ‰èŠ‚ç‚¹ç»“æŸæ—¶åQˆæ£å¸¸ç»“æŸæˆ–手工¾l“æŸåQ‰ï¼Œòq¶å‘节点æ£å¸¸¾l“æŸã€‚æµ½E‹çš„æ‰‹å·¥¾l“æŸä¼šå¼•èµäh‰€æœ‰æœª¾l“æŸèŠ‚ç‚¹çš„æ‰‹å·¥ç»“æŸã€?/span>
å››ã€æµ½E‹å®žä¾‹çжæ€å˜åŒ–对节点实例状æ€é€ æˆçš„媄å“?/span>
1ã€æµ½E‹å®žä¾‹çš„æŒ‚è“v
A¾c»èŠ‚ç‚ÒŽŒ‚èµøP¼ŒBã€?/span>C¾c»èŠ‚ç‚¹ä¸å—媄å“ã€‚åŒæ—¶åœ¨‹¹ç¨‹å®žä¾‹æ¢å¤æ‰§è¡Œä¹‹å‰åQ?/span>A¾c»èŠ‚ç‚¹ä¸å…许用户直接æ¢å¤æ‰§è¡Œã€?/span>
2ã€æµ½E‹å®žä¾‹çš„æ‰‹å·¥¾l“æŸ
所有节点全部手工结æŸã€?/span>
五ã€èŠ‚ç‚¹å®žä¾‹çŠ¶æ€å˜åŒ–对‹¹ç¨‹å®žä¾‹çжæ€é€ æˆçš„媄å“?/span>
éšå¼¾l“æŸçš„æƒ…况下åQŒèŠ‚ç‚¹çš„æ‰‹å·¥¾l“æŸæˆ–æ£å¸¸ç»“æŸéƒ½ä¼šè§¦å‘æµ½E‹çš„判æ–åQŒå¦‚果所有的节点都已¾l“æŸåˆ™æµ½E‹ç»“æŸã€?/span>
å…ˆæ¥çœ‹çœ‹å…·ä½“的应用场景ã€?/span>
å•è¡¨å¢žåˆ æ”ÒŽŸ¥
˜q™æ˜¯æœ€½Ž€å•的情åÅžåQŒä¹Ÿæ²¡æœ‰‹¹ç¨‹åQŒå¯¹˜q™ä¸ªæƒ…åÅžä¸åŠ è®¨è®ºã€‚ä½†æ˜¯è¿™é‡Œä¼šæåˆ°è¡¨å•引擎åQ?/span>VBé‡Œçš„æ•°æ®æŽ§äšgéžå¸¸çš„æ˜“用,没有POåQŒæ²¡æœ?/span>DAOåQŒä¹Ÿæ²¡æœ‰ServiceåQŒç›´æŽ¥ä¸Žæ•°æ®åº“å—ŒDµè¿›è¡Œç»‘定。我们的表å•引擎也å¯ä»¥é‡‡ç”¨è¿™¿Uæ–¹å¼ã€?/span>
支æŒè¡¨å•控äšgåQˆè¾“å…¥æ¡†ã€æ–‡æœ¬æ¡†ã€ä¸‹æ‹‰æ¡†½{‰ï¼‰çš„æ‹–拽,ž®†æ•´ä¸ªè¡¨å•与数æ®åº“表¾l‘定ã€?/span>
è¡¨å•æŽ§äšg与数æ®åº“å—æ®µçš„绑定ã€?/span>
å•表业务+‹¹ç¨‹
比上é¢çš„æƒ…况½E微夿‚一点点åQŒä¹Ÿž®±æ˜¯è¦åœ¨ä¸šåŠ¡é‡Œå¼•å…¥æµ½E‹ï¼Œå…¶å®ž˜q™ä¹Ÿæ˜¯çŽ°åœ¨å·¥ä½œæµå¼•擎应用最多的地方åQŒæ¯”如说政府OA里的收文ã€å‘æ–‡ã€?/span>
˜q™é‡Œåªéœ€è¦å°†è¡¨å•与浽E‹è¿›è¡Œç»‘定,表å•å¼•æ“Žçš„å¤„ç†æ–¹å¼ä¸å˜ï¼Œä¾ç„¶æ˜¯ç›´æŽ¥ä¸Žæ•°æ®åº“表˜q›è¡Œ¾l‘定。表å•负责对数æ®åº“里的业务数æ®è¿›è¡Œå±•玎ͼŒå·¥ä½œ‹¹åˆ™è´Ÿè´£æŽ¨åЍ˜q™äº›æ•°æ®åœ¨ä¸šåŠ¡æ„义上状æ€çš„转æ¢åQŒäº’ä¸åª„å“,òq¶åœ¨éœ€è¦çš„æ—¶å€™åœ¨è‡ªåŠ¨èŠ‚ç‚¹ä¸Šå¯¹˜q™äº›æ•°æ®˜q›è¡Œç›¸åº”的业务处ç†ã€?/span>
å…³äºŽè¡¨å•æƒé™ã€‚这个也是表å•与工作‹¹è¿›è¡Œç»‘å®šæ—¶æ‰€å¿…é¡»è€ƒè™‘åˆ°çš„é—®é¢˜ã€‚å…¶å®žåªæ˜¯éœ€è¦åœ¨è¡¨å•引擎里引入æƒé™è§’色的概念åQŒæ¯ä¸ªè§’色对应于一¿Uæƒé™ï¼Œ˜q™ç§æƒé™å…·ä½“说楞®±æ˜¯è¡¨å•里æ¯ä¸ªå—ŒD늚„å¯è§ã€å¯¾~–辑½{‰ç‰ã€‚ç„¶åŽåœ¨äººå·¥èŠ‚ç‚¹å®šä¹‰æ—¶æŒ‡å®šè¡¨å•æƒé™è§’色å³å¯ã€‚è¿™æ ·ä¹Ÿå®žçŽ°äº†æµ½E‹ä¸Žè¡¨å•æƒé™ä¸€å®šç¨‹åº¦ä¸Šçš„解耦ã€?/span>
其实˜q˜æœ‰ä¸€¿U更方便的方å¼ï¼Œž®†è¡¨å•直接与人工节点˜q›è¡Œ¾l‘定åQŒæ¯ä¸ªäh工节点对应于ä¸åŒçš„表å•ã€?/span>
夿‚一点,多表兌™”的情å†?/span>
夿‚一点的情况是业务往往是多表的兌™”。这需è¦å¯¹è¡¨å•引擎åšå‡ºæ‰©å±•åQŒè®©å®ƒå¯ä»¥æ ¹æ®å…³è”å—ŒDµå¯¹å…Œ™”表åšå‡ºæŸ¥è¯¢ï¼Œå¾—到兌™”表的设计¾l“æž„åQŒç‘ô¾læ˜ ž®„。这让我惌™“väº?/span>ORMåQŒè¿™é‡Œå¾ˆæœ?/span>FRMçš„æ„æ€åœ¨é‡Œé¢ã€‚其实对于常用的兌™”查询往往有通用的组件å¯ç”¨ï¼Œä¾‹å¦‚æ ÒŽ®userid渲染出用户ååQŒæ ¹æ®æ•°æ®å—典的idå…Œ™”渲染出相应的å€û|¼Œoaé‡Œçš„æ£æ–‡ã€é™„ä»¶ã€å°ç« 牽{‰ã€?/span>
‹¹ç¨‹è·¨è¶Šå¤šä¸ªä¸šåŠ¡
‹¹ç¨‹éœ€è¦è·¨‘Šå¤šä¸ªä¸šåŠ¡ï¼Œä¸€ä¸ªå…¸åž‹çš„‹¹ç¨‹å¦‚下åQ?/span>
会议审批会涉åŠåˆ°ä¸¤å¼ 业务表:会议室ä‹É用表åQŒä¼šè®®è®°å½•表。在会议甌™¯·å’Œé¢†å¯¼å®¡æ‰¹èŠ‚ç‚¹ï¼Œæœ€¾lˆç”¨æˆäh‰“开的都是会议申è¯ïLš„表å•åQŒå¯¹åº”于会议记录表,对该表进行æ“作。但是浽E‹è¿è¡Œåˆ°ä¼šè®®å®¤ç®¡ç†å‘˜å®‰æŽ’会议室的节点åQŒè¯¥èŠ‚ç‚¹æœ€¾lˆç”¨æˆ·ä¸ä»…需è¦çœ‹åˆîC¼šè®®ç”³è¯ïLš„表å•åŒæ—¶˜q˜è¦çœ‹åˆ°ä¼šè®®å®¤ä‹É用情å†ëŠš„表å•åQŒå¦‚果有½Iºé—²çš„会议室åQŒç”¨æˆïL™»è®°æ“作会议室使用表,然åŽé€šçŸ¥ç”Œ™¯·è€…;如果没有½Iºé—²çš„会议室åQŒåˆ™ä¸ç”¨ç™»è®°ç›´æŽ¥é€šçŸ¥ç”Œ™¯·è€…。这个过½E‹ä¸è·¨è¶Šäº†ä¸¤ä¸ªä¸šåŠ¡ï¼Œåˆ†åˆ«æ˜¯ä¼šè®®å®¤½Ž¡ç†å’Œä¼šè®®ç®¡ç†ã€‚表å•在å„个节点也是ä¸åŒçš„ã€?/span>
˜q™å…¶å®žå¯¹å·¥ä½œ‹¹å¼•擎æå‡ÞZº†æ¯”è¾ƒé«˜çš„è¦æ±‚。例如如果浽E‹å·²¾l结æŸï¼Œä¼šè®®å¾—到批准åQŒä½†ç”Œ™¯·è€…çªç„¶æœ‰äº‹è¦æ”¹å˜ä¼šè®®æ—‰™—´æ€Žä¹ˆåŠžï¼Ÿå›žé€€ã€‚è¿™é‡Œçš„å›žé€€æ— ç–‘ž®±éœ€è¦æœ‰ä¸šåŠ¡çš„è¡¥å¿ï¼Œä¾‹å¦‚è¦åˆ 除会议室的相兌™®°å½•ã€?/span>
应用集æˆ
一个浽E‹ä¸ä»…会跨越多个业务åQŒä¹Ÿä¼šè·¨‘Šå¤šä¸ªç³»¾lŸã€‚这里的应用场景很多åQŒé‡è¦çš„æ˜¯è¦åŽÕd…¶ä»–ç³»¾lŸæŠ“å–æ•°æ®å’Œæ“作数æ®åQŒä»…ä»…é æ•°æ®åº“表对表å•çš„æ˜ å°„æ»¡èƒöä¸äº†éœ€æ±‚ã€?/span>
对工作æµå¼•擎åšå‡ºæ”¹è¿›åQŒä¸Žå‰é¢ç›¸æ¯”åQŒéœ€è¦ç”±å¼•擎æ¥å®Œæˆå¯¹å…¶ä»–¾pÈ»ŸæœåŠ¡çš„è°ƒç”¨ã€‚è¿™é‡Œä¸€ä¸ªå¾ˆé‡è¦çš„è²ä½“å°±æ˜?/span>XML。首先è¦å®šä¹‰äº¤æ¢æ•°æ®æ‰€ç”¨çš„XML schemeåQŒç„¶åŽå°†˜q™ä¸ªXML schemeå†ä¸Žè¡¨å•引擎åšå‡ºæ˜ 射。实际执行时åQŒå·¥ä½œæµçš„自动节点会在äh工节点å‰è°ƒç”¨å…¶ä»–¾pÈ»Ÿçš„æœåŠ¡ï¼ŒæŒ‰ç…§XML schemež®†æ•°æ®è{æ¢äØ“½W¦åˆå®šä¹‰çš?/span>XMLåQŒåœ¨ç´§æŽ¥ç€çš„äh工节炚w€ç»™è¡¨å•引擎åQŒè¡¨å•引擎渲染。修æ”ÒŽ•°æ®ä¹Ÿæ˜¯åŒæ ïLš„˜q‡ç¨‹åQŒè¡¨å•引擎将处ç†åŽçš„æ•°æ®ä»?/span>XML˜q”回åQŒå·¥ä½œæµå†æ¬¡åšå‡ºè½¬æ¢åQŒè°ƒç”¨æœåŠ¡çš„ä¿®æ”¹åŠŸèƒ½ã€?/span>
上é¢äº”ç§éƒ½æ˜¯æ¯”较常è§çš„åº”ç”¨åœºæ™¯ï¼Œç†æƒ³çš„æƒ…况下åQŒå¼€å‘æ–¹å¼åº”该是˜q™æ ·çš„:ç”Õd‡ºåº”用‹¹ç¨‹à定义‹¹ç¨‹è¡¨å•à表å•与数æ®åº“˜q›è¡Œæ˜ å°„àå¯Ò޵½E‹è¿›è¡Œä¸šåŠ¡ä»¿çœ?/span>à完æˆå¼€å‘。问题是˜q™æ ·çš„ï¼šä½ çš„è¡¨å•引擎是妑›_¤Ÿå¼ºå¤§åQŸè¡¨å•与åŽå°æ˜¯ç›´æŽ¥ç”¨SQL˜q›è¡Œäº¤äº’的,也就æ˜?/span>Transaction Script模å¼åQŒæ²¡æœ‰ä¸šåŠ¡å¯¹è±¡ï¼Œå¯¹äºŽå¤æ‚业务逻辑如何处ç†åQŸå¦‚何ä‹É用规则引擎æ¥è§£å†³ä¸šåŠ¡é€»è¾‘çš„é—®é¢˜ï¼Ÿæƒé™å¦‚何以一¿U?/span>AOP的方å¼å¯¹æ•°æ®æ“作˜q›è¡Œæ¨ªåˆ‡åQ?/span>
呵呵åQŒçº¯å±žä¸ªäº?/span>YYã€?/span>
对于当å‰çš„工作æµåº”用æ¥è¯´åQŒäh工节ç‚ÒŽ— 疑扮演ç€ä¸€ä¸ªéžå¸”R‡è¦çš„è§’è‰²ã€‚å› ä¸ºæ— è®ºæ˜¯ä¼ ç»Ÿçš„ååŒåŠžå…¬ç³»¾lŸè¿˜æ˜¯è¶Šæ¥è¶Šå¤šçš„ä¼ä¸šåº”用åQŒéƒ½éœ€è¦æœ‰äººå‚与到具体的浽E‹ä¸æ¥ã€‚è¿™½‹‡æ–‡ç« ç€é‡åˆ†æžå·¥ä½œæµåº”用ä¸äh工节ç‚ÒŽ‰€æ¶‰åŠåˆ°çš„å‚与者模å¼ä»¥åŠä¸Žæ¤å…³è”的工作™åÒŽ¨¡å¼ï¼Œæœ€åŽä¼šæä¾›éƒ¨åˆ†çš„è§£å†Ïx–¹æ¡ˆä½œä¸ºå‚考ã€?/span>
先简å•说说什么是人工节点ã€?/span>
人工节点的概忉|˜¯ä¸Žè‡ªåŠ¨èŠ‚ç‚¹ç›¸å¯¹çš„ã€‚é¡¾åæ€ä¹‰åQŒähå·¥èŠ‚ç‚¹å°±æ˜¯éœ€è¦æœ‰äººå‚与的节点åQŒåœ¨å®žé™…‹¹ç¨‹ä¸ï¼Œå®ƒä½“现在产生ç”׃h完æˆçš„工作项以åŠç”׃h军_®šä¸€äº›å†³½{–å˜é‡ï¼Œ˜q™äº›å†³ç–å˜é‡ä¼šå¯¹‹¹ç¨‹çš„è¿è¡Œäñ”生媄å“(例如分支的选择½{‰ç‰åQ‰ã€‚自动节点则是由工作‹¹å¼•擎自å·Þp°ƒç”¨å®Œæˆï¼Œä¸éœ€è¦ähçš„å‚与,通常是执行定制的业务æ“作。相比较而言åQŒäh工节ç‚ÒŽ›´å¤šçš„åº”ç”¨åœ¨ç®¡ç†æµ½E‹é‡ŒåQŒè€Œè‡ªåŠ¨èŠ‚ç‚ÒŽ›´å¤šçš„则是应用在ä¼ä¸šä¸šåŠ¡æµ½E‹é‡Œã€?/span>
人工节点的èŒè´£æœ‰ä¸‰ä¸ªåQšç¬¬ä¸€æ˜¯å†³å®šè¯¥èŠ‚ç‚¹çš„å‚与者;½W¬äºŒæ˜¯æ ¹æ®å‚与者生æˆéœ€è¦ähæ¥å¤„ç†çš„工作™å¹ï¼›æœ€åŽæ˜¯å½“工作项被å‚与者处ç†å®Œæ¯•æ—¶åQŒå®ƒž®†ç‘ô¾lè§¦å‘æµ½E‹çš„‹¹è{。å‚与者处ç†å·¥ä½œé¡¹æ—¶å¯ä»¥å¤„ç†ç›¸åº”的业务和设¾|®æµ½E‹å†³½{–å˜é‡ã€?/span>
䏋颿ˆ‘们ž®±æŒ‰ç…§è¿™ä¸‰ä¸ªèŒè´£åˆ†åˆ«å¯¹äh工节ç‚ÒŽ‰€æ¶‰åŠåˆ°çš„å‚与者模å¼å’Œå·¥ä½œ™åÒŽ¨¡å¼è¿›è¡Œåˆ†æžã€?/span>
1ã€?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"> 军_®šå‚与者模å¼?/span>
æ¢å¥è¯è¯´ž®±æ˜¯å†›_®šè¯¥èŠ‚ç‚¹çš„å‚与者,˜q™é‡Œæœ‰ä¸¤¿U模å¼ï¼šå¼•擎自动获å–和最¾lˆç”¨æˆähŒ‡å®šã€?/span>
1åQ?/span>1引擎自动获å–
所谓引擎自动获å–就是由引擎在è¿è¡ŒæœŸè®¡ç®—实际的节点å‚与者,ä¸éœ€è¦æœ€¾lˆç”¨æˆïLš„å‚与。这个计½Ž—基于浽E‹å®šä¹‰æ—¶å¯¹è¯¥èŠ‚ç‚¹å‚与者的定义ã€?/span>
åQ?åQ?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
直接指定人员ã€éƒ¨é—¨æˆ–角色
˜q™ç§æƒ…况最½Ž€å•,也最直接åQŒç”¨æˆ·å®šä¹‰èŠ‚ç‚ÒŽ—¶ç›´æŽ¥åœ¨ç»„¾l‡ç”¨æˆäh ‘里选定人员ã€éƒ¨é—¨æˆ–角色åQŒç„¶åŽåœ¨˜qè¡ŒæœŸæ ¹æ®å®šä¹‰æ‰§è¡Œä¸Žæˆ–者是或的˜q算。大多数的工作æµå¼•擎都支æŒè¿™¿U模å¼ã€‚但很明昑֮ƒä¹Ÿå˜åœ¨ç€å¾ˆå¤§çš„局陿€§ï¼Œå®ƒæ˜¯é™æ€çš„åQŒä¸€æ—¦æµ½E‹å®šä¹‰å®Œæ¯•å‚与者也ž®Þp·Ÿç€å›ºå®šä¸‹æ¥åQŒè¿è¡ŒæœŸçš„ä“Q何å˜åŒ–都ä¸ä¼šå¯¹å‚ä¸Žè€…é€ æˆå½±å“åQŒä¸€ä¸ªå¾ˆ½Ž€å•的需求,请凋¹ç¨‹åQŒèŠ‚ç‚¹çš„å‚ä¸Žè€…éœ€è¦æ˜¯å½“å‰ç”Œ™¯·è€…的部门领导åQŒå› 为申误‚€…在定义期是ä¸ç¡®å®šçš„åQŒæ‰€ä»¥æ ¹æœ¬æ— 法指定节点的å‚与者,所以这¿U模å¼è¿œ˜qœæ»¡‘³ä¸äº†ç”¨æˆïL¨å¾®å¤æ‚一点的需求ã€?/span>
åQ?åQ?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
调用用户定制的计½Ž—å‚与者代ç ?/span>
˜q™ç§æƒ…况通常是由引擎æä¾›ä¸€ä¸ªæŽ¥å£æˆ–是父¾c»ï¼Œç”¨æˆ·éœ€è¦å®žçŽ°æˆ–æ˜¯ç‘ôæ‰¿è¿™ä¸ªæŽ¥å£æˆ–父类åQŒç„¶åŽå®žçŽ°ç›¸åº”çš„æ–ÒŽ³•ã€‚è¿™ä¸ªæ–¹æ³•é€šå¸¸ä¼šä¼ é€’è¿›ä¸€ä¸ªæ‰§è¡Œä¸Šä¸‹æ–‡çš„å‚æ•ŽÍ¼Œç”¨æˆ·ä»£ç 通过˜q™ä¸ªä¸Šä¸‹æ–‡å¯ä»¥è®¿é—®åˆ°å½“剋¹ç¨‹å®žä¾‹çš„ä¿¡æ¯ï¼Œä¾‹å¦‚当å‰èŠ‚ç‚¹çŠ¶æ€ï¼Œå·¥ä½œ‹¹å˜é‡ç‰½{‰ï¼Œç„¶åŽç”¨æˆ·å¯ä»¥æ ÒŽ®å®žé™…ä¸šåŠ¡å’Œå½“å‰æµ½E‹å®žä¾‹ä¿¡æ¯è¿›è¡Œé€»è¾‘计算åQŒæœ€åŽè¿”回一个å‚与者的ID集åˆã€‚对于上一个模å¼é‡Œæåˆ°çš„计½Ž—当å‰ç”³è¯¯‚€…部门领导的例ååQŒè¿™ä¸ªæ¨¡å¼å®žçްè“væ¥éžå¸¸ç®€å•,首先获得当å‰ç”Œ™¯·è€?/span>IDåQŒç„¶åŽåœ¨æ ÒŽ®˜q™ä¸ªID扑ևºè¯¥ç”³è¯¯‚€…éƒ¨é—¨å†æ‰‘Ö‡ºè¯¥éƒ¨é—¨é¢†å¯¼å³å¯ã€?/span>
实际‹¹ç¨‹˜q行到该节点ž®×ƒ¼šè°ƒç”¨ç”¨æˆ·è‡ªå·±å®šåˆ¶çš„计½Ž—å‚与者的代ç åQŒæ–¹æ³•返回的å‚与è€?/span>IDå³ä½œä¸ø™¯¥èŠ‚ç‚¹çš„å®žé™…å‚与者ã€?/span>
˜q™ç§æ¨¡å¼å¯¹äºŽå·¥ä½œ‹¹å¼•擎的实现而言最为简å•ï¼Œå› äØ“å®ƒæŠŠæœ€å¤§çš„å¤æ‚æ€§éƒ½æŠ›ç»™äº†ç”¨æˆøP¼Œç”Þq”¨æˆ·ä»£ç æ¥è®¡ç®—实际的å‚与者。实际上很多开æºçš„工作‹¹å¼•擎采用的都是˜q™ç§æ–¹å¼åQŒä¾‹å¦?/span>JBPM。但是这¿Uæ–¹å¼ç»™ç”¨æˆ·å¸¦æ¥æœ€å¤§çµ‹zÀL€§çš„åŒæ—¶ä¹Ÿå¸¦æ¥äº†å¤æ‚和烦ç。特别是当é¢å¯¹ä¸€ä¸ªæ•°é‡å·¨å¤§çš„‹¹ç¨‹éœ€æ±‚æ—¶åQŒäØ“æ¯ä¸€ä¸ªæµ½E‹çš„æ¯ä¸€ä¸ªäh工节炚wƒ½å®šä¹‰ä¸€ä¸ªå‚与者计½Ž—类是让人头疼的。å†åŠ ä¸ŠçŽ°åœ¨å¼ø™°ƒä¸šåŠ¡çš„æ•æøP¼Œä¸šåŠ¡é‡Œçš„æ”¹å˜è¦è¿…速å馈到‹¹ç¨‹çš„定义里åQŒè®©æœ€¾lˆç”¨æˆäh¥¾~–写或修改这个å‚与者计½Ž—ç±»ä¸çŽ°å®žä¹Ÿä¸å¯èƒ½ã€‚补充一下,˜q™ä¹Ÿæ˜¯ç”¨æˆ·åœ¨è€ƒè™‘采用开æºçš„工作‹¹å¼•擎还是商业工作æµå¼•擎旉™œ€è¦ç€é‡è€ƒè™‘的一个方é¢ã€?/span>
åQ?åQ?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
指定å‰ç®‹èŠ‚ç‚¹çš„å‚与è€?/span>
实际上是用户在节点定义时指定å‚ä¸Žè€…äØ“å‰ç®‹æŸä¸ªèŠ‚ç‚¹çš„å‚与者,当浽E‹è¿è¡Œåˆ°è¯¥èŠ‚ç‚¹ï¼Œå¼•æ“Žä¼šè‡ªåŠ¨èŽ·å–æ‰€æŒ‡å®šçš„剾l节点的å‚ä¸Žè€…ä½œä¸ø™¯¥èŠ‚ç‚¹çš„å®žé™…å‚与者ã€?/span>
˜q™ä¸ªæ¨¡å¼å®žçްèµäh¥òq¶ä¸å›°éš¾åQŒå¤§å¤šæ•°å•†ä¸šå·¥ä½œ‹¹å¼•擎都对该模弘q›è¡Œäº†æ”¯æŒã€‚它能够满èƒö用户的部分特定需求ã€?/span>
åQ?åQ?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
æ›´äØ“å¤æ‚的情å†?/span>
用户的需求永˜qœæ˜¯å¤æ‚的,引擎所è¦åšå¾—就是尽é‡é™ä½Žè¿™¿U夿‚性,‹¹ç¨‹çš„å˜åŒ–è¦èƒ½å¤Ÿ˜q…速跟上业务的å˜åŒ–。考虑下é¢ä¸¤ç§½E微夿‚一点但是åˆå¾ˆå¸¸è§çš„需求。需求一åQšå‚ä¸Žè€…äØ“å½“å‰ç”Œ™¯·è€…的部门领导且èŒä½äؓ副总;需求二åQšå‚ä¸Žè€…éœ€è¦æ˜¯‹¹‹è¯•部的所有女åŒäº‹ã€‚这两ç§éœ€æ±‚模å¼?/span>1ã€?/span>3都ä¸èƒ½æ»¡‘»I¼Œ2å¯ä»¥åQŒä½†æ˜¯æ£å¦‚æåˆ°çš„é‚£æ ·åQŒæ¨¡å¼?/span>2å¯èƒ½ä¼šéžå¸¸çš„烦çåQŒä¸èƒ½é€‚åº”ä¸šåŠ¡çš„æ•æ—÷€‚å…¶å®žè¿™é‡Œçš„å¤æ‚性主è¦ä½“现在åQ?/span>1ã€è¿™é‡Œçš„å‚与者å¯èƒ½æ˜¯˜q行期决定的åQ?/span>2ã€å‚与者的é™åˆ¶æ¡äšgå¯èƒ½éžå¸¸å¤šï¼Œè€Œè¿™äº›æ¡ä»¶ä¸æ˜¯ç®€å•的部门ã€è§’色或èŒä½æ‰€èƒ½æ˜q°çš„ã€?/span>
对于一般的工作‹¹å¼•擎而言åQŒå®ƒä»¬éƒ½ä¼šé€‰æ‹©æ¨¡å¼2的实玎ͼŒè®©ç”¨æˆ¯‚‡ªå·±å®žçŽ°é€»è¾‘ã€‚å®žé™…åœ¨åŽé¢çš„部分解å†Ïx–¹æ¡ˆé‡ŒåQŒæˆ‘ä»¬ä¼šçœ‹åˆ°æ›´äØ“å¥½ä¸€ç‚¹çš„å®žçŽ°æ–¹å¼ã€?/span>
1.2最¾lˆç”¨æˆähŒ‡å®?/span>
˜q行期由最¾lˆç”¨æˆäh¥å†›_®šèŠ‚ç‚¹çš„å‚与者。这也是ä¸å›½å›½æƒ…所独有的特艌Ӏ‚è¿™¿Uæ¨¡å¼æœ€ä¸ºå¸¸è§çš„ž®±æ˜¯ç”¨æˆ·æäº¤å·¥ä½œ™åÒŽ—¶çš„æäº¤é¡µé¢ï¼Œç”¨æˆ·åœ¨è¯¥™åµé¢ä¸Šé€‰å®šä¸‹ä¸€èŠ‚ç‚¹åQˆå¤šæ•°åˆ†æ”¯ç”¨æˆ·é€‰å®šæ—Óž¼‰å’Œä¸‹ä¸€èŠ‚ç‚¹çš„å‚与者。这¿Uæ¨¡å¼æœ¬íw«åƈä¸å›°éš¾ï¼Œé—®é¢˜åœ¨äºŽåœ¨æäº¤é¡µé¢éœ€è¦ç»™ç”¨æˆ·æä¾›ä¸€ä¸ªå‚与者的选择范围åQŒè®©ç”¨æˆ·˜q›è¡Œé€‰æ‹©ã€‚而关于这个选择范围åQŒåˆ™åˆå›žåˆ°å‰é¢æ‰€æåˆ°çš„引擎自动获å–的模å¼åQŒè¿™ä¸ªèŒƒå›´åŒæ äh˜¯éœ€è¦å¼•擎计½Ž—的。于是åˆå›žåˆ°äº†åˆšåˆšè®¨è®ø™¿‡çš„å››¿U模å¼ã€?/span>
2ã€å‚与者执行模å¼?/span>
现在åQŒå·²¾l获得了节点的å‚与者。引擎下一æ¥å°†ä¼šæ ¹æ®è¿™ä¸ªå‚与者生æˆå·¥ä½œé¡¹åQŒæ³¨æ„,˜q™é‡Œçš„å‚与者å¯èƒ½æ˜¯ä¸€ä¸ªähåQŒä¹Ÿå¯èƒ½ä¼šæ˜¯ä¸€ä¸ªäh员范å›ß_¼ˆå›_¤šä¸ªähåQ‰ã€‚于是就产生了å‚与者的执行模å¼åQŒä¹Ÿå¯ä»¥ç†è§£ä¸ºå·¥ä½œé¡¹çš„ç”Ÿæˆæ¨¡å¼ã€?/span>
2.1竞争å‚与
当有多个å‚与者å‚与这个节ç‚ÒŽ—¶ž®×ƒ¼šäº§ç”Ÿç«žäº‰å‚与˜q™ä¸ªæ¨¡å¼ã€‚åŒæ ·ä¸€ä¸ªå·¥ä½œï¼ŒAå¯ä»¥å®ŒæˆåQ?/span>B也å¯ä»¥å®Œæˆï¼ŒäºŽæ˜¯ž®×ƒñ”生竞争,è°å…ˆå¼€å§‹è¿™™å¹å·¥ä½œï¼Œž®Þq”±è°è´Ÿè´£å®Œæˆè¯¥å·¥ä½œã€?/span>
2.2™åºåºå‚与
多个å‚与者按照指定的™åºåºå®Œæˆè¯¥å·¥ä½œé¡¹ã€?/span>A完æˆä¹‹åŽç”?/span>B完æˆåQ?/span>B完æˆä¹‹åŽå†äº¤¾l?/span>C完æˆã€?/span>
2.3åŒæ—¶å‚与
多个å‚ä¸Žè€…åŒæ—¶å¯¹å·¥ä½œ˜q›è¡Œå¤„ç†åQŒæ‰€æœ‰å‚与者å‡å®ŒæˆåŽï¼Œ‹¹ç¨‹¾l§ç®‹å‘压¹è{。这个模å¼å…¶å®žæ¯”è¾ƒå¤æ‚ï¼Œå› äØ“˜q™é‡ŒåŒæ—¶æ¶‰åŠåˆîC¸€ä¸ªå®Œæˆè§„则:是所有å‚与者å‡å®Œæˆå·¥ä½œ™å¹åŽ‹¹ç¨‹‹¹è{åQŒè¿˜æ˜¯æœ‰å…¶ä»–规则åQŸä¾‹å¦‚完æˆ?/span>2个工作项å›_¯‹¹è{åQŒå®Œæˆ?/span>80%的工作项å›_¯‹¹è{。ç¨å€™ä¼šè®¨è®ºåˆ°ã€?/span>
2.4è´Ÿè²å‡è¡¡
˜q™ä¹Ÿæ˜¯ä¸€ä¸ªå¸¸è§çš„需求。这™å¹å·¥ä½?/span>Aå’?/span>B都å¯ä»¥å®Œæˆï¼Œä½†æ˜¯Aç›®å‰æœ?/span>10个待办工作项åQ?/span>Båªæœ‰2个待办工作项。于是用æˆähœŸæœ›è¯¥å·¥ä½œäº¤ç”±Bæ¥å®Œæˆã€‚这里需è¦å®žçŽîC¸€ä¸ªç®€å•的负è²å‡è¡¡ã€‚其实这¿Uæƒ…å†µåªæ˜¯æ™ºèƒ½å†³½{–的一¿U最½Ž€å•的情况åQŒæ‰€è°“智能决½{–是指系¾lŸèƒ½å¤Ÿæ ¹æ®ä¸€å®šçš„æŒ‡æ ‡åQˆç”±æ•°æ®åˆ†æžåQŒä¾‹å¦‚ähå‘˜çš„å¤„ç†æ•ˆçއåQŒå·¥ä½œè´Ÿè½½ç‰½{‰ï¼‰å’Œè§„则æ¥å†›_®šè¯¥èŠ‚ç‚¹çš„å‚与者ã€?/span>
3ã€?/span>工作™å¹å®Œæˆæ¨¡å¼?/span>
˜q™ä¸ªæ¨¡å¼åœ¨å‚与者执行模å¼äØ“åŒæ—¶å‚与时有效。在说到˜q™ä¸ªæ¨¡å¼ä¹‹å‰åQŒå…ˆ½Ž€å•说说工作项å¯èƒ½å˜åœ¨çš„å‡ ¿U特ŒDŠçжæ€ï¼Œ˜q™äº›çжæ€åŒ…括挂赗÷€äh工终æ¢å’Œå§”æ´¾ã€‚æŒ‚èµ·å°±æ˜¯å·¥ä½œé¡¹æš‚æ—¶åœæ¢æ‰§è¡ŒåQŒæŒ‚起会影å“到浽E‹çš„‹¹è{åQŒä¼šå¯ÆD‡´‹¹ç¨‹çš„æŒ‚èµ—÷€‚äh工终æ¢åˆ™æ˜¯äh工手动改å˜è¯¥å·¥ä½œ™å¹çš„状æ€ï¼Œä½¿è¯¥å·¥ä½œ™å¹ç»ˆæ¢æ‰§è¡Œï¼Œ˜q™ä¸ªäººé€šå¸¸ä¼šæ˜¯½Ž¡ç†å‘˜ã€‚äh工终æ¢ä¹Ÿä¼šå¯¹‹¹ç¨‹‹¹è{产生影å“åQŒå½“é™¤åŽ»è¯¥å·¥ä½œé¡¹ä¹‹å¤–çš„æ‰€æœ‰å·¥ä½œé¡¹éƒ½å®Œæˆæ—¶åQŒäh工终æ¢è¯¥å·¥ä½œ™å¹ä¼šè§¦å‘‹¹ç¨‹çš„æµè½¬ã€‚å§”‹z‘Ö°±æ˜¯å°†è¯¥å·¥ä½œé¡¹å§”æ´¾¾l™ä»–人完æˆï¼ŒåŒæ—¶è¯¥å·¥ä½œé¡¹ä¹Ÿå°±¾l“æŸäº†ã€‚äh工终æ¢å’Œå§”派是工作项¾l“æŸçš„特ŒDŠçжæ€ã€?/span>
3.1全部完æˆ
å½“æ‰€æœ‰å·¥ä½œé¡¹éƒ½ç»“æŸæ—¶è§¦å‘节点的结æŸå’Œ‹¹ç¨‹çš„æµè½¬ã€?/span>
3.2完æˆè§„定的个æ•?/span>
节点定义时指定工作项必须完æˆçš„个敎ͼŒå½“完æˆçš„工作™å¹è¾¾åˆ°è¿™ä¸ªæŒ‡å®šçš„个数时触å‘节点的¾l“æŸå’Œæµ½E‹çš„‹¹è{ã€?/span>
3.3完æˆè§„定的百分比
节点定义时指定工作项必须完æˆçš„百分比åQŒå½“完æˆçš„å·¥ä½œé¡¹å æ‰€æœ‰å·¥ä½œé¡¹çš„æ¯”例达到这个指定的癑ֈ†æ¯”时触å‘节点的结æŸå’Œ‹¹ç¨‹çš„æµè½¬ã€?/span>
其实˜q™é‡Œå¾ˆæ˜Žæ˜„¡š„å¯ä»¥çœ‹å‡ºä¸ç®¡æ˜¯æ‰€è°“çš„å‚与者执行模å¼è¿˜æ˜¯å·¥ä½œé¡¹å®Œæˆæ¨¡å¼ä¸è¿‡éƒ½æ˜¯ä¸€å®šçš„规则åQŒæ—¢ç„¶æ˜¯ä¸€å®šçš„规则那必然就é™å®šäº†åº”用的ç‰|´»æ€§ï¼Œç”¨æˆ·èƒ½å¦è‡ªå®šä¹‰è§„则?æ ÒŽ®ä¸šåŠ¡ç‰|´»åœîC¿®æ”¹è§„则?规则引擎+DSL应该是一个ä¸é”™çš„选择ã€?/span>
%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;也就是把%AXIS_LIB%下所ç”?/span>JARæ–‡äšg都导å…?/span>
三ã€å®žéªŒä¸€ä¸?/span>
åœ?/span>%AXIS_HOME%\webapps下找åˆ?/span>axisæ–‡äšg夹,ž®†å…¶æ•´ä¸ªæ‹¯‚´åˆ?/span>%TOMCAT_HOME%\webapps下,å¯åЍ
Tomcat,打开‹¹è§ˆå™¨è®¿é—?/span>http://localhost:8080/axis/åQŒå‡ºçŽîC»¥ä¸‹é¡µé¢è¯´æ˜Žä½ é…ç½®æˆåŠŸäº†ã€‚å¾ˆ½Ž€å•å§åQšï¼‰
å››ã€å‘布我们的½W¬ä¸€ä¸ªç¨‹åº?/span>
½W¬ä¸€ä¸ªç¨‹åºç®€å•çš„˜q”回HELLO WORLDåQ?/span>
public class HelloWorld {
public String sayHello()
{
return "HELLO WORLD!";
}
}
我们的第一¿Uå‘布方å¼ï¼š
ž®?/span>HelloWorld.java拯‚´åˆ?/span>%TOMCAT_HOME%\webapps\axis下,然厞®†å…¶æ”¹åä¸?/span>HelloWorld.jws,˜q™æ ·AXISž®Þp‡ªç„¶å°†å…¶å‘布了。现在写个客æˆïL«¯½E‹åºè®‰K—®ä¸€ä¸‹ï¼š
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.rpc.ParameterMode;
public class TestClient
{
public static void main(String [] args) throws Exception {
String endpoint = "http://localhost:" +"8080"+ "/axis/HelloWorld.jws";//指明æœåŠ¡æ‰€åœ¨ä½¾|?/span>
Service service = new Service(); //创å¾ä¸€ä¸ªService实例åQŒæ³¨æ„是必须的ï¼
Call call = (Call) service.createCall();//创å¾Call实例åQŒä¹Ÿæ˜¯å¿…™åÈš„åQ?/span>
call.setTargetEndpointAddress( new java.net.URL(endpoint) );//为Call讄¡½®æœåŠ¡çš„ä½¾|?/span>
call.setOperationName( "sayHello" );//æ³¨æ„æ–ÒŽ³•å与HelloWorld.javaä¸ä¸€æ øP¼åQ?/span>
String res = (String) call.invoke( new Object[] {} );//˜q”回StringåQŒæ²¡æœ‰ä¼ 入傿•?/span>
System.out.println( res );
}
}
我的‹¹‹è¯•是在jbuilder2005ä¸ï¼Œæ³¨æ„™å¹ç›®ä¸è¦å¯¼å…¥å…¶è‡ªå¸¦çš„AXIS包(当然应该把其ä¸?/span>JARæ–‡äšg替æ¢ä¸€ä¸‹ï¼‰åQŒå¯ä»¥çœ‹åˆ°ç¨‹åºè¿”回了 "HELLO WORLD!"
å¯ä»¥çœ‹åˆ°åœ?/span>AXIS里å‘布æœåŠ¡å…¶å®žæ˜¯ä¸€ä»¶å¾ˆå®ÒŽ˜“的事åQŒè¿™æ˜¯å› 䏸™¿™ä¸ªæœåŠ¡å¾ˆ½Ž€å•çš„åŽŸå› åQšï¼‰ä¸‹é¢æˆ‘们介绽W¬äºŒ¿Uå‘布方å¼ï¼Œ˜q™æ˜¯å¸¸ç”¨çš„ã€?/span>
我们的第二ç§å‘布方å¼åQ?/span>
1ã€å°†HelloWorld.java¾~–译æˆ?/span>HelloWorld.class,攑ֈ°%TOMCAT_HOME%\webapps\axis\WEB-INF\classesä¸?/span>
2ã€åœ¨%TOMCAT_HOME%\webapps\axis\WEB-INF下新å»?/span>deploy.wsddæ–‡äšgåQŒå³SOAPæœåŠ¡å‘布æè¿°æ–‡äšg
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="HelloWorld" provider="java:RPC">
<parameter name="className" value="HelloWorld"/>
<parameter name="allowedMethods" value="sayHello"/>
</service>
</deployment>
åœ?/span>DOS下è{æ¢ç›®å½•到%TOMCAT_HOME%\webapps\axis\WEB-INFåQŒå‘½ä»¤ï¼š
ä½ ä¼šå‘现目录下多了一ä¸?/span>server-config.wsddæ–‡äšgåQŒè¿™ž®±æ˜¯AXIS的酾|®æ–‡ä»Óž¼Œä»¥åŽæ‰€æœ‰çš„æœåŠ¡å‘布æè¿°éƒ½ä¼šåœ¨é‡Œé¢æ‰¾åˆ°ã€‚(当然åQŒä½ å¯ä»¥ç›´æŽ¥ä¿®æ”¹å®ƒï¼Œä¸ç”¨å†å†™deploy.wsddåQ‰ç„¶åŽæ‰“å¼€‹¹è§ˆå™?/span>http://localhost:8080/axis/servlet/AxisServletåQŒä½ ž®×ƒ¼šçœ‹åˆ°ä½ çš„æœåС已å‘å¸?/span>
åŒæ ·ç”¨å®¢æˆïL«¯½E‹åºè®‰K—®ä¸€ä¸‹ï¼šåQˆæ³¨æ„和上边的差别ï¼åQ)
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class HelloClient
{
public static void main(String [] args) throws Exception {
String endpoint = "http://localhost:" +"8080"+ "/axis/services/HelloWorld";//注æ„åQ差别仅仅在˜q™é‡ŒåQï¼
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName("sayHello" );
String res = (String) call.invoke( new Object[] {} );
System.out.println( res );
}
}