Ìá¸ßSOAÓ¦ÓõÄЧÂÊ
 

2009-07-14 ±àÒ룺Ԭ·¢Ã÷ À´Ô´£ºIT168

 

¸ù¾ÝĦ¶û¶¨ÂÉ£¬×Ô´Ó1958Äê·¢Ã÷¼¯³Éµç·ÒÔÀ´£¬´¦ÀíËٶȺʹ洢ÈÝÁ¿Ò»Ö±ÔÚÒÔÿÁ½Äê·­Ò»±¶µÄËÙ¶ÈÔö³¤¡£

µ«ÊÇÈí¼þϵͳµÄ·¢Õ¹ËÙ¶ÈòËƲ»¿É±ÜÃâµØ³¬¹ýÁËÕâÒ»ÇеÄÖ¸ÊýÔö³¤Ëٶȡ£SOAµÄÓ¦ÓÃÔ½À´Ô½¹ã·º£¬¶øÇÒËæÖ®»¹ÓзþÎñÖ®¼äµÄXMLÊý¾Ý´«µÝ·½Ê½¼°Ôö³¤¸üΪѸËÙµÄÍøÂçÓ¦Óá£ËäÈ»ÄãÈ¡µÃÁ˳ɹ¦£¬µ«ÊÇÄãµÄϵͳºÜ¿ÉÄÜ»áÂíÉϳ¬ÔØ£¬¶øÇÒÊÇÔÚÄã×îÒâÏë²»µ½µÄʱºò¡£

Ôõô½â¾öÕⳡΣ»úÄØ£¿¼øÓÚÆóÒµ¼ÆËãµÄÄÚ´æºÍ´æ´¢ÐèÇóµÄ³ÖÐøÔö³¤£¬Èí¼þÒ²ÐèҪά³ÖÏàÓ¦µÄ²½·¥¡£ÎÒÃÇ´ÓÒ»¿ªÊ¼¾ÍҪʹÓÃÕýÈ·µÄ·½·¨ÒÔÈ¡µÃ¿É¿ØÖÆÑÓ³ÙµÄÏßÐÔ¿ÉÀ©Õ¹ÐÔ¡£Êý¾ÝÎļþºÍÐÅÏ¢µÄÈÝÁ¿Ò²ÔÚ³ÖÐøÔö³¤£¬ÐèÒª¸ü¶àµÄ´¦ÀíÄÜÁ¦£¬Ò²Ê¹ÄÇЩÔÚʹÓÃÇ°ÐèÒªÏȽ«Æä¾ßÌ廯µÄÈí¼þÏԵøüΪ±¿ÖØ¡£ÔÚijЩÇé¿öÏ£¬ÕâЩ²Ù×÷ÔÚÖ´ÐÐÇ°»¹ÐèÒª¶à¸öÊäÈë¡£

ÄÇЩ¹¹½¨¼«ÏÞÊÂÎñ´¦Àí£¨XTP£©ÀàÓ¦Ó᪡ª±ÈÈçµç»°¹«Ë¾ºô½Ð½¨Á¢ºÍ¼Æ·Ñ¡¢ÍøÂçÓÎÏ·¡¢°²È«½»Òס¢·çÏÕ¹ÜÀíºÍÔÚÏßÂÃÓζ©Æ±·þÎñ¡ª¡ªµÄÈ˶ÔÕâ·½ÃæÓ¦¸ÃºÜÓÐÁ˽⡣»¹Óиü¹ã·ºµÄÓÃÀý¾ÍÊÇÍøÂçÓ¦ÓÃÐèÒª¸ù¾ÝÍøÂçÈÝÁ¿µÄÔö³¤¶øÌá¸ß£¬µ«ÊǺǫ́ϵͳȴÎÞ·¨Ó¦¶ÔÕâÑùѸÃ͵ÄÁ÷Á¿¡£

±ß½ç³É±¾

ÔÚÓë¿Í»§ÌÖÂÛ¶ÔSOA½øÐÐÑӳٿɿصÄÀ©Õ¹Ê±£¬ÎÒÃǾ­³£Ê¹ÓÃÒ»¸ö³ÆΪ"±ß½ç³É±¾"£¨Boundary Costs£©µÄÊõÓΪ±ãÓÚÀí½â£¬Ç뿼ÂÇÒÔÏÂÇé¾°£ºÓÉÒ»¸öÍøÂçÓ¦Ó㨻òÊý¾Ý¿â¡¢ÍⲿҵÎñ»ï°é¡¢´ÓEDIÎĵµ×ª»»¶øÀ´£©Éú³ÉµÄXMLÎĵµÐèÒª¾­¹ý¶à¸ö·þÎñµÄ´¦Àí£¬¶øÕâ¸ö¹ý³ÌÓÉBPEL»òESB½øÐÐЭµ÷¡£Í¨³£µÄ·½·¨ÊÇ°ÑXML½»¸ø×ÜÏߣ¬ÓÉ×ÜÏ߸ù¾Ý´¦Àí¶¨Òåµ÷ÓÃÏàÓ¦µÄ·þÎñ£¬²¢½«XMLÎĵµ×÷Ϊ·þÎñÇëÇó¸ºÔصÄÒ»²¿·Ö´«µÝ¸ø·þÎñ¡£ÐèÒª¶ÔÊý¾Ý½øÐд¦ÀíµÄ·þÎñ½«ÒÀ´Ë¶ÔXML½øÐжÁÈ¡¡£»¹ÓÐÐèÒªÓëÊý¾Ý¿â½»»¥µÄÇé¿ö¡£ÕâÖÖ·½·¨£¨Èçͼ1£©¿´ÆðÀ´·Ç³£¼òµ¥¡£

Ìá¸ßSOAÓ¦ÓõÄЧÂÊ
¡¡Í¼1£ºÊ¹ÓÃBPEL¹ý³Ì»ò·þÎñ×ÜÏßµ÷Ó÷þÎñ

µ«ÊÇ£¬ÔÚʵ¼ÊÖÐʹÓÃÕâÖÖ·½·¨µÄʱºòÈ´»áÓöµ½À©Õ¹ÐÔÉϵÄÎÊÌâ¡£´ÓÒ»¸ö·þÎñ´©µ½ÁíÒ»¸ö·þÎñµÄ³É±¾ÊǶàÉÙÄØ£¿ÔÚµ÷ÓÃÒ»¸ö¼òµ¥µÄÒµÎñ¹ý³ÌµÄʱºò£¬Õâ¸ö³É±¾ÏûºÄÒª·¢Éú¶àÉÙ´ÎÄØ£¿Èç¹ûXMLÎĵµ·Ç³£´ó£¬´ïµ½¼¸MµÄ·¶Î§¡¢ÊýÁ¿³É°ÙÉÏǧ£¬»òÕßÁ½ÖÖÇé¿öͬʱ·¢ÉúÄØ£¿

¶øÇÒ¿¼Âǵ½´ó¶àIT»·¾³ÊǶàƽ̨ºÍ¶àÖÖ¼¼ÊõµÄ¸´ºÏÌ壬Òò´ËÓÖ¸øÕâÖÖÇé¿öÔö¼ÓÁËеÄÀ§ÄÑ¡£¼´Ê¹´¦ÀíÒýÇæ»ò·þÎñ×ÜÏßµÄÐÔÄܷdz£³öÉ«£¬·þÎñÖն˵Ĵ¦Àí¹ý³ÌÈÔÈ»»á³ÉΪƿ¾±¡£×î½üÔÚÒ»¼Ò¿Í»§ÍøÕ¾ÉÏÏÔʾ£¬Ò»¸öÔ­À´Í¨¹ýÐèÒª15Ãë´¦Àíʱ¼äµÄÒµÎñ¹ý³Ì£¬×î½üÔÚ·åÖµ¸ºÔØʱ¾­³£³¬¹ýÆäSLAЭÒéÔ¼¶¨µÄ30Ãë¡£ÔÚ¹ýÈ¥Á½ÄêÀ¿ª·¢ÈËÔ±°Ñ´ó²¿·Öʱ¼ä¶¼ÓÃÔÚÁËÓÅ»¯µ÷ÕûÕâ15¸ö·þÎñµÄÿһ´¦Ï¸½Ú£¬µ«ÊÇ×îºó¾¾³öµÄºÚÊÖÈ´ÊǸ÷·þÎñÖ®¼äµÄ±ß½ç³É±¾¡£ËûÃǽøÐеÄÒ»´ÎÏêϸ¼ì²âÏÔʾ£¬Õâ15¸ö·þÎñµ÷Óö¼Òª»¨·Ñ1µ½2ÃëµÄʱ¼äÔÚÒ»¸ö¿ªÔ´ÍøÂç·þÎñ¹¤¾ß°üÀï¶ÔXML½øÐнâÎö´¦Àí¡£Õâ²¢²»ÊÇÓÐÒâÎÛÃ↑ԴÍøÂç·þÎñ¹¤¾ß°ü£¬Ö»ÊǼòµ¥µØ˵Ã÷Ò»ÏÂÔÚÖն˽âÎö´¦ÀíXML»áÔö¼ÓÑÓ³Ù£¬²¢ÇÒÏà¼ÓЧ¹û·Ç³£¿É¹Û¡£

Èçͼ2Ëùʾ£¬Ëùµ÷Óõĸ÷¸ö·þÎñ¶¼ÐèÒª´ÓXMLµÄÔÚÏß´®Ðл¯ÐÎʽÖжÁÈ¡ÆäÓÐЧÄÚÈݲ¢½âÎöΪ±¾µØJava»ò.NET¶ÔÏóÐÎʽ£¬È»ºó²ÅÄܱ»ÒµÎñÂß¼­´¦Àí¡£²¢ÇÒ£¬Èç¹û»¹Éæ¼°µ½ÓëÊý¾Ý¿âµÄ½»»¥£¬ÄÇô»¹»á·¢Éú¶îÍâµÄÏà¹ØÆ¥Åä¶ÔÏó¡£×îºó£¬»¹Òª·¢ÉúÏà·´µÄ¹ý³Ì£¬²úÉúÓë·þÎñÇëÇóÏàÓ¦µÄÏìÓ¦²¢¸ù¾ÝÒµÎñ¹ý³Ì½«Æä·¢Ë͵½ÏÂÓηþÎñ¡£

Ìá¸ßSOAÓ¦ÓõÄЧÂÊ
ͼ2£ºXMLÓë¶ÔÏó¼°¹ØϵÊý¾Ý¿âÖ®¼äµÄ·þÎñÇëÇó¼°Ïà·´Á÷³ÌµÄ±ß½ç³É±¾

ÔÚSOAÖУ¬±È½Ï³£ÓõĴ¦ÀíXMLµÄ·½Ê½ÊÇʹÓÃÍøÂç·þÎñºÍXMLBeans¡£Í¨¹ýXMLBeans¿É°ÑÊäÈëºÍÊä³öÍêÈ«¾ßÌ廯ȻºóÔÙÉú³É¶ÔÏó£¬ÕâÑù¿ÉÒÔ×î´ó»¯¿ÉÓÃÐԺʹ¦ÀíÐÔÄÜ¡£ÄÚ´æ´¦Àí¿ÉÄÜ°üÀ¨·ÖÀà¡¢¹ýÂË¡¢ºÏ²¢µÈ²Ù×÷£¬¶øËùÓÐÕâЩ²Ù×÷¶¼»áÔö¼Ó´¦Àíÿ´Îµ÷ÓÃËùÐèµÄÕûÌåÄÚ´æÈÝÁ¿¡£ÕâÖÖ·½Ê½È±·¦À©Õ¹ÐÔ£¬¶øÇÒÎÞ·¨Ó¦Óõ½Õâ¸öÁìÓòµÄÐí¶à³¡¾°ÖС£Ðí¶à²úÆ·Ö§³ÖXMLÁ÷£¬µ«ÕâÖÖ·½Ê½Ò²ÓоÖÏÞÐÔ£¬¼´Èç¹û²»ÏÈ´æ·ÅÊý¾Ý¿ÉÄܾÍÎÞ·¨½øÐÐÈκÎÓÐÒâÒåµÄ²Ù×÷¡£

ÄÇô£¬Äܲ»ÄÜÉè¼ÆÒ»ÖÖ·½Ê½£¬°ÑÐÅÏ¢´¢´æÔÚÒ»¸ö¿ÉÒÔºöÂÔÊý¾Ý´óСºÍµ¥»ú´¦ÀíÄÜÁ¦µÄÓ¦ÓÃÍø¸ñÖÐÄØ£¿¸ÃÓ¦ÓÃÍø¸ñ¿ÉÒÔÀûÓöą̀»úÆ÷µÄ×éºÏÄÚ´æºÍ´¦ÀíÄÜÁ¦À´Íê³ÉÒ»Ïî²Ù×÷£¬±ÈÈç´¦ÀíÒ»¸ö¸´ÔӵĹ«Ê½»ò¶Ôº£Á¿Êý¾Ý½øÐйýÂË¡£¸ÃÓ¦ÓÃÍø¸ñ»¹¿É½«Êý¾ÝµÄÉúÃüÖÜÆÚÑÓ³¤µ½·þÎñÇëÇóÖÜÆÚÖ®Í⣬³ÖÐøµ½·þÎñÆ÷ÖØÆô£¬ÉõÖÁ¿çÔ½ÍøÂç±ß½ç¡£

Èç¹ûÄãÄܽ«Íø¸ñÊý¾Ý´æ´¢µÄÄÜÁ¦ºÍ¸ßЧµÄÁ÷´¦Àí½áºÏµ½Ò»Æ𣬾ÍÄܹ»²úÉúÒ»¸ö´¦ÀíÄÜÁ¦Ô¶´óÓÚÒÔÇ°µÄ¡¢¸ß¶ÈµÄ¡¢¿ÉÀ©Õ¹µÄϵͳ¡£Í¨¹ý½«Ò»Ð©²¹³ä¼¼Êõ½áºÏµ½Ò»Æð£¬ÎÒÃǾÍÄÜÈ¡µÃ°Ñ¼ÆËã²Ù×÷À©Õ¹µ½·Ö²¼Ê½µÄ¼ÆËãÍøÂçÖУ¬¼õÉÙSOA·þÎñ¡¢Ó¦Ó÷þÎñÆ÷ºÍ¿Í»§Ó¦ÓõÈÊý¾ÝÏû·ÑÕߵĴ¦ÀíºÍÄÚ´æÐèÇó¡£ÎÒÃÇ»¹Ïû³ýÁËÊý¾Ý´¦Àí¹ý³ÌÖжÔÖмä´æ´¢Êý¾Ý¿âµÄÐèÇó¡£Í¨¹ýÓ¦ÓÃÍø¸ñÎÒÃÇ»¹¿ÉÒÔ´«ËÍÊý¾ÝµÄ²ÎÊý¶ø²»ÊÇÊý¾Ý±¾Éí£¬ÕâÑù¿ÉÒÔ¼«´óµØÌá¸ßͨÐŲãµÄЧÂʲ¢ÇÒ¼õÉÙÉõÖÁÏû³ý±ß½ç³É±¾¡£

±¾ÎÄ»¹ÓÐÒ»¶ÎÏÔʾӦÓÃÍø¸ñÖд¦Àí´óÐÍXMLÎļþµÄ´úÂëʾÀý¡£ÔÚµäÐ͵ÄXMLÎļþÖÐͨ³£ÓÐһЩԪËØÔÚûÓÐÈκÎÔ¤¶¨ÒåÏÞÖƵÄÇé¿öÏÂÖظ´¡£Í¨¹ýSTAX½âÎöÆ÷¶ÔXML½øÐд¦Àí£¬²¢ÇÒÓÃJAXB´¦ÀíXMLÓëJava¶ÔÏóÖ®¼äµÄ»á»°£¬ÎÒÃÇ¿ÉÒÔ½«ÕâЩÖظ´µÄÔªËØ´ÓXMLÁ÷ÖÐÌáÈ¡³öÀ´£¬È»ºó·Åµ½Ó¦ÓÃÍø¸ñÖÐ×÷Ϊµ¥¶ÀµÄ¶ÔÏó¡£ÕâÑù¶ÔÏó±ãÌî³äµ½ÁËÍø¸ñÖУ¬²¢ÇÒÖ»ÐèÏûºÄÓÐÏÞµÄÄÚ´æ×ÊÔ´¡£Ìî³äµ½Íø¸ñÖ®ºó£¬Íø¸ñ±ã¿ÉÒÔʹÓù¹³ÉÍø¸ñµÄ¶ą̀»úÆ÷¶ÔÊý¾Ý½øÐд¦Àí¡£Ã¿¸öÍø¸ñ³ÉÔ±½øÐÐÒ»Ïî²Ù×÷»ò¹ýÂÇ£¬È»ºó½«Öмä½á¹û´«µÝ¸øÍø¸ñ¿Í»§¶Ë²¢ÓÉÆä´¦Àí³É×îÖÕ½á¹û¡£

ʲôÊÇÓ¦ÓÃÍø¸ñ£¿

Ó¦ÓÃÍø¸ñ¾ÍÊÇÒ»¸ö»ùÓÚ£¨Ó¦ÓÃ״̬Êý¾Ý£©ÄÚ´æ´æ´¢ÒýÇæµÄˮƽ¿ÉÀ©Õ¹µÄ´úÀí¡£ÕâÖÖ·½Ê½¿ÉÒÔÐγÉÒ»¸ö·Ö²¼Ê½ÄÚ´æ³Ø£¬±ãÓÚ½«ÆäÏßÐÔÀ©Õ¹µ½ÓÉÈκθ߶˶øµÍ¼ÛµÄ±ê×¼Ó²¼þ×é³ÉµÄÒìÖÊÍø¸ñ¡£ÔÚÓ¦ÓÃÖÐʹÓÃÓ¦ÓÃÍø¸ñµÄͬʱ»¹ÄÜ»ñµÃ¸ßÐÔÄÜ¡¢À©Õ¹ÐԺͿɿ¿ÐÔ¡£

Ó¦ÓÃÀûÓÃÓ¦ÓÃÍø¸ñµÄÒ»ÖÖ·½Ê½ÊÇʹÓÃAPIˮƽµÄ½Ó¿ÚÄ£ÄâJava Hashmap¡¢.NET Dictionary»òJPA½Ó¿Ú¡£»¹ÓÐÒ»ÖÖ·½Ê½ÊÇʹÓÃSOA»·¾³ÖеķþÎñ½Ó¿Ú¡£ËùÓÐÓ¦ÓúͷþÎñ¶¼½«Êý¾Ý·ÅÈëÓ¦ÓÃÍø¸ñ£¬Ò»×鹲ͬÔËתµÄ»º´æ·þÎñÆ÷£¨ÒÔȺ²¢ÐпØÖƵķ½Ê½£©¸ºÔð¶ÔÊý¾Ý¶ÔÏóµÄ¸üкͱ¸·Ý¡£

Èçͼ3Ëùʾ£¬Ó¦ÓÃÍø¸ñ½ÓÊÕÁËÊäÈëÊý¾ÝµÄÇëÇó²¢Í¨¹ý¸ßЧÍøÂçЭÒé´«Ë͵½ÓµÓÐԭʼʵÀýÊý¾ÝµÄÍø¸ñ½ÚµãP¡£È»ºóԭʼ½Úµã½«¸üеÄÖµ¸´ÖƵ½µÚ¶þ½ÚµãBÒÔ½øÐб¸·Ý£¬ÔÙ°Ñ¿ØÖÆȨ·µ»Ø¸ø·þÎñ¡£

Ìá¸ßSOAÓ¦ÓõÄЧÂÊ
ͼ3£ºÓ¦ÓÃÍø¸ñȺ¿ÉÔÚ²»Í¬»úÆ÷Éϱ£Ö¤ÄÚ´æÊý¾ÝµÄԭʼÑù±¾ºÍ±¸·Ý

Ó¦ÓÃÍø¸ñÔÚ¶ą̀»úÆ÷ÉÏÒÔºÏÊʵÄλÖÃ͸Ã÷ÐÔ´¢´æÊý¾Ý¡£²»¹ÜÓ¦ÓÃÍø¸ñ½«Êý¾Ý´¢´æÔÚʲôµØ·½£¬Ö»ÒªÓÐHashÖµ¾Í¿ÉËæʱ¶ÁÈ¡Ëù´æ´¢µÄÊý¾Ý¡£ÕâÑù¾Í²»ÔÙÐèÒª¸´ÔӵĴ¦ÀíλÖÃÒÀÀµÐÔºÍÊÖ¶¯·ÖÇøµÄÓ¦ÓÃÂß¼­ÁË¡£Èç¹ûÍø¸ñÖеÄÒ»¸ö»ò¸ü¶àµÄ½Úµã³öÏÖ¹ÊÕÏ£¬»òÕßÓÉÓÚÍøÂçÔ­Òò¶øÎÞ·¨½øÐзÃÎÊ£¬ÄÇôӦÓÃÍø¸ñ¿ÉÒÔÂíÉÏ×ö³ö·´Ó¦²¢ÔÚÆäËü½¡¿µµÄ½ÚµãÉÏÖØв¼ÖÃÊý¾Ý¡£¶øÇÒÕâ¸ö¹ý³ÌÎÞÊÓ¹ÊÕϽڵãËù²ÎÓëµÄ×ÔÖ÷¸üС£ÔÚͼ4ÖУ¬¶ÁÈ¡Êý¾Ýʱԭʼ½ÚµãP³öÏÖ¹ÊÕÏ¡£ÓÚÊÇGet()ÇëÇóÂíÉϱ»µ¼ÏòÁ˱¸·Ý½Úµã²¢ÖØÐÂÉú³ÉԭʼÓ뱸·Ý½Úµã¶Ô¡£

Ìá¸ßSOAÓ¦ÓõÄЧÂÊ
ͼ4£ºÓ¦ÓÃÍø¸ñ¿ÉÒÔÌṩÄÚ´æ״̬Êý¾ÝµÄ¹ÊÕÏתÒÆ

´æ´¢ÔÚÍø¸ñÖеÄÊý¾Ý¿ÉÒÔÊÇ´Ó¼òµ¥µÄ±äÁ¿µ½¸´ÔӵĶÔÏóÉõÖÁ´óÐÍXMLÎĵµµÄÈκζ«Î÷¡£ÎÒÃÇÑ¡Ôñ°Ñ¿ÉÄÜÊǷdz£´óµÄXMLÎĵµ·Ö³ÉС¿é²¢ÒÔJava¶ÔÏóµÄ·½Ê½´¢´æÔÚÓ¦ÓÃÍø¸ñÖС£ÕâÑùÎÒÃǾÍÄÜʹÓÃJava APIƽÐд¦Àí¶ÔÊý¾ÝµÄ²éѯÇëÇó¡£

Ó¦ÓÃÍø¸ñÖ§³ÖһϵÁеIJÙ×÷£¬°üÀ¨²¢Ðд¦Àí²éѯ¡¢Ê¼þºÍÊÂÎñ¡£¶ÔÓÚ´óÐÍÊý¾Ý¼¯£¬¿ÉÄܽ«Õû¸öÊý¾Ý¼¯ºÏ×÷Ϊһ¸ö²Ù×÷·ÅÈëÍø¸ñ£¬È»ºóÍø¸ñ¿ÉÒÔ½«ÄÚÈÝ·Ö·¢µ½¶à¸öԭʼºÍ±¸·Ý½ÚµãÒÔʵÏÖ¿ÉÀ©Õ¹ÐÔ¡£ÔÚ¸ü¸ß¼¶µÄÓ¦ÓÃÖУ¬Íø¸ñÉõÖÁ¿ÉÒÔÖ±½ÓÔÚÊý¾Ý´¢´æ½ÚµãÉϲ¢ÐÐÖ´ÐÐÒµÎñÂß¼­£¬²¢ÇÒ¾ßÓÐÊý¾ÝÓëÂß¼­µÄÇ׺ÍÁ¦£¬´Ó¶ø±£Ö¤ÔÚÓëÂß¼­²Ù×÷Ïà¹ØµÄÊý¾Ý´æ´¢»úÆ÷ÉÏÖ´ÐÐÂß¼­¡£

SOAÓëÓ¦ÓÃÍø¸ñ

ÏÂÒ»´úÀûÓÃÓ¦ÓÃÍø¸ñµÄSOAƽ̨¿ÉÒÔÌṩ·þÎñ¼Ü¹¹ËùÄÜÌṩµÄÒ»°ã¹¦ÄÜ£¬±ÈÈç·þÎñ²ãµÄÌáÈ¡¡¢Êý¾Ýת»»Óë·ÓɵÄÖн顢¶àЭÒéÖ§³Ö¡¢ÊÊÅäÆ÷µÈ£¬²¢½«ÆäÓëÓ¦ÓÃÍø¸ñ¹¦ÄܽáºÏÒÔÎÞ·ìʵÏÖ·þÎñÇëÇó¸ºÔØ¡¢¹²Ïí·þÎñ״̬Êý¾Ý¡¢·þÎñ½á¹û»º´æºÍʼþÇý¶¯¼Ü¹¹£¨EDA£©µÄÄÚ´æÊý¾Ý»º´æ¡£

ÄÇôÔõÑù²ÅÄÜʵÏÖÕâЩÓŵãÄØ£¿ÔÚµäÐ͵ÄSOAÇé¾°ÖУ¬Ò»¸ö´¦ÀíÁ÷³ÌÖеĶà¸ö·þÎñ¿ÉÄÜÒªÓëͬÑùµÄÊý¾Ý½øÐн»»¥¡£Èç¹ûûÓÐÍø¸ñ£¬ÄÇôÿ´Îµ÷Ó÷þÎñʱ¶¼±ØÐëΪ·þÎñÌṩËùÐèµÄÊý¾Ý¡£Í¨¹ýÍø¸ñ£¬ÎÒÃÇʵÏÖÁËÒ»ÖÖ"Ë÷Îï±êÇ©"£¨Claim Check£©µÄģʽ¡£

¸Ãģʽ²¢²»Ê¹ÓÃÊý¾Ý¿âÀ´´æ´¢ÏûÏ¢µÄÓÐЧÊý¾Ý£¬¶øÊÇʹÓÃÓ¦ÓÃÍø¸ñ°ÑÐÅÏ¢±£´æÔÚÄÚ´æÖУ¬½öΪ¸÷¸ö·þÎñ´«µÝÒ»¸ö»òÒ»´®Êý¾ÝµÄ¹Ø¼ü×Ö¡£ÕâÒâζ×ÅËäÈ»´ÓÒ»¸ö·þÎñ´«µÝµ½ÁíÒ»¸ö·þÎñµÄ¹Ø¼ü×Ö»á¸ù¾ÝESB¡¢´¦ÀíÒýÇæºÍ´«Êä¶ø±ä»¯£¬µ«ÊÇͨ³£¶¼»á°üº¬ÔÚ·þÎñÇëÇóÖÐ×÷ΪЭÒéÍ·ÊôÐÔµÄÒ»²¿·Ö»òXMLÓÐЧ¸ºÔصÄÑéÖ¤ÔªËØ¡£·þÎñ¿ªÊ¼¾ßÓÐ"Íø¸ñÒâʶ"£¬¿ÉÒÔ¸ù¾ÝÐèÇó¶ÁÈ¡Êý¾Ý²¢µ÷ÓöÔÊý¾Ý¼¯µÄºÏ²¢ÔËËã¡£´¦ÀíÍê³ÉÖ®ºó£¬Êý¾Ý¼¯¿ÉÒÔ¼ÌÐø±£ÁôÔÚÄÚ´æÖÐÒÔ½øÐиßËÙ¶ÁÈ¡²Ù×÷£¬Ò²¿ÉÒÔÒÔ×Ó¼¯ºÍºÏÊʵĸñʽÒ첽дÈëÊý¾Ý¿â×÷Ϊ³¤ÆÚ´æ´¢µÄ¹ØϵÊý¾Ý£¨¼ûͼ5£©¡£

Ìá¸ßSOAÓ¦ÓõÄЧÂÊ
ͼ5£ºSOAÓëÓ¦ÓÃÍø¸ñ¿ÉÌṩ¶Ô·þÎñ״̬Êý¾ÝµÄÄÚ´æ¶ÁÈ¡£¬²¢Ê¹ÓÃ"Ë÷Îï±êÇ©"ģʽ×îС»¯±ß½ç³É±¾

XMLÍø¸ñʾÀý

1. ³¡¾°ÃèÊö

±¾Îĵı³¾°ÐÅÏ¢¼´ÊÇͨ¹ýÍø¸ñ´æ´¢·þÎñÇëÇó¸ºÔØÊý¾ÝÒÔʵÏֶಽҵÎñ¹ý³ÌµÄË÷Îï±êǩģʽ¡£µ«ÊÇÎÒÃǵÄʾÀýµÄÖ÷ҪĿ±êÊÇչʾÈçºÎÔÚÍø¸ñÖд洢´óÐÍXMLÎĵµ²¢¶ÔÆä½øÐвÙ×÷£¨È»ºó²ÅÄÜʹÓÃË÷Îï±êǩģʽ¶ÔÆä½øÐд¦Àí£©¡£

ʾÀý³¡¾°ÈçÏ£ºÒ»¸ö´óÐÍXMLÎĵµÐèÒª±»¶à¸ö·þÎñ´¦Àí¡£ÎÞÐè¶ÔÎĵµ½øÐз´´®Ðл¯¡¢½âÎö¡¢´¦Àí¡¢ÔÙ´®Ðл¯Õû¸öÎĵµ£¬Ö»ÊÇ°ÑÎĵµ·Ö³ÉС¿é£¬×ª»»³ÉJava¶ÔÏó²¢´¢´æÔÚÓ¦ÓÃÍø¸ñÖС£Õâ¸ö²Ù×÷½«ÓÉ·þÎñÁ´ÖеĵÚÒ»¸ö·þÎñ½øÐУ¬»òÕßÓɵÚÒ»¸ö·þÎñ֮ǰµÄ¸¨Öú·þÎñÍê³É¡£´Ó·þÎñÏò·þÎñ´«µÝµÄÊÇСµÃ¶àµÄXMLÏûÏ¢--"Ë÷Îï±êÇ©£¬ÆäÖаüÀ¨¶ÁÈ¡Ó¦ÓÃÍø¸ñÖеÄÊý¾ÝËùÐèµÄ¹Ø¼ü×Ö¡£

´ËÍ⣬²¢²»ÊÇÖ»ÓÐÒÔÐòÁл¯µÄ·½Ê½Ö´Ðжà¸ö·þÎñµÄʱºòÕâ¸öģʽ²ÅÓÐÓá£Ò²¿ÉÒÔÊÇÿÌìÌî³äÒ»´Îµ«ÊÇÒ»Ö±Òª±»¸÷¸ö·þÎñ²Ù×÷»ò±»Óû§Í¨¹ýÃÅ»§Ó¦ÓòéѯµÄÖîÈçÆû³µ×âÁÞÀûÂÊ»òº½°àÊý¾ÝµÈ²Î¿¼Êý¾Ý¡£

2. ²ð·ÖXML

ÎÒÃÇʹÓÃSTAX½âÎöÆ÷½«XMLÎĵµ·Ö½â³É¶à¸ö×é³É²¿·Ö¡£ÒòΪSTAX¿ªÊ¼µÄʱºòÈÔ»á¾ßÌ廯¶ÔÏóÊ÷£¬ËùÒÔÎÒÃÇÈËΪµØÑ°ÕÒÖî¶àÖظ´ÔªËØÖеĵÚÒ»¸ö¡£Èç¹ûXMLÔÚÒ»¸ö³ÆΪ"ÏîÀà"µÄÈÝÆ÷½ÚµãÖк¬Óжà¸ö"Ïî"£¬½âÎöÆ÷¾Í´Ó"Ïî"¿ªÊ¼ÒÔ±ÜÃâ¾ßÌ廯Õû¸ö"ÏîÀà"Ê÷¡£Áбí1ÊÇÕâ¸ö²Ù×÷µÄ¹Ø¼ü²¿·Ö¡£

Áбí1£ºÍ¨¹ýSTAX½âÎö·Ö½âXMLÁ÷²¢ÌáÈ¡Öظ´µÄÔªËØ

EventFilter filter = new EventFilter() {
public boolean accept(XMLEvent event) {
//first off, we need a startElement
if (!event.isStartElement()) return false;
StartElement e = (StartElement)event;
//more importantly, it must be the first "item"
if ((e.getName().getLocalPart()).equals("item"))
return true;
return false;
}
};

È»ºóÎÒÃÇʹÓÃJAXB½«µ¥¸öXMLÔªËØת»»ÎªJava¶ÔÏó¡£JAXBÔÊÐíXMLµÄPOJO³ÊÏÖ£¬ÕâʹÆä´®Ðл¯±ÈÆäËüXML£­Java¼¼Êõ¸ü¼òµ¥¡£ÔÚÔËÐÐÕâ¶Î´úÂë֮ǰ£¬ÎÒÃÇÏÈÓÃEclipse XJC²å¼þ´ÓXML SchemaÖÐÉú³ÉÁËJAXBÀà¡£Áбí2ÏÔʾÁËÕâ¸öXMLÁ÷Ñ­»·µÄ¿ªÊ¼²¿·Ö£¬Æäÿһ´ÎÑ­»·¶¼½«Éú³ÉÒ»¸öJAXB¶ÔÏó¡£

Áбí2£ºÍ¨¹ýJAXBµ÷Óý«XMLÔªËØת»»ÎªJava ¶ÔÏó

while (xmlfer.peek() != null) {
    JAXBElement<Item> o = (JAXBElement<Item>)um.unmarshal(xmler);
    if (o.getValue() instanceof Item) {
       Item ii = (Item) o.getValue();
¡­
}

Ò»µ©ÎÒÃÇÓÐÁËÖ¸Ïò"Ïî"µÄ²ÎÊý£¨JAXB¶ÔÏ󣩣¬ÎÒÃǾͰÑËü·Åµ½Ó¦ÓÃÍø¸ñÖС£ÔÚ±¾ÀýÖУ¬ÎÒÃÇʹÓÃÁË¿ÉÒÔÄ£Ä⣨JavaºÍC++£©Java Map APIºÍ£¨.NET£©Dictionary½Ó¿ÚµÄOracle Coherence£¨¼ûÁбí3£©¡£

Áбí3£ºÊ¹ÓÃMap API½«Java¶ÔÏó´æ´¢µ½Ó¦ÓÃÍø¸ñ

//put into grid
String itemKey = ii.getPartNum();
itemCache.put(itemKey, ii);

3. ÍÚ¾òÓ¦ÓÃÍø¸ñDZÁ¦

¶ÔÏó´æ´¢µ½Íø¸ñÖ®ºó£¬¼´¿ÉÒÔÄÚ´æJava¡¢C++»òC#¶ÔÏóµÄ·½Ê½¶ÁÈ¡Êý¾Ý¡£ÎÒÃÇ»¹¿ÉÒÔÀûÓÃÓ¦ÓÃÍø¸ñµÄһЩ¸ß¼¶¹¦ÄÜ£¬±ÈÈç¶ÔÄÚ´æ¶ÔÏóÊý¾ÝµÄ²¢Ðвéѯ²Ù×÷¡¢³ÖÐø²éѯ¡¢²¢Ðд¦ÀíµÈ¡£

ÔÚ±¾ÀýÖУ¬ÎÒÃÇÖ»¶ÔÍø¸ñÖеÄÊý¾Ý½øÐÐÒ»´Î¼òµ¥µÄ²éѯ¡£Áбí4ÖеĴúÂë¼´ÊÇÒ»¸ö¶ÔËùÓаüº¬"foo"µÄÏîµÄ¼òµ¥´¦ÀíÂß¼­¡£

Áбí4£ºÍ¨¹ýÓ¦ÓÃÍø¸ñÖ´Ðв¢Ðвéѯ

public Object process(Entry en) {
 Item i = (Item)en.getValue();
 if (i != null) {
  i.setComment(i.getComment() + " (modified)");
  en.setValue(i);
 }
 return i;
}
  
¡­and to invoke this¡­

//Create a filter to find items in the grid
Filter theFilter = new LikeFilter("getProductName", "%foo%");

//Pass in a filter and an operation (class)
Map result = itemCache.invokeAll(theFilter, new UpdateComment());

4. ÒÔʼþ·½Ê½Ö´ÐÐÍø¸ñ´¦ÀíÂß¼­

ͨ¹ý¼òµ¥µÄJavaBean¼àÌýÆ÷ģʽ¼´¿ÉʹӦÓÃÍø¸ñÒÔʼþµÄ·½Ê½ÔËÐÐJavaÂß¼­¡ª¡ªÔÚÍø¸ñÖÐдÈë»ò¶ÁÈ¡Êý¾Ýʱ¼´¿É´¥·¢¡£ÕâºÜÏñJavaµÄ¶Áд´¥·¢Æ÷»ò´æ´¢Á÷³Ì¡£Áбí5ÊÇÒ»¸öÏÔʾÍø¸ñÖеĸüÐÂÖµµÄʼþ¡£

Áбí5£ºÍø¸ñÖÐÊý¾Ý¸üкÍÌáȡʱ¼´´¥·¢Ê¼þ

public void entryUpdated(MapEvent me) {
 Item i = (Item) me.getNewValue();
 System.out.println("Updated Item: " + i.getComment());
}

5. Öع¹XML

¶ÔXMLÎĵµ½øÐд¦ÀíµÄÒµÎñ¹ý³ÌÖÕÓÚ½Ó½üÁËβÉù£¬ÏÖÔÚÎÒÃÇÒª´¢´æÍø¸ñÖеÄÊý¾Ý£¬»ò½«Æä¹²Ïí¸øÆäËüÓ¦Óûò·þÎñ¡£Èç¹ûÒª°ÑÊý¾Ý´æ´¢µ½¹ØϵÊý¾Ý¿âÖУ¬ÄÇôºǫ́¾Í»áÓйØϵӳÉä²Ù×÷¶ÔÏóÒÔ²»²ÎÓë·þÎñÓëÓ¦ÓÃÍø¸ñÖ®¼äµÄʵ¼Ê½»»¥µÄ·½Ê½´æÔÚ¡£

¶ÔÓÚÈκÎË÷Îï±êǩģʽµÄʵÏÖÀ´Ëµ£¬¶¼Òª×¢ÒâËùÓÐÏà¹ØµÄ·þÎñÆäÄ¿µÄ¶¼ÊÇʵÏÖÕâ¸öģʽËùÄÜ´øÀ´µÄÓŵ㡣×îÖÕÕâ¸ö¹ý³Ì»¹ÐèÒªÓëÎÞ·¨»òÉÐδ֧³ÖË÷Îï±êǩģʽµÄµÄ·þÎñ´«µÝÐÅÏ¢£¬Òò´Ë»¹ÐèҪͼ5ÖеÄ"ת»»ºÍ·ÓÉ"Õâ²½À´°ÑÊý¾Ý´®Ðл¯»ØXMLÔÚÏ߸ñʽ¡£ËäÈ»ÔÚÕâÖÖÇé¿öÏ»¹»á²úÉú±ß½ç³É±¾£¬µ«ÊDz½Öè1¡¢2¡¢3µÄЧÂÊÒѾ­Ìá¸ßÁ˺ܶࡣ

Áбí6ÏÔʾµÄÊÇʹÓÃÓ¦ÓÃÍø¸ñAPIͨ¹ý¹Ø¼ü×ÖËÑË÷ËùÓжÔÏóºÍʹÓÃJAXB´´½¨XMLµÄ¼¼Êõ¡£ÕâÖ»ÊÇÒ»¸ö¼òµ¥µÄʹÓÃJava´´½¨XMLµÄʾÀý£¬µ«ÊÇ´ó¼Ò¿ÉÒÔ´ÓÖÐÊܵ½Æô·¢£¬Ê¹ÓÃXSLTÑùʽ±í£¬Í¨¹ý¶ÔÍø¸ñµÄ¶à´Î²éѯ»ñµÃÑùʽ±íËùÐèµÄÊý¾Ý¡£ÁíÍ⣬»¹¿ÉÒÔÀûÓÃÁ÷¼¼ÊõÖØÐÂ×é³É·ÖÉ¢µÄXML£¬±ÜÃâÍêÈ«¾ßÌ廯ÄÚ´æDOMÊ÷¡£

Áбí6£ºÖØ×é×é³ÉXMLÒÔת½»¸øÍⲿ·þÎñ

Filter theFilter = new LikeFilter("getProductName", Constants.PRODUCT_FILTER);
Set filtered = itemCache.keySet(theFilter);
  
// Create a blank Purchase Order and populate it.  The non-cached // parts could come from elsewhere and merged using XSLT
ObjectFactory of = new ObjectFactory();
PurchaseOrderType po = of.createPurchaseOrderType();
po.setItems(of.createItems());
       
// Loop over items and add to an object
for (Iterator it = filtered.iterator(); it.hasNext();) {
 Object key = it.next();
 Item i = (Item) itemCache.get(key);
 po.getItems().getItem().add(i);
}

×ÜÖ®£¬Ó¦ÓÃÍø¸ñ¿ÉÒÔ¼«´óµØÌá¸ß´¦Àí´óÁ¿Êý¾ÝµÄSOAÓ¦ÓõÄЧÂʺͿÉÀ©Õ¹ÐÔ¡£Ê¹ÓÃˮƽ¿ÉÀ©Õ¹µÄÓ¦ÓÃÍø¸ñ´æ´¢¡¢´¦Àí·þÎñÇëÇó¸ºÔØ£¬ÎÒÃÇÄÜÔڿɼÆÁ¿µÄÑÓ³Ù·¶Î§ÄÚ¶ÔÓ¦ÓýøÐÐÀ©Õ¹¡£¶øÇÒ£¬Í¨¹ýÓ¦ÓÃÍø¸ñµÄÇ¿´ó¹¦ÄÜ£¬ÎÒÃÇ»¹ÄÜÒÔÄÚ´æ¶ÁÈ¡ËÙ¶ÈÖ´Ðзֲ¼Ê½²¢ÐвéѯºÍ¸üС£Êý¾Ý±ä´óÖ®ºó£¬ÎÒÃÇÖ»ÒªÀ©Õ¹Íø¸ñ¼´¿ÉÊÊÓ¦ÐèÇó¡£ÕâÈÃÎÒÃÇͨ¹ý¸üÉÙµÄÓ²¼þ»ù´¡»ñµÃÁ˱ÈÒÔÍù¸ü¸ßµÄ´¦ÀíÄÜÁ¦£¬¶øÇÒ¿ÉÒÔ´ÓÒ»¿ªÊ¼¾Í´òºÃÀ©Õ¹µÄ»ù´¡£¬¶øÎÞÐëÿ´ÎÅö±ÚʱÖØÐÂÄóöÓ¦ÓõÄÉè¼Æͼֽ¡


»ðÁú¹ûÈí¼þ/UMLÈí¼þ¹¤³Ì×éÖ¯ÖÂÁ¦ÓÚÌá¸ßÄúµÄÈí¼þ¹¤³Ìʵ¼ùÄÜÁ¦£¬ÎÒÃDz»¶ÏµØÎüÈ¡Òµ½çµÄ±¦¹ó¾­Ñ飬ÏòÄúÌṩ¾­¹ýÊý°Ù¼ÒÆóÒµÑéÖ¤µÄÓÐЧµÄ¹¤³Ì¼¼Êõʵ¼ù¾­Ñ飬ͬʱ¹Ø×¢×îеÄÀíÂÛ½øÕ¹£¬°ïÖúÄú¡°ÁìÅÜÄúËùÔÚÐÐÒµµÄÈí¼þÊÀ½ç¡±¡£
×ÊÔ´ÍøÕ¾: UMLÈí¼þ¹¤³Ì×éÖ¯