锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>鎽樿:
榪勪粖涓烘錛寃eb搴旂敤紼嬪簭寮鍙戠殑鐒︾偣鍦ㄤ簬灝嗕笟鍔¢昏緫灝佽鎴愭湇鍔°傚湪榪欑瘒鏂囩珷涓?Masayuki Otoshi寤鴻灝嗕笟鍔℃祦紼嬩篃鍓ョ鍑烘潵,灝卞儚閭d簺涓氬姟榪囩▼綆$悊/宸ヤ綔嫻佷駭鍝佷竴鏍鳳紝搴旂敤鍩轟簬XML鐨勬枃妗f潵鎻忚堪涓氬姟銆備絾鏄繖閲屼粬娣卞叆鍒頒簡(jiǎn)鏇翠綆鐨勭矑搴?鎿嶄綔銆傝繖綃囨枃绔犲悓鏃跺睍紺轟簡(jiǎn)鍙戶鎵跨殑XML濡備綍瀹硅寮鍙戜漢鍛樺簲鐢ㄩ潰鍚戝璞$殑姒傚康鍘繪湁鏁堢殑琛ㄧず嫻佺▼
鎽樿
榪勪粖涓烘錛寃eb搴旂敤紼嬪簭寮鍙戠殑鐒︾偣鍦ㄤ簬灝嗕笟鍔¢昏緫灝佽鎴愭湇鍔°傚湪榪欑瘒鏂囩珷涓?Masayuki Otoshi寤鴻灝嗕笟鍔℃祦紼嬩篃鍓ョ鍑烘潵,灝卞儚閭d簺涓氬姟榪囩▼綆$悊/宸ヤ綔嫻佷駭鍝佷竴鏍鳳紝搴旂敤鍩轟簬XML鐨勬枃妗f潵鎻忚堪涓氬姟銆備絾鏄繖閲屼粬娣卞叆鍒頒簡(jiǎn)鏇翠綆鐨勭矑搴?鎿嶄綔銆傝繖綃囨枃绔犲悓鏃跺睍紺轟簡(jiǎn)鍙戶鎵跨殑XML濡備綍瀹硅寮鍙戜漢鍛樺簲鐢ㄩ潰鍚戝璞$殑姒傚康鍘繪湁鏁堢殑琛ㄧず嫻佺▼銆?br />
鍦ㄥ紑鍙憌eb搴旂敤紼嬪簭鐨勮繃紼嬩腑錛屾垜浠粡甯哥湅鍒頒笟鍔℃祦紼嬪拰閫昏緫鍦╝ction涓竴璧瘋瀹炵幇錛屾瘮濡侸SF涓殑鍚庡彴bean鍜孲truts涓殑action綾匯傚湪鐜版湁妗嗘灦鐨勫府鍔╀笅錛屾瘮濡侲JB鍜孲pring,鎴戜滑鑳芥妸涓氬姟閫昏緫鍓ョ鍑烘潵錛屼絾鏄笟鍔℃祦紼嬪緇堣繕鏄祵鍏ュ湪鍏蜂綋鎿嶄綔涓?br />
BPM(涓氬姟嫻佺▼綆$悊)鏍囧噯錛屾瘮濡侭PMN(涓氬姟嫻佺▼寤烘ā絎﹀彿)鍜孊PEL錛堜笟鍔℃祦紼嬫墽琛岃璦錛夛紝鎻愪緵浜?jiǎn)涓縐嶅垎紱諱笟鍔℃祦紼嬬殑閫斿緞錛岄偅灝辨槸搴旂敤鍩轟簬XML鏂囨。鏉ユ弿榪拌繖縐嶅垎紱匯傝繖縐嶆柟娉曠殑鍙﹀涓涓ソ澶勫彲浠ュ湪SOA(闈㈠悜鏈嶅姟鏋舵瀯)鍩虹涓婅璁″簲鐢ㄧ▼搴忋備絾鏄紝榪欑鏂規(guī)硶浣垮緱鍦╳eb搴旂敤紼嬪簭涓嶈兘寰堝ソ鍦板簲鐢╝ction.actoin鐨勭矑搴﹀浜嶣PM/宸ヤ綔嫻佷駭鍝佹潵璁插お浣庝簡(jiǎn)銆備粬浠氬父涓撴敞浜庢洿楂樼殑涓氬姟鑼冨洿錛屽B2B搴旂敤紼嬪簭鍜屼紒涓氱駭鐨勫簲鐢ㄦ暣鍚堬紝鑰屼笖浠栦滑鍋囧畾涓氬姟鍒嗘瀽浜哄憳浼?xì)鎸夌収鍥?鎵紺虹殑鏂規(guī)硶鏉ユ弿榪版祦紼嬨備絾鏄湪鏇翠綆鐨勭矑搴︿笂錛屾瘮濡俛ction錛屾祦紼嬪啀鐢ㄧ殑鍙兘鎬ф洿澶с?br />
鍥?. 綺掑害姣旇緝
鍦ㄨ繖綃囨枃绔犱腑錛屽浜庢瘮杈冨皬鐨勪笟鍔¢渶姹傝寖鐣達(dá)紝鎴戝緩璁甹ava寮鍙戜漢鍛樹嬌鐢↗-SOFA錛圝ava Services Orchestration for Actions, Action綰AVA鏈嶅姟鍗忚皟錛夈侸-SOFA鏄竴縐嶅崗璋冩湇鍔$殑妗嗘灦錛岃繖閲岀殑鏈嶅姟瀵瑰簲浜庣被涓殑涓涓柟娉曪紝鏃犺鏄疨OJO(綆鍗曟磥鍑Java瀵硅薄)鎴栬厀eb鏈嶅姟銆?br />
鐢變簬綺掑害涓嶅悓錛孞-SOFA騫朵笉鏀寔娑堟伅錛岀姸鎬佺鐞嗭紝鐩戞帶絳夌瓑鐨勫悓姝ャ備絾鏄笉鐢ㄦ媴蹇?jī)锛岀洰鍓嶇殑BPM/宸ヤ綔嫻佷駭鍝侀兘鏀寔榪欎簺鍔熻兘錛屾垜浠彲浠ョ洿鎺ュ簲鐢ㄨ繖浜涗駭鍝併傝繖綃囨枃绔犳墍璁插埌鐨勬湇鍔″崗璋冩鏋朵富瑕佸叧娉ㄤ簬鎻愪緵涓氬姟嫻佺▼鐨勫彲鐢ㄦэ紝灝卞儚鏈嶅姟閭f牱銆?br />鍥?璇存槑浜?jiǎn)鍓ゼ浫潥勪笟鍔箒绋嬪彲浠ヨ鍏朵粬搴旂敤绋嬪簭閲嶅鍒╃敤銆?br />
鍥?2. 鍙噸鐢ㄧ殑涓氬姟嫻佺▼鍙?qiáng)鏈嶅?br />
鐗堟潈澹版槑錛氫換浣曡幏寰桵atrix鎺堟潈鐨勭綉绔欙紝杞澆鏃惰鍔″繀淇濈暀浠ヤ笅浣滆呬俊鎭拰閾炬帴
浣滆?Masayuki Otoshi ;rainh95(浣滆呯殑blog:http://blog.matrix.org.cn/page/rainh95)
鍘熸枃:http://www.javaworld.com/javaworld/jw-04-2006/jw-0417-sofa.html?lsrc=jwrss
Matrix:http://www.matrix.org.cn/resource/article/44/44500_Business+Services.html
鍏抽敭瀛?Business;Services
JSF涓殑綆鍗昦ction
璁╂垜浠潵鐪嬬湅鐢↗SF寮鍙戠殑web搴旂敤紼嬪簭涓殑涓浜涚畝鍗昦ction鐨勪唬鐮併傛垜浠殑渚嬪瓙鏄竴涓畝鍗曠殑妯″瀷鎼滅儲(chǔ)紼嬪簭錛氭牴鎹敤鎴瘋緭鍏ョ殑妯″瀷ID榪斿洖妯″瀷鍏蜂綋淇℃伅銆?br />
浣犲彲浠ヤ粠榪欎釜璧勬簮涓嬭澆榪欎釜紺轟緥鐨勬簮浠g爜銆?br />
鍦ㄦ悳绱sp欏甸潰涓婏紝鏈変竴涓枃鏈鍜屼竴涓猻ubmit鎸夐挳錛岀敤鎴峰彲浠ヨ緭鍏odel id鐒跺悗鎻愪氦銆傝繖涓猨sp欏甸潰閫氳繃涓涓彨ModelBean鐨勫悗鍙癰ean璋冪敤showModel()鏂規(guī)硶銆傚鍒楄〃1鎵紺?
鍒楄〃 1. search.jsp涓殑inputText鍙?qiáng)Submit鎸夐挳<h:inputText id="modelId" value="#{ModelBean.modelId}" />
<h:commandButton type="submit" value="Submit" action="#{ModelBean.showModel}" />
涓轟簡(jiǎn)浜х敓妯″瀷鍏蜂綋淇℃伅欏甸潰(鎼滅儲(chǔ)緇撴灉欏甸潰)錛宻howModel()鏂規(guī)硶鍒涘緩Model瀵硅薄鍜岀壒寰佽〃錛屽啀璧嬪煎埌灞炴у綋涓?br />
鍒楄〃 2. 鍦╞acking bean涓殑showModel()鏂規(guī)硶public String showModel() {
聽聽 if (modelId > 0) {
聽聽聽聽聽聽ModelService modelService = new ModelService();
聽聽聽聽聽聽BeanUtils.copyProperties(this, modelService.create(modelId));
聽聽聽聽聽聽setFeatures(modelService.getFeatures(modelId));
聽聽 }
聽聽 ...
}
楂樼駭寮鍙戜漢鍛樺彲浠ュ儚涓婇潰灞曠ず鐨勪唬鐮佷竴鏍峰皢涓氬姟閫昏緫浠庡叿浣撴搷浣滀腑鍒嗙鍑烘潵錛岄氳繃涓涓猰odel鐨剆ervice瀹炵幇鍒涘緩model鍜宖eatures錛屽啀閫氳繃interface鏉ヨ皟鐢ㄥ畠銆備笉綆℃庢牱錛屽鏋滃叾浠栦漢鏉ョ淮鎶ゅ悗鍙癰ean錛屾垜浠繕鑳戒繚鎸佽繖涓柟娉曡繖鏍風(fēng)畝鍗曞悧錛熻繖鏍峰仛鍙兘琚瘉鏄庨潪甯稿洶闅撅紝鍥犱負(fù)涓嶆槸鎵鏈夌殑寮鍙戜漢鍛橀兘鏄庣櫧闅旂灞曠幇灞傚拰涓氬姟灞傜殑濂藉銆傚鏋滀竴涓寔鏈変笉鍚岃鐐圭殑寮鍙戜漢鍛樺紑鍙戠淮鎶ゅ悗鍙癰ean,濂?浠栧彲鑳戒細(xì)灝嗕笟鍔¢昏緫鍔犲叆鍒皊howModel()涓幓銆傚湪欏圭洰涓紝榪欑鐘跺喌鏄緢騫沖父鐨勶紝鍥犱負(fù)紼嬪簭璁捐璇█錛屾瘮濡傝繖涓緥瀛愪腑鐢ㄥ埌鐨刯ava,瀹硅鎴戜滑鐢ㄥ畠寮哄ぇ鐨勮〃鐜拌兘鍔涘幓瀹炵幇浠諱綍涓氬姟閫昏緫銆傚洜姝わ紝鎴戜滑搴旇鐢ㄥ彟澶栦竴縐嶈璦鍘誨疄鐜頒笟鍔℃祦紼嬶紝鑰屼笉鏄痡ava銆?br />
浠庝竴涓鏋剁殑瑙掑害鏉ョ湅錛岄闃插紑鍙戜漢鍛樻矇婧轟簬灝嗘祦紼嬪拰閫昏緫鏀懼湪涓璧鋒槸闈炲父閲嶈鐨勩傛弿榪頒笟鍔℃祦紼嬬殑璇█鍙兘闅句簬瀹炵幇閫昏緫錛屼絾涓庢鍚屾椂錛屽嵈鑳藉儚緙栫▼璇█涓鏍峰瘜鏈夎〃鐜板姏銆傜洰鍓嶏紝闇瑕佸簲鐢˙PM/宸ヤ綔嫻佺殑姒傚康鍘誨鍔犳鏋剁殑瑙e喅鏂規(guī)銆傚浜庤繖涓棶棰橈紝鎴戝緩璁敤XML-based鏂囨。錛堢▼搴忓畾涔塜ML錛夊幓鎻忚堪嫻佺▼錛屽畠鍙互鎸囧畾闇瑕佹寜鐓т粈涔堥『搴忚皟鐢ㄥ摢浜泂ervice銆備粠鑰岋紝搴旂敤浜?jiǎn)J-SOFA涔嬪悗, showModel()鏂規(guī)硶涓殑嫻佺▼鍙互鍍忎笅闈㈣繖鏍瘋〃紺?
鍒楄〃 3. process.xml <process>
聽聽 <if test="${modelId > 0}">
聽聽聽聽聽聽<service name="modelService" operation="create">
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽 <return name="model" />
聽聽聽聽聽聽</service>
聽聽聽聽聽聽<service name="modelService" operation="getFeatures">
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽 <return name="features" />
聽聽聽聽聽聽</service>
聽聽 </if>
</process>
鍦ㄤ笂闈㈢殑XML涓?modelService鐨勪袱涓搷浣滈氳繃service鏍囩琚皟鐢紝service鏍囩瀵瑰簲浜巗ervice緇勪歡涓墍瀹炵幇鐨勬柟娉曘備粬浠篃鍙互琚簲鐢ㄤ簬鏉′歡鎴栧驚鐜鍙ヤ腑錛屽if,choose,forEach絳夈傜劧鑰岋紝浠栦滑榪樻槸涓嶅緙栫▼璇█瀵屼簬琛ㄧ幇鍔涖傚彟澶栵紝J-SOFA騫朵笉鑳芥墽琛屼粠service鏍囩涓幏寰楃殑妯″瀷鍜岀壒鎬у璞$殑鏂規(guī)硶錛岄櫎闈炴槸閫氳繃getter鏂規(guī)硶銆傝繖浜涢檺鍒舵潯浠惰姹傚紑鍙戜漢鍛樼敤XML鎻忚堪涓氬姟閫昏緫鏃跺叿澶囨洿鍔犲鏉傜殑鐭ヨ瘑鎵嶅共錛屼笉綆℃庢牱錛屽畠浠繕鏄兘甯姪寮鍙戜漢鍛樺喅瀹氬摢浜涗笟鍔¢昏緫搴旇鐢╯ervice綾誨疄鐜般傛湁榪欎簺service鏂瑰紡瀹炵幇鐨勪笟鍔¢昏緫錛屾垜浠彲浠ュ紑鍙戝熀浜嶴OA鐨勫簲鐢ㄧ▼搴忥紝鏇磋兘蹇熼傚簲鍚勭鍚勬牱涓氬姟妯″瀷鐨勫彉鍖栥?br />
鍏稿瀷鐨剋eb搴旂敤紼嬪簭妗嗘灦涓嶆敮鎸佹湇鍔″崗璋冿紝濡侸SF鍜孲truts銆傛墍浠ワ紝鎴戜滑蹇呴』鍦╯howModel()鏂規(guī)硶涓紪鍐欎笅闈㈢殑浠g爜鍘繪墽琛屽鐞嗭細(xì)
鍒楄〃 4. 璋冪敤嫻佺▼鐨剆howModel()鏂規(guī)硶public String showModel() {
聽聽 ProcessInstance process = new ProcessInstance("process.xml");
聽聽 ProcessContext context = new ProcessContext();
聽聽 context.put("modelId", modelId);
聽聽 process.execute(context);
聽聽 BeanUtils.copyProperties(this, context.get("model"));
聽聽 setFeatures((List) context.get("features"));
聽聽 ...
}
鏃犺濡備綍錛屽鏋滄鏋舵嫢鏈夋敮鎸佽皟鐢ㄥ鐞嗙殑鍔熻兘錛屾垜浠笉闇瑕佸垱寤篴ction銆傜浉鍙嶏紝鎴戜滑闇瑕侊細(xì)
--鍒涘緩嫻佺▼瀹氫箟XML
--鍒涘緩鐢ㄤ簬鍦ㄥ鐞嗕腑琚皟鐢ㄧ殑service緇勪歡
--鍦↗SP欏甸潰緙栧啓鏄劇ず澶勭悊榪斿洖鍊肩殑浠g爜
鍦ㄨ繖閮ㄥ垎錛屾垜瑙i噴浜?jiǎn)娴伣E嬪畾涔塜ML濡備綍涓篴ction瀹氫箟嫻佺▼錛涙棤璁哄浣曪紝鍏朵腑鐨勬湁浜涘畾涔夊彲浠ュ湪鐪熷疄涓栫晫涓閲嶇敤銆傚湪涓嬩竴鑺備腑錛屾垜灝嗙敤鍙﹀涓涓緥瀛愬幓璇存槑濡備綍鍐嶅埄鐢ㄦ祦紼嬨?br />
鍙戶鎵跨殑XML
鍒涘緩嫻佺▼鐨勬椂鍊欙紝鎴戜滑鍙戠幇鏈変簺嫻佸彲浠ヨ鍏朵粬鐨勬祦紼嬪叡浜備婦涓緥瀛愶紝鎴戝垱寤轟簡(jiǎn)4涓〉闈紝濡備笅鍥?鎵紺猴細(xì)妯″瀷鎬昏錛屾ā鍨嬬壒鎬э紝鍜屽叾浠栦袱縐嶅垎綾葷儲(chǔ)寮曢〉闈€傛墍鏈夌殑欏甸潰鍖呭惈鐩稿悓鐨勬爣棰樺拰欏佃剼銆傚墠涓や釜妯″瀷欏甸潰鐢ㄥ悓涓涓狹odel瀵硅薄鏉ユ樉紺烘ā鍨嬩俊鎭紝濡傛ā鍨嬪悕縐般傚悗涓や釜鍒嗙被欏甸潰鍚屾牱閭d釜涔熸槸鐢ㄤ竴涓狢ategory瀵硅薄銆傛渶鍚庯紝姣忎釜欏甸潰鏈夎嚜宸卞崟鐙殑欏甸潰澶勭悊榪涚▼銆?br />
鍥?. 嫻佺▼涓殑鍏變韓嫻?br />
鍦ㄨ繖涓渚嬩腑錛屾瘡涓祦錛屽妯″瀷鐗規(guī)э紝鑳界敤subProcess鏍囩鏍囪瘑錛屽畠鑳芥墽琛屽彟澶栦竴涓彨鍋氣渟ub-process鈥濈殑嫻佺▼銆?br />
鍒楄〃 5. modelFeatures.xml璋冪敤sub-processes
(娉ㄦ剰錛氬湪榪欎釜鍜屽悗闈㈢殑娓呭崟涓紝涓轟簡(jiǎn)綆鍖栦唬鐮侊紝service鏍囩涓殑瀛愭爣絳懼皢琚渷鐣?<process>
聽聽 <subProcess path="page.xml" />聽聽---------- (1)
聽聽 <subProcess path="model.xml" /> ---------- (2)
聽聽 <service name="modelService" operation="getFeatures" /> ----- (3)
</process>
欏甸潰鍜屾ā鍨嬫祦紼嬮殣钘忓湪姣忎釜sub-process涓紝浣嗘槸鎴戜滑浠嶇劧鑳芥壘鍒頒粠(1) 鍒?(3)鐨勮繛緇祦銆傛墍浠ワ紝濡傛灉鎴戜滑瑕佷慨鏀規(guī)祦錛屾瘮濡傛敼鍙樻祦鐨勯『搴忎負(fù)(2), (3), (1),閭d箞鍦ㄥ彟澶栫殑嫻佺▼涓紝涔熶笉寰椾笉鍋氳繖縐嶆敼鍙樸?br />
涓轟簡(jiǎn)瑙e喅榪欎釜闂錛孞-SOFA鏀寔涓縐嶅熀浜庣戶鎵跨殑瑙e喅鏂規(guī)硶銆傚熀鏈殑鎬濊礬鏄彁渚涜繖鏍蜂竴縐嶆満鍒訛細(xì)瀹硅瀵煎嚭涓涓熀紜榪囩▼涓殑鏍囩錛岀劧鍚庡啀閲嶅啓瀹冦?br />
鎴戜滑鍙互鍦╬rocess鏍囩涓敤extends灞炴у垱寤轟竴涓鍑?guó)櫩嚱E嬨傚湪榪欎釜渚嬪瓙涓紝榪囩▼鐨勫眰嬈$粨鏋勮兘鐢ㄥ鍥?琛ㄧず錛?br />
鍥?4. 嫻佺▼絳夌駭鍥?br />
Header鍜宖ooter鍦ㄥ熀紜榪囩▼涓畾涔夛紝model鍜孋ategory鍦ㄥ鍑?guó)櫩嚱E嬩腑瀹氫箟錛屽鍑?guó)櫩嚱E嬩粠鍩虹榪囩▼涓戶鎵夸簡(jiǎn)header鍜宖ooter鏍囩銆傛瘡涓涓唬琛ㄤ竴涓壒瀹氱殑欏甸潰鐨勮繃紼嬶紝鍙互鐪嬫垚鏄痬odel鎴朿ategory榪囩▼鐨勬墿灞曘?br />鍦╬age.xml涓紝鎴戜滑浜х敓涓涓猦eader鍜宖ooter,鍙槸錛屾垜浠茍涓嶇煡閬撳埌搴曞湪榪欎釜欏甸潰涓細(xì)鏄劇ず浠涔堝唴瀹?妯″瀷鎴栬呭垎綾伙紵)鍦ㄦ鍒伙紝abstract鏍囩浼?xì)琚鍑簨箒绋嬩腑鐨勫叾浠栨爣绛鹃噸鍐欏Q屽彲浠ユ寜濡備笅鏂瑰紡搴旂敤:
鍒楄〃 6. page.xml (鍩虹嫻佺▼) <process>
聽聽 <service id="header" name="commonService" operation="getHeader" />
聽聽 <service id="footer" name="commonService" operation="getFooter" />
聽聽 <abstract id="contents" />
</process>
鍦ㄥ垪琛?涓紝model.xml鍙互鐪嬫垚鏄粠page.xml寰楀埌鐨勶紝鎵浠ワ紝page.xml琚垪鍏rocess鏍囩鐨別xtends灞炴т腑銆傚湪榪欎釜XML鍧椾腑錛屾垜浠彧闇瑕佹弿榪伴渶瑕侀噸鍐欑殑鏍囩銆傚湪榪欎釜妗堜緥涓紝model.xml涓殑group鏍囩閲嶅啓浜?jiǎn)abstract鏍囩錛屽畠鍦╬age.xml涓湁鐫鐩稿悓鐨刬d 鈥漜ontents鈥?
鍦ㄨ繖涓椂鍊欙紝鎴戜滑鐭ラ亾蹇呴』鍒涘緩Model瀵硅薄錛屽彲鏄垜浠笉鐭ラ亾絀剁珶鍝釜欏甸潰浼?xì)璋冪敤杩欎釜杩嚱E嬨傚洜姝わ紝鎴戜滑涓嶅垱寤轟竴涓叿浣撶殑榪囩▼錛岃屾槸鐢╝bstract鏍囩琛ㄧず鐗瑰畾欏甸潰鐨勫唴瀹癸細(xì)
鍒楄〃 7. model.xml (緇ф壙嫻佺▼) <process extends="page.xml">
聽聽 <group id="contents">
聽聽聽聽聽聽<service name="modelService" operation="create" />
聽聽聽聽聽聽<abstract id="pageContents" />
聽聽 </group>
</process>
濡傚垪琛?鎵紺?鍏蜂綋欏甸潰鍐呭鍦ㄤ粠model.xml緇ф壙鐨刴odelFeatures.xml涓弿榪般傞櫎浜?jiǎn)鐗规ц〃涔嬪鎵鏈夋垜浠渶瑕佸垱寤虹殑鏈嶅姟錛岄兘宸茬粡鍦ㄥ熀紜榪囩▼涓畾涔夛紝鎵浠ユ垜浠彧闇瑕侀噸鍐檃bstract鏍囩錛岀敤service鏍囩璋冪敤getFeature()鎿嶄綔銆傝繖鏍鳳紝寮鍙戜漢鍛樺彲浠ュ皢鐒︾偣鏀懼湪璺熺壒瀹氶〉闈㈢浉鍏崇殑澶勭悊涓娿?br />
鍒楄〃 8. modelFeatures.xml (鍏蜂綋嫻佺▼) <process extends="model.xml">
聽聽 <service id="pageContents" name="modelService" operation="getFeatures" />
</process>
褰撹繃紼嬪疄渚嬭瀹炰緥鍖栨椂錛宲age.xml,model.xml鍜宮odelFeatures.xml榪欎笁涓猉ML鏂囨。鍦ㄦ墽琛屼箣鍓嶈鍒涘緩,濡備笅闈㈠垪琛?鎵鏍囩ず鐨勯偅鏍?
鍒楄〃 9. Model Features鐨勫鍚堟祦紼?<process>
聽聽 <service id="header" name="commonService" operation="getHeader" />
聽聽 <service id="footer" name="commonService" operation="getFooter" />
聽聽 <group id="contents">
聽聽聽聽聽聽<service name="modelService" operation="create" />
聽聽聽聽聽聽<service id="pageContents" name="modelService" operation="getFeatures" />
聽聽 </group>
</process>
搴旂敤XML緇ф壙鏂規(guī)硶,寮鍙戜漢鍛樿兘澶熼噸鐢ㄥ湪鍩虹榪囩▼涓〃榪扮殑宸ヤ綔嫻併傚紑鍙戜漢鍛樺悓鏍峰彲浠ユ彁渚涘畾涔夐氱敤嫻佺殑鎶借薄榪囩▼,緇欏叾浠栧紑鍙戜漢鍛樻弿榪扮壒瀹氶〉闈㈢殑榪囩▼銆?br />
緇撹
鐢╔ML-based鏂囨。鎻忚堪宸ヤ綔嫻佽繖涓蹇靛凡緇忓湪BPM鍜屽伐浣滄祦浜у搧涓疄鏂姐備笉綆℃庢牱,鍒扮洰鍓嶄負(fù)姝?瀹冧富瑕佺敤浜庨珮灞傛涓氬姟鎻忚堪涓傚湪鏈枃涓?鎴戜滑鐪嬪埌,榪欎釜姒傚康鍚屾牱閫傜敤浜巜eb搴旂敤紼嬪簭涓殑action銆?br />鏈嶅姟鍗忚皟妗嗘灦灝嗙洿鎺ュ府鍔╁紑鍙戜漢鍛樺喅瀹氬摢浜涙祦搴旇鐢ㄨ繃紼媂ML鎻忚堪,鍝簺閫昏緫搴旂敤鐢╯ervice瀹炵幇銆傜粨鏋滄槸,搴旂敤紼嬪簭浼?xì)鍩轰簬SOA璁捐鍜屽紑鍙?閲嶇敤鎬т細(xì)鍙樺緱瓚婃潵瓚婂ソ銆?br />
鍏充簬浣滆?/b>
Masayuki Otoshi 鏄竴涓鍏徃鐨勫紑鍙慦eb搴旂敤鐨勯珮綰х▼搴忓憳銆備粬榪樿礋璐h繖瀹跺叕鍙哥殑搴旂敤妗嗘灦鐨勮璁′笌寮鍙戙?
璧勬簮
---涓嬭澆鏈枃婧愮爜錛?br />http://www5f.biglobe.ne.jp/~webtest/jsofa/misc/jw-0417-sofa.zip
---J-SOFA涓婚〉錛?br />http://www5f.biglobe.ne.jp/~webtest/jsofa/
---Matrix:Java,寮婧愬拰涓棿浠剁ぞ鍖?/a>
---Javaworld:http://www.Javaworld.com
]]>
涓嬮潰鏄畠鐨勯欏靛瀹冪殑浠嬬粛錛?br />J-SOFA鏄紪鎺掓湇鍔$粍浠剁殑涓涓交閲忕駭妗嗘灦錛岃繖浜涙湇鍔$粍浠跺寘鎷琂SF涓殑Backing Bean 鍜孲truts涓殑Action錛岀瓑絳夈傚畠浣垮緱鎴戜滑鍙互鎶婁笟鍔℃祦紼嬩粠鍔ㄤ綔涓垎紱誨嚭鏉ュ茍涓斿畠榪樺府鍔╂垜浠皢涓氬姟閫昏緫瀹炵幇涓烘湇鍔°傝繖璁╀綘鐨勫簲鐢ㄦ垚涓哄疄鐜頒簡(jiǎn)SOA鐨勫簲鐢ㄣ?
]]>
鐩綍
1
緇勮妯″瀷聽
聽聽聽聽聽聽1.1
浠嬬粛聽
聽聽聽聽聽聽1.2
姒傝堪聽
聽聽聽聽聽聽1.3 妯″潡聽
聽聽聽聽聽聽聽聽聽1.3.1 鏋勪歡聽
聽聽聽聽聽聽聽聽聽1.3.2 鏋勪歡綾誨瀷聽
聽聽聽聽聽聽聽聽聽1.3.3 瀹炵幇聽
聽聽聽聽聽聽聽聽聽1.3.4 鎺ュ彛聽
聽聽聽聽聽聽聽聽聽1.3.5 鏋勪歡閰嶇疆聽
聽聽聽聽聽聽聽聽聽1.3.6 瑕嗙洊灞炴?/span>聽
聽聽聽聽聽聽聽聽聽1.3.7 澶栭儴鏈嶅姟聽
聽聽聽聽聽聽聽聽聽1.3.8 鍏ュ彛鐐?/span>聽
聽聽聽聽聽聽聽聽聽1.3.9 榪炵嚎聽
聽聽聽聽聽聽聽聽聽1.3.10 妯″潡鐗囨聽
聽聽聽聽聽聽1.4 瀛愮郴緇?/strong>聽
聽聽聽聽聽聽聽聽聽1.4.1 妯″潡鏋勪歡聽
聽聽聽聽聽聽聽聽聽1.4.2 瑕嗙洊聽
聽聽聽聽聽聽聽聽聽1.4.3 澶栭儴鏈嶅姟聽
聽聽聽聽聽聽聽聽聽1.4.4 鍏ュ彛鐐?/span>聽
聽聽聽聽聽聽聽聽聽1.4.5 榪炵嚎聽
聽聽聽聽聽聽1.5 緇戝畾聽
聽聽聽聽聽聽聽聽聽1.5.1 閮ㄧ講緇戝畾鐨?/span>URI褰㈠紡聽
聽聽聽聽聽聽聽聽聽1.5.2 SCA緇戝畾聽
聽聽聽聽聽聽聽聽聽1.5.3 Web鏈嶅姟緇戝畾聽
聽聽聽聽聽聽1.6 鎵╁睍妯″瀷聽
聽聽聽聽聽聽聽聽聽1.6.1 瀹氫箟鎺ュ彛綾誨瀷聽
聽聽聽聽聽聽聽聽聽1.6.2 瀹氫箟瀹炵幇綾誨瀷聽
聽聽聽聽聽聽聽聽聽1.6.3 瀹氫箟緇戝畾綾誨瀷
2 闄勫綍1聽
聽聽聽聽聽聽2.1 鎵撳寘涓庨儴緗?/strong>聽
聽聽聽聽聽聽聽聽聽2.1.1 妯″潡鎵撳寘聽
聽聽聽聽聽聽聽聽聽2.1.2 瀛愮郴緇熸墦鍖?/span>聽
聽聽聽聽聽聽聽聽聽2.1.3 閮ㄧ講聽
聽聽聽聽聽聽2.2 XML Schemas聽
聽聽聽聽聽聽聽聽聽2.2.1 sca.xsd聽
聽聽聽聽聽聽聽聽聽2.2.2 sca-core.xsd聽
聽聽聽聽聽聽聽聽聽2.2.3 sca-interface-java.xsd聽
聽聽聽聽聽聽聽聽聽2.2.4 sca-interface-wsdl.xsd聽
聽聽聽聽聽聽聽聽聽2.2.5 sca-implementation-java.xsd聽
聽聽聽聽聽聽聽聽聽2.2.6 sca-binding-sca .xsd聽
聽聽聽聽聽聽聽聽聽2.2.7 ca-binding-web鏈嶅姟.xsd聽
聽聽聽聽聽聽2.3 UML妯″瀷聽
聽聽聽聽聽聽2.4 SCA姒傚康聽
聽聽聽聽聽聽聽聽聽2.4.1 緇戝畾聽
聽聽聽聽聽聽聽聽聽2.4.2 鏋勪歡聽
聽聽聽聽聽聽聽聽聽2.4.3 鍏ュ彛鐐?/span>聽
聽聽聽聽聽聽聽聽聽2.4.4 澶栭儴鏈嶅姟聽
聽聽聽聽聽聽聽聽聽2.4.5 瀹炵幇聽
聽聽聽聽聽聽聽聽聽2.4.6 鎺ュ彛聽
聽聽聽聽聽聽聽聽聽2.4.7 妯″潡聽
聽聽聽聽聽聽聽聽聽2.4.8 妯″潡鏋勪歡聽
聽聽聽聽聽聽聽聽聽2.4.9 妯″潡鐗囨聽
聽聽聽聽聽聽聽聽聽2.4.10 灞炴?/span>聽
聽聽聽聽聽聽聽聽聽2.4.11 鏈嶅姟聽
聽聽聽聽聽聽聽聽聽2.4.12 鏈嶅姟寮曠敤聽
聽聽聽聽聽聽聽聽聽2.4.13 瀛愮郴緇?/span>聽
聽聽聽聽聽聽聽聽聽2.4.14 緋葷粺聽
聽聽聽聽聽聽聽聽聽2.4.15 榪炵嚎聽
聽聽聽聽聽聽2.5 鎻愯鐨勯檮鍔犵壒鎬?/strong>聽
聽聽聽聽聽聽聽聽聽2.5.1 鎵╁睍妯″瀷聽
聽聽聽聽聽聽聽聽聽2.5.2 澶栭儴鏈嶅姟鐨勭己鐪佸紩鐢?/span>
3 闄勫綍2錛氱瓥鐣ャ佸畨鍏ㄣ佷簨鍔°佸彲闈犳秷鎭?/span>聽
聽聽聽聽聽聽3.1 浠嬬粛聽
聽聽聽聽聽聽3.2 鍦烘櫙聽
聽聽聽聽聽聽3.3 浜や簰絳栫暐聽
聽聽聽聽聽聽聽聽聽3.3.1 鍏ュ彛鐐?/span>聽
聽聽聽聽聽聽聽聽聽3.3.2 澶栭儴鏈嶅姟聽
聽聽聽聽聽聽聽聽聽3.3.3 絳栫暐鍏冩ā鍨?/span>聽
聽聽聽聽聽聽3.4 瀹炵幇絳栫暐聽
聽聽聽聽聽聽3.5 緋葷粺絳栫暐聽
聽聽聽聽聽聽3.6 絳栫暐聽
聽聽聽聽聽聽聽聽聽3.6.1 瀹夊叏聽
聽聽聽聽聽聽聽聽聽3.6.2 浜嬪姟聽
聽聽聽聽聽聽聽聽聽3.6.3 鍙潬娑堟伅聽
聽聽聽聽聽聽3.7 姒傝綾誨瀷聽
聽聽聽聽聽聽聽聽聽3.7.1 WSI_BP_1.1
聽聽聽聽聽聽聽聽聽3.7.2 WSI_BSP_1.0聽
聽聽聽聽聽聽聽聽聽3.7.3 IBM_RAMP_1.0聽
聽聽聽聽聽聽聽聽聽3.7.4 implementationProfile.enterprise
4 鍙傝?/strong>
聽
聽聽聽
鍦ㄤ腑鍥界殑灝忓尯寤鴻涓紝瀹藉甫鐨勮繛鎺ユ垚涓哄熀鏈厤緗紝鎵浠ヨ佺殑紺懼尯鏇劇粡涔熸湁鍚屾牱鐨勯棶棰橈紝鑰屽ぇ閲忕殑鏂扮ぞ鍖鴻繖涓棶棰樺氨涓嶅瓨鍦ㄤ簡(jiǎn)銆傚嵆渚挎湁鏃犵嚎灞鍩熺綉鐨勬妧鏈紝鏈夌嚎瀹藉甫鐨勬帴鍙h繕鏄兘鎻愪緵鐨勩傛柊紺懼尯鐨勫ソ澶勫氨鏄彲浠ュ湪涓寮濮嬪氨閮ㄧ講鏂版妧鏈紝鑰屼笉闇瑕佽蛋鑰佽礬銆?span lang="EN-US">
濡備粖錛屽叏涓栫晫閮藉湪鍤峰毞SOA錛岄偅鎴戜滑涔熼渶瑕佽冨療緹庡浗浜烘庝箞閮ㄧ講SOA錛屼腑鍥戒漢鎬庝箞閮ㄧ講銆傜爺絀惰繖涓棶棰橈紝瀵規(guī)垜浠蔣浠跺叕鍙歌繕鏄鎴戜滑鐨勫鎴烽兘鏄湁鏋佸ぇ甯姪鐨勶紝浠ュ厤鍐嶄竴嬈¤鎴戜滑鐨?span lang="EN-US">鈥?/span>涓繪祦鈥?/span>鍘傚晢璇銆傚洜涓猴紝緹庡浗浜哄浣曢儴緗?span lang="EN-US">SOA鍐沖畾緹庡浗SOA浜у搧鐨勭壒寰侊紝涓浗浜烘庝箞閮ㄧ講鍐沖畾涓浗SOA浜у搧鐨勭壒鎬с?span lang="EN-US">
SOA 鐨勬牳蹇?jī)鏄妸涓氬姟娴伣E嬪姛鑳芥ā鍧楁瀯浠跺寲錛屽茍瀵瑰鎻愪緵鏍囧噯鐨勬湇鍔★紝鍩轟簬榪欎簺鏈嶅姟錛屼紒涓氬唴閮ㄧ殑涓嶅悓涓氬姟閮ㄩ棬鎴栨槸涓嶅悓浼佷笟涔嬮棿鐨勪笟鍔℃暣鍚堝氨鏇村姞瀹規(guī)槗涓浜涖?span lang="EN-US">SOA鐨勫嚭鐜版槸鐢變簬浜掕仈緗戞妧鏈殑鍑虹幇錛屽皢鍘熸潵鍚勮嚜涓洪樀鐨?span lang="EN-US">EAI甯?jìng)鍦烘爣鍑嗗寲銆?span lang="EN-US">
鍦ㄧ編鍥界敱浜庡騫寸殑搴旂敤緋葷粺寤鴻錛屼紒涓氱殑涓氬姟嫻佺▼澶у鏁頒互闈炴爣鍑嗙殑褰㈠紡琚帺钘忓湪鍚勭鍚勬牱鐨勫簲鐢ㄧ郴緇熶箣涓紝姣斿CRM緋葷粺錛?span lang="EN-US">ERP緋葷粺錛?span lang="EN-US">HR緋葷粺錛屼俊鐢ㄨ瘎浼扮郴緇熺瓑絳夈傛墍浠ュ疄鐜?span lang="EN-US">SOA鏋舵瀯鐨勭涓姝ユ槸灝嗛偅浜涙帺钘忓湪涓簲鐢ㄧ郴緇熶箣涓殑涓氬姟鍔熻兘妯″潡鍒囧壊寮鏉ワ紝鍔犱互鍖呰涔嬪悗鎴愪負(fù)鏍囧噯鐨勬湇鍔℃瀯浠訛紝鐒跺悗榪樿灝嗗垎鏁e湪涓嶅悓緋葷粺涓殑鏁版嵁鏁村悎鍖呰鎴愪負(fù)鏁版嵁鏈嶅姟錛屾渶鍚庢牴鎹笟鍔$殑闇瑕佸悓榪?span lang="EN-US">BPEL灝嗗垎鏁g殑鏈嶅姟榪炴帴鎴愪負(fù)鏂扮殑鏈嶅姟銆傛墍浠ョ編鍥藉疄鐜?span lang="EN-US">SOA鐨勬柟娉曚負(fù)錛?span lang="EN-US">
1 銆傚鍘熸湁涓氬姟嫻佺▼鐨勬彁鍙栧拰鍖呰鎴愪負(fù)鏈嶅姟鏋勪歡錛?span lang="EN-US">SCA錛夛紱
2 銆傚鍘熸湁鏁版嵁鐨勬暣鍚堝寘瑁呮垚涓烘暟鎹湇鍔★紙SDO錛夛紱
3 銆傜敤BPEL瀹炵幇鏂扮殑嫻佺▼銆?span lang="EN-US">
榪欎釜鍋氭硶鐨勫彲琛屾у熀浜庝竴涓噸瑕佸墠鎻愶細(xì)鍘熸湁鐨勪笟鍔℃祦紼嬪彲浠ヨ鍒囧壊鍖呰錛堜唬浠烽棶棰橈級(jí)錛屽師鏈夌殑鏁版嵁鍙互鍦ㄤ竴瀹氱▼搴︿笂琚爣鍑嗗寲鍖呰鎴愪負(fù)鏈嶅姟錛屽鏋滄墍鏈夌殑緋葷粺閮介渶瑕侀氳繃浜哄伐鍒囧壊鍜屽寘瑁呭垯浠d環(huán)澶ぇ錛屽繀欏誨瓨鍦ㄤ竴嬈″垏鍓插嬈″鐢ㄧ殑鎯呭喌錛屽惁鍒欏垏鍓茬殑鐜妭鏃犳硶浜у搧鍖栥傜敱浜庣編鍥戒紒涓氱殑搴旂敤緋葷粺澶ч噺閲囩敤浜?jiǎn)鏈夐檺鍘傚晢鐨勪骇鍝佹瘮濡?span lang="EN-US">SAP錛?span lang="EN-US">ORACLE錛?span lang="EN-US">SIEBLE絳夛紝涓瀹氱▼搴︾殑鏍囧噯鍒囧壊鏄瓨鍦ㄧ殑錛屽挨鍏舵槸澶氬勾鐨?span lang="EN-US">EAI瀹炶返錛屼負(fù)鍒囧壊鐨勬爣鍑嗗寲鎵撲笅浜?jiǎn)鍩杭媭銆傚敖綆″姝わ紝澶ч噺鐨勫熀浜庝漢宸ユ湇鍔$殑鍒囧壊榪樻槸蹇呴』鐨勶紝鎵浠ワ紝鍗板害浜烘湁楗悆銆傝岃繖浜涘垏鍓茬殑宸ヤ綔涓庝腑鍥借蔣浠跺鍖呬紒涓氬鍗婃棤鍏熾?span lang="EN-US">
鍥犳錛屾垜浠彲浠ラ瑙佺編鍥藉埗閫犵殑SOA浜у搧灝嗘妸鍏鋒湁鏍囧噯鍒囧壊鍙?qiáng)鎵撳寘鍔熻兘浣滀负閲嶈鐨勫崠鐐瑰Q屼篃鏄駭鍝佺殑浠峰兼墍鍦ㄣ傚競(jìng)鍦哄喅瀹氫駭鍝佺殑鐗瑰緛錛屽氨榪欎箞綆鍗曠殑閫昏緫銆?span lang="EN-US">
涓浗鐨?/span> SOA 濡備綍瀹炵幇鍛紵鎴戜滑鐨勯瑙佹槸澶氬崐鏄妸緋葷粺鎸夌収SOA鎻愪緵鐨勬爣鍑嗘潵寤鴻錛屼富嫻佹槸鎶婄郴緇熷緩璁炬垚涓?/span> SOA 鏍囧噯鐨勭郴緇燂紝鑰屼笉鏄垏鍓插拰鍖呰錛岄偅浜涢渶瑕佸垏鍓插拰鍖呰鐨勭郴緇熺粷澶у鏁頒緷璧栦簬鏈嶅姟鑰屼笉鏄駭鍝併備綔鍑?guó)櫩欎釜鍒ゆ柇鍩杭媭涓や釜鍓嶆彁錛?/span>
1錛?銆?/span> 鍘熸湁鐨勭郴緇熷緢灝戯紱
2錛?銆?/span> 閭d簺宸茬粡瀛樺湪鐨勭郴緇熷緢灝戞槸鑳藉琚爣鍑嗗寲鍒囧壊鐨勶紱
鍥犳錛屽湪涓浗寮鍙?/span> SOA 浜у搧鏈閲嶈鐨勭壒寰佹槸濡備綍鍦ㄤ竴涓爣鍑嗙殑騫沖彴涓婏紙妗嗘灦鍐咃級(jí)鏋勯犱紒涓氭墍闇瑕佺殑鎵鏈夋爣鍑嗘湇鍔★紝騫朵笖瀹規(guī)槗綆$悊鍜屽彂灞曪紙鍙樺寲錛夈備腑鍥藉競(jìng)鍦?/span> ( 瀹㈡埛 ) 闈復(fù)鐨勪富瑕侀棶棰樻湁濡備笅鍑犳潯錛?/span>
鑰冨療涓浗鐨勫競(jìng)鍦烘垜浠彲浠ヤ綔鍑哄涓嬬殑棰勮█錛?/span>
1錛?銆?/span> SOA 灝嗚涓繪祦甯?jìng)鍦烘帴鍙楁垚湄?fù)鏍囧噯鐨勪綋緋葷粨鏋勶紱
2錛?銆?/span> 緹庡浗涓繪祦鐨?a target="_blank">SOA浜у搧鍦ㄤ腑鍥戒細(xì)姘村湡涓嶆湇錛?/span>
3錛?銆?/span> 鍘熸湁緋葷粺灝嗕富瑕佷緷闈犳湇鍔℃潵鍒囧壊錛屾垨鑰呮帹鍊掗噸鏉ワ紱
4錛?銆?/span> 澶ч噺鐨勬柊寤虹郴緇熷皢閲囩敤鏍囧噯鐨勫皬棰楃矑鏋勪歡鏋勯犳祦紼嬬駭鍒殑鏍囧噯鏈嶅姟鏋勪歡錛?/span>
5銆?銆傛櫘鍏冮潰鍚戞瀯浠剁殑涓棿浠跺皢鎴愪負(fù) SOA 涓繪祦涓殑涓浗涓繪祦銆?/span>