Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
NetBPM¹¤×÷Á÷µÄ¼Ü¹¹Éè¼Æ¼°ÊµÏÖdzÎö
 
×÷Õߣºxiangbq À´Ô´£ºCSDN ·¢²¼ÓÚ 2015-12-30
  3593  次浏览      28
 

NetBPM×é¼þ½Ó¿Ú

NetBPMÓÉһϵÁеÄ×é¼þ¹¹³É£¬Ã¿Ò»¸ö×é¼þ¶¼ÊµÏÖÒ»¸öºËÐĽӿڣ¨²ÉÓÃFacade Pattern£©¡£²»Í¬×é¼þ¸÷×Ô¸ºÔðµÄºËÐŦÄܸù¾ÝWfMC¹æ·¶¶øÀ´¡£

NetBPM½Ó¿Úͼ£º

ΪÁ÷³Ì¿ª·¢ÕßÌṩµÄ½Ó¿Ú£¨Process Developer£©£º¸Ã½Ó¿Ú¸ºÔð¼ÓÔØÁ÷³Ì¶¨Òåµ½NetBpmÒýÇæ¡£Ê×ÏÈ£¬Á÷³Ì¿ª·¢ÕßÒÀÕÕnPdl´´½¨Ò»¸öÁ÷³Ì¶¨Ò壬²¢½«Æä´ò°ü³ÉÁ÷³Ì¶¨ÒåѹËõ°ü£¨¸Ã°ü°üº¬Ò»¸öÒµÎñÁ÷³ÌµÄËùÓÐÐÅÏ¢£©£¬È»ºóͨ¹ýNetBPM Web½çÃæ»òÕßÊÇÆäËû·½Ê½°ÑÁ÷³Ì¶¨ÒåѹËõ°ü¼ÓÔØµ½NetBPMÒýÇæ£¬ÔÚ¼ÓÔØ¹ý³ÌÖÐÁ÷³Ì¶¨ÒåѹËõ°ü½«»á±»½âÎö±»±£´æµ½NetBPMÊý¾Ý¿âÖС£

ΪÓû§ÌṩµÄ½Ó¿Ú£¨User£©£ºÕâÀïÓû§±íʾִÐÐÁ÷³ÌµÄÈË¡£Á÷³ÌÔËÐÐÖ÷ÒªÓÐ2ÖÖÐÐΪ£º¿ªÊ¼Ò»¸öÁ÷³ÌºÍÖ´ÐÐÒ»¸ö»î¶¯£¨activity£©¡£¿ªÊ¼Ò»¸öÁ÷³Ì½«´´½¨¸ÃÁ÷³ÌµÄÒ»¸öÁ÷³ÌʵÀý£¬Ò»¸öÁ÷³ÌʵÀý¶ÔÓ¦Á÷³Ì¶¨ÒåµÄÒ»´ÎÖ´ÐС£Ò»¸öÁ÷³ÌʵÀý°üº¬ÁËÒ»¸ö»ò¶à¸ö²¢ÐеÄflow-of-execution£¨¼ûflow£©¡£¶ÔÓÚ´¦ÔÚactivity-state(»î¶¯½Úµã£¬¼ûnPdl)µÄflow£¬ÏµÍ³Ò»¶¨»áÖ¸ÅÉÒ»¸ö¾ßÌåµÄÈË£¨»òÕß×飩»òÕßµÚÈý·½À´Ö´Ðл£¨activity£©¡£Ö´ÐлÊÇExecution InterfaceµÄµÚ¶þÖÖÐÐΪ¡£µ±È»ÁË£¬ÔËת½Ó¿Ú»¹»áʵÏÖһЩÆäËûµÄ·½·¨Èç»ñÈ¡ÈÎÎñÁÐ±í£¬»ñÈ¡ÓÐЧÁ÷³Ì¶¨ÒåÁбíµÈ¡£

ÍⲿITϵͳ£¨External IT Systems£©ºÍNetBpmÒýÇæÖ®¼äµÄ½Ó¿Ú£ºÍⲿITϵͳÄÜÒÔ2ÖÖ·½Ê½ÊµÏÖºÍNetBPMµÄ½»»¥¡£

ϵͳ·¢Æð½»»¥£ºÏµÍ³Ö±½ÓºÍÍⲿITϵͳ½»»¥¡£µ±ÏµÍ³ÏëÒª´¥·¢Á÷³ÌÖеÄijһ¸öactionʱ£¬Ëü±ØÐëʹÓÃÉÏÃæÌáµ½µÄExecution Interface¡£

Á÷³Ì·¢Æð½»»¥£º¶ÔÓÚÁ÷³Ì·¢Æð½»»¥ÕâÖÖÀàÐÍÀ´Ëµ£¬ÐèÒªÓÐInteractors¡£ÕâЩInteractorsÊÇÁ÷³Ì¶¨ÒåµÄÒ»²¿·Ö£¬Ëü°üº¬ÔÚÁ÷³Ì¶¨Òå°üÄÚ£¨Êµ¼ÊÉÏInteractors¾ÍÊÇÄܹ»·ÃÎÊFlowContextµÄ.NET³ÌÐò¼¯£¬Ò²¾ÍÊÇÎÒÃǺóÃæÒªËµµ½µÄ°üº¬Î¯ÍÐÀàµÄ³ÌÐò¼¯ºÏ£©¡£InteractorsÔÚFlowContext£¨FLOWÔËÐÐÉÏÏÂÎÄ»·¾³£©ºÍÍⲿITϵͳ֮¼ä½¨Á¢ÆðÁËͨÐÅÇþµÀ¡£

×éÖ¯¼Ü¹¹Êý¾Ý£¨Organisational Datastore£©ºÍNetBpmÖ®¼äµÄ½Ó¿Ú£º×ÐϸÏëÏ룬NetBpmÊDz»ÊÇ»¹È±Á˵ãʲô£¬Ã»´í£¬ÄǾÍÊÇ×éÖ¯¼Ü¹¹µÄÐÅÏ¢£º±ÈÈç˵ÈË¡¢ÍŶӡ¢²¿ÃÅ¡¢½ÇÉ«µÈ¡£ÒòΪÔÚÏÖʵÇé¿öÖУ¬¶ÔÓÚ²»Í¬µÄ×éÖ¯½á¹¹£¬×éÖ¯¼Ü¹¹ÐÅÏ¢¿ÉÄܱ»±£´æÔÚ²»Í¬ÀàÐ͵ÄÊý¾Ý¿âÖУ¬ÈçLDAPϵͳ£¬¹ØÏµÐÍÊý¾Ý¿âµÈ¡£ÎªÁËÈÃNetBPMÄܹ»ÔÚÒ»¸öÏÖʵµÄ×éÖ¯¼Ü¹¹ÖÐʵÏÖ¿ìËÙ²¿Êð£¬NetBPM°ÑËùÓеÄ×éÖ¯¼Ü¹¹ÐÅÏ¢¶¼¾Û¼¯ÔÚÒ»¸ö×é¼þ£¨Organisation Component£©ÖС£ÕâÖÖ×ö·¨Ò²¾ÍÊÇÎÒÃÇͨ³£ËµµÀ»á»°ÃÅÃæÄ£Ê½£¨Session Fa?ade Pattern£©£¬ËüʹµÃNetBPM·ÃÎÊÀ´×Ô²»Í¬Êý¾ÝÔ´µÄ×éÖ¯¼Ü¹¹ÐÅÏ¢±äµÃ¸üΪ¼òµ¥¡£

ÏÂÃæÎÒÃÇÖð²½½éÉÜNetBPMµÄ¸÷¸ö×é¼þ£¬ÏÂÃæÊÇNetBpm×é¼þ½á¹¹Í¼£º

¶¨Òå×é¼þ(Definition Component£©

¸Ã×é¼þʵÏÖºËÐĽӿÚIDefinitionSessionLocal£¬ÓÃÀ´½âÎö¡¢¼ÓÔØÁ÷³Ì¶¨ÒåѹËõ°ü£¬²¢½«Æä±£´æµ½Êý¾Ý¿âÖС£´ËÍ⣬Ëü»¹Ìṩ»ñȡij¸öÁ÷³Ì¶¨Ò壬»ñÈ¡ËùÓÐÓÐЧÁ÷³Ì¶¨ÒåÁбíµÈºÍÁ÷³Ì¶¨ÒåÏà¹ØµÄ·½·¨¡£

ÔËת×é¼þ(Execution Component)

¸Ã×é¼þʵÏÖÁ˺ËÐĽӿÚIExecutionSessionLocal£¬ËüÊÇNetBPMÒýÇæÍÆ¶¯ºËÐÄ£¬ÈçÇ°ÃæÈçÊö£¬ËüÖ÷ҪʵÏÖ2¸ö·½·¨£º¿ªÊ¼Ò»¸öÁ÷³ÌʵÀý£¨Start ProcessInstance£©ºÍÖ´ÐÐÒ»¸ö»î¶¯(Perform Activity£©¡£ÁíÍ⣬Ëü»¹Ìṩ»ñÈ¡Óû§ÈÎÎñÁÐ±í£¬È¡ÏûÁ÷³ÌʵÀýµÈ¸¨ÖúÁ÷³ÌÔËתµÄ·½·¨¡£

×éÖ¯¼Ü¹¹×é¼þ(Organization Component)

¸Ã×é¼þʵÏÖ½Ó¿ÚIOrganisationSessionLocal£¬Ëü°ÑËùÓеÄ×éÖ¯¼Ü¹¹ÐÅÏ¢¶¼¾Û¼¯ÔÚÒ»Æð£¬°üÀ¨Users¡¢GroupsºÍMemberships¡£ÔËת×é¼þÔÚΪactivitie-stateÖ¸¶¨Ö´ÐÐÕßʱ£¬ÐèÒªÓйØuserºÍgroupµÄÐÅÏ¢¡£ÕâЩÐÅÏ¢½«ÒÔÖ»¶ÁģʽÓÉ×éÖ¯¼Ü¹¹×é¼þÏòÔËת×é¼þÌṩ¡£ÏÂÃæÊÇNetBPMĬÈϵÄ×éÖ¯¼Ü¹¹×éÖ¯Êý¾ÝÄ£ÐÍ¡£ÔÚ´Ë»ù´¡ÉÏ£¬ÎÒÃÇ¿ÉÒԺܷ½±ãµÄʵÏÖ×Ô¶¨ÒåµÄÊʺÏʵ¼ÊÏîÄ¿ÐèÇóµÄ×éÖ¯¼Ü¹¹×é¼þ£¬ÒÔºÍÎÒÃǵÄÓû§Êý¾Ý¿â»òÕßÊÇLDAPϵͳÏà¹ØÁª¡£

NOTE£ºNetBPMÔ´ÂëÖÐʵÏÖµÄÖ»ÊÇÒ»¸ö¼òµ¥µÄ×éÖ¯¼Ü¹¹Ä£ÐÍ£¬µ«ËüÌṩÁËÒ»ÖÖ˼¿¼·½Ïò£¬ÎÒÃÇ¿ÉÒԺܷ½±ãÔÚ´Ë»ù´¡ÉϽøÐÐÀ©Õ¹À´ÊµÏÖÂú×ãÇÐʵÐèÇóµÄ×Ô¶¨Òå×éÖ¯¼Ü¹¹×é¼þ£º£©

ÈÕÖ¾×é¼þ(Log Component)

¸Ã×é¼þʵÏÖ½Ó¿ÚILogSessionLocal£¬ÓÃÀ´¼Ç¼¹¤×÷Á÷ÒýÇæµÄ²Ù×÷ºÛ¼££¬ÏóÊôÐÔÖµµÄ¸üУ¨ÈçÓû§Ìá½»µÄ±íµ¥±»Éϼ¶´ò»ØÖØÐÂÌîд£¬ÄÇô¾Í»á³öÏÖ¶à´Î±íµ¥Êý¾Ý£¬Õâ¾ÍÊÇÒ»ÖÖÊôÐÔ¸üУ©£¬Î¯ÍÐÀàµÄµ÷ÓÃÇé¿öµÈ¶¼»á±»¼Ç¼ÏÂÀ´±£´æµ½Êý¾Ý¿âÖС£

ÈÎÎñµ÷¶È×é¼þ(scheduler component)

¸Ã×é¼þʵÏÖ½Ó¿ÚISchedulerSessionLocal£¬ÔÚÏÖʵµÄÒµÎñÁ÷³ÌÖУ¬ÎÒÃǾ­³£»áÓöµ½ÐèÒª¶¨Ê±´¥·¢Ä³¸öÈÎÎñµÄÐèÇó£¬ÈÎÎñµ÷¶È×é¼þÕýÊÇ×÷ÓÃÓÚ´Ë¡£ÒýÇæ»òÕßÊǵÚÈý·½°ÑÐèÒªÔÚij¸öʱ¿ÌÖ´ÐеÄÈÎÎñÐÅÏ¢£¨°üÀ¨ÈÎÎñÖ´Ðл·¾³¡¢Ö´ÐÐʱ¼äµÈ£©·â×°³ÉJob±£´æµ½Êý¾Ý¿âÖС£ÈÎÎñµ÷¶È×é¼þ½«°´ÕÕÖ¸¶¨µÄʱ¼ä¼ä¸ô²»Í£µÄɨÃèÈÎÎñ±í£¬¸ù¾ÝÖ´ÐÐʱ¼ä¶Ô±ÈÀ´Ö´Ðж¨Ê±µ½Á˵ÄJob¡£

¹ÜÀí¼à¿Ø×é¼þ(Admin Component)

¸Ã×é¼þÓÃÀ´¶ÔÁ÷³Ì¶¨Ò壬Á÷³ÌʵÀýÖ´ÐÐÇé¿öµÈ½øÐÐ¼à¿Ø¡££¨Ô´Âë´ýÍêÉÆ£©ÏÂÃæÊÇNetBpmºËÐÄÏîÄ¿ÔÚVisual ¸Ã×é¼þÓÃÀ´¶ÔÁ÷³Ì¶¨Ò壬Á÷³ÌʵÀýÖ´ÐÐÇé¿öµÈ½øÐÐ¼à¿Ø¡££¨Ô´Âë´ýÍêÉÆ£©

ÏÂÃæÊÇNetBPMºËÐÄÏîÄ¿ÔÚVisual Studio½â¾ö·½°¸ÖеÄÔ´Âë½á¹¹Í¼£¬ËùÓÐ×é¼þ¶¼°üº¬ÔÚWorkflowÎļþ¼ÐÏ£¬Ã¿Ò»¸öÎļþ¼Ð·Ö±ð¶ÔӦʵÏÖÁËÒ»¸öºËÐÄ×é¼þ¡£

NetBpmÖеöÖØÒª¸ÅÄî

flow

flow²»ÖªµÀ·­ÒëΪʲôºÃ£¬ÔÚJBPMÖнÐ×öToken£¬·­ÒëΪÁîÅÆ£¬ÕâÀïÎÒÃǾͽÐ×öflow°É¡£Ëü´ú±íactivity-states£¨»î¶¯½Úµã£¬¼ûnPdl£©µÄÒ»¸ö¡°thread of execution¡±£¬Ï൱ÓÚÊÇÒ»´ÎÁ÷³ÌʵÀýÖ´Ðйý³ÌÖÐÔÚÁ÷³Ì¶¨ÒåÄ£°åÖеÄÁîÅÆ£¨»¹ÕæÄÑÃèÊöÇå³þ£¬¿´ÏÂÃæÒ»ÆðÀí½â£º£©£©¡£Ç°ÃæËµÁË£¬Ò»¸öÁ÷³ÌʵÀý´ú±íÒ»¸öÁ÷³Ì¶¨ÒåµÄÒ»´ÎÖ´ÐС£ÈçÏÂͼËùʾ£¬Á÷³ÌʵÀýµÄ״̬¿ÉÒÔ¿´³ÉÊÇÒ»¿ÅflowsÊ÷¡£

µ±¿ªÊ¼Ò»¸öÁ÷³ÌʵÀýºó£¬ÔÚstart-state(¿ªÊ¼½Úµã£¬¼ûnPdl£¬start-stateʵ¼ÊÉÏ¿ÉÒÔ¿´×öÊÇÒ»ÖÖÌØÊâµÄactivity-state)ÒýÇæ½«×Ô¶¯²úÉúÒ»¸öÃûΪrootµÄflow¡£flowÖаüº¬Á˸ÃÁ÷³ÌʵÀýµÄÏà¹ØÐÅÏ¢£¬ÈçÊôÐÔÖµ¡¢Á÷³Ì¶¨ÒåÐÅÏ¢¡¢flowËùÔÚactivity-stateµÄÖ´ÐÐÕߵȡ£root flowÔÚÓöµ½fork£¨·ÖÉ¢½Úµã£¬¼ûnPdl£©Ö®Ç°£¬½«¸üÐÂÆä´øÓеÄʵʱÐÅÏ¢£¨ÈçÖ´ÐÐÕß¡¢ÊôÐÔÖµµÈ£©£¬ÕâЩʵʱÐÅÏ¢Ëæ×ÅÁ÷³ÌµÄÔËת¶ø±ä»¯¡£Óöµ½forkºó£¬¸ù¾ÝForkHandlerίÍÐÀ࣬root flow½«·ÖÉ¢³ÉÈô¸É£¨>1¸ö£©forked flow£¨ÎÒÃÇ¿ÉÒÔ°Ñroot flow³ÆÎªÕâЩforked flowµÄ¸¸flow£©¡£ÈôÊÇ·ÖɢΪ¶à¸ö£¬Ôò´Ëʱforked flow½«²¢ÐÐÔËÐУ¬¸¸flowÔòÔÝʱÍËÒþ£¬Ö»ÖÁµ½join£¨»ã¾Û½Úµã,¼ûnPdl£©»ã¾Û£¬ÒýÇæ½«¸ù¾Ýjoin¶¨ÒåµÄJoinHandlerίÍÐÀàÀ´È·¶¨¼¤»î¸¸flowµÄ»úÖÆ¡£

NOTE£º¹ØÓÚforkºÍjoin»úÖÆ£¬Çë²Î¿¼nPdl fork¡¢joinС½ÚÒ»ÆðÀí½â¡£

attributes£¨ÊôÐÔ£©

attributeÓÃÀ´±íʾÁ÷³ÌʵÀýÖеıäÁ¿¡£Ò»¸öattribute-instance(ÊôÐÔʵÀý£¬Ò²¾ÍÊÇÊôÐÔÖµ)´ú±íÒ»´ÎÁ÷³ÌʵÀýÖ´Ðйý³ÌÖжÔÓ¦ÊôÐÔµÄʵÀý¡£ÊôÐÔÒ»°ãÓм¸ÖÖ£¬Ò»ÖÖÊÇactivity-state£¨°üÀ¨start-state£©ÐèÒªÓû§»òÕßµÚÈý·½À´Ìîд£¨¸üУ©µÄÊôÐÔ£¨Ò»°ã¶ÔÓ¦Óû§Web½çÃæ±íµ¥ÉÏÒªÌîдµÄÖµ£©£¬Ò»ÖÖÊǽÇÉ«¶ÔÓ¦µÄÊôÐÔ£¬»¹ÓÐһЩÓÃ×÷±êʶÊôÐÔ£¨ÓÃÀ´´æ´¢Ä³Ð©ÐÅÏ¢ÒÔ·½±ãºóÃæµÄ½ÚµãÔËÓÃÕâЩÐÅÏ¢´¦ÀíÂß¼­Åжϣ©¡£

1.serializer£¨ÊôÐÔµÄÐòÁл¯£©:

SerializerºÍHtmlFormatter¶¼ÊÇίÍÐÀ࣬Serializer¸ºÔð°ÑÊôÐÔʵÀýÔÚ.NET-ObjectsºÍÎı¾Á½ÖÖ״̬¼ä½øÐÐת»»£¬ÒÔ·½±ã°ÑÊôÐÔÖµ´æÈëºÍÈ¡³öÊý¾Ý¿â¡£¶øHtmlformatterÖ÷ÒªÓÃÀ´ÁªÏµÊôÐÔÖµºÍWeb FormsÏÔʾʱ¶ÔÓ¦µÄhttp-text¡£

attributeµÄ·¶Î§:attribute-instances£¨ÊôÐÔʵÀý£©ºÍflowÓйء£ÔÚprocess-definition(Á÷³Ì¶¨Òå¸ù½Úµã£¬¼ûnPdl)½ÚµãÖж¨ÒåµÄattributeºÍroot-flow¹ØÁª£¬¶øÔÚconcurrnet-block(²¢ÐÐÔËÐп飬¼ûnPdl)Öж¨ÒåµÄ¾Ö²¿attributeʵÀýÔòºÍforked flow¹ØÁª¡£Ò»¸öflowÄܹ»¡°¿´¼û¡±ºÍËü¹ØÁªµÄËùÓÐÊôÐÔÒÔ¼°¸ÃflowµÄ¸¸flowµÄËùÓÐÊôÐÔ¡£

ÒýÇæÔËÐÐʱÉÏÏÂÎÄ»·¾³£¨Execution Context£©

ExecutionContext£¨ExecutionContextImplÀàÐ͵ĶÔÏó£¬ÎÒÃÇÔÝÇÒ·­ÒëΪÔËÐÐʱÉÏÏÂÎÄ»·¾³£º£©£© °üº¬ÁËÒýÇæÔÚÔËÐÐʱºÍÁ÷³ÌʵÀýÏà¹ØµÄËùÓÐÓÐÓÃÐÅÏ¢£¨ÉÏÎÄÖÐÌáµ½µÄflowcontext¾ÍÊÇÒ»ÖÖExecutionContext£©£¬ËüÔÚίÍÐÀࣨ°üÀ¨Á÷³Ì¶¨ÒåѹËõ°üÖгÌÐò¼¯Öж¨ÒåµÄίÍÐÀࣩºÍÁ÷³ÌÒýÇæÖ®¼ä½¨Á¢ÆðÁËÏ໥ÁªÏµµÄÇþµÀ£¬ÕâÊǷdz£¹Ø¼üµÄ¡£ÈçÉÏÃæExectutionContext ÀàͼËùʾ£¬ExecutionContextImplʵÏÖÁËÏÂÃæÕâЩ½Ó¿Ú£ºIAssignmentContext¡¢IDecisionContext¡¢IForkContext¡¢IActionContext¡¢IJoinContext¡¢IProcessInvocationContext¡¢ITaskContext£¬ÕâЩ½Ó¿Ú¶¼ÊÇΪƥÅäÌØ¶¨µÄίÍÐÀà¶øÉè¼Æ£¬ËüÃǹ淶ÁËÒ»ÖÖÌØ¶¨µÄÉÏÏÂÎÄ»·¾³£¬ÈçIActionContextÆ¥ÅäactionÀàÐÍίÍÐÀ࣬IDecisionContextÆ¥ÅäDecisionHandlerÀàÐÍίÍÐÀàµÈ£¬¶øExectutionContextÊÇËùÓÐÕâÐ©ÌØÊâµÄÔËÐÐʱÉÏÏÂÎÄ»·¾³µÄÒ»¸ö×ۺϡ£µ±ÒýÇæÔÚÔËת×é¼þ°ÑExectutionContext×÷Ϊ²ÎÊý´«Ë͵½¾ßÌåÀàÐ͵ÄίÍÐÀàʱ£¨¹Ø¼ü£ºÕâ¾ÍÊÇίÍÐÀàºÍÁ÷³ÌÒýÇæ½¨Á¢ÁªÏµµÄ·½Ê½£©£¬ExecutionContext¶ÔÏ󽫡°²ðÏ䡱³ÉÎªÌØÊâµÄContext£¬È磺°ÑExecutionContext¶ÔÏ󴫸øactionÀàÐ͵ÄίÍÐÀàRun£¨£©·½·¨Ê±£¬ExecutionContext¶ÔÏ󽫲ðÏäΪActionContext¶ÔÏóÒÔÏÞÖÆÆäÄܹ»µ÷Óõķ½·¨¡£

Èç¡°¼Ì³Ð×ÔIHandlerContextµÄ½Ó¿Ú¡±Í¼ÖÐËùʾ£¬ÕâЩ½Ó¿Ú¶¼¼Ì³ÐÁËͬһ¸ö½Ó¿ÚIHandlerContext¡£IHandlerContextÊÇÒ»¸ö¹æ·¶ÁË×î»ù±¾µÄίÍÐÀà´¦ÀíÉÏÏÂÎÄ»·¾³µÄ½Ó¿Ú£¬ÊµÏָýӿڵļ̳м¸¿ÚÒ²¾Í¶¼ÒªÊµÏÖIHandlerContextÖж¨ÒåµÄ·½·¨£¬µ±È»Ã¿Ò»Öּ̳ÐËüµÄÌØ¶¨½Ó¿ÚÓÖ¶¼¿ÉÒÔ¾ßÓÐÆäÌØ¶¨µÄ·½·¨¡£ÎÒÃÇÏÈ¿´¹«¹²½Ó¿ÚIHanlderContextÀàͼ£ºÈçÉÏIHandlerContext½Ó¿ÚͼËùʾ£¬ÕâЩ½Ó¿Ú¶¼¼Ì³ÐÁËͬһ¸ö½Ó¿ÚIHandlerContext¡£IHandlerContextÊÇÒ»¸ö¹æ·¶ÁË×î»ù±¾µÄίÍÐÀà´¦ÀíÉÏÏÂÎÄ»·¾³µÄ½Ó¿Ú£¬ÊµÏָýӿڼ̳нӿڵÄÀàÒ²¾Í¶¼ÊµÏÖÁËIHandlerContextÖж¨ÒåµÄ·½·¨¡£µ±È»£¬Ã¿Ò»Öּ̳ÐËüµÄÌØ¶¨½Ó¿ÚÓÖ¶¼¿ÉÒÔ¾ßÓÐÆäÌØ¶¨µÄ·½·¨¡£ÎÒÃÇÏÈ¿´¹«¹²½Ó¿ÚIHanlderContextÀàͼ£º

´ó¶àÊýµÄ·½·¨£¬ÎÒÃÇ´Ó·½·¨Ãû³Æ¾Í¿ÉÒÔ¿´³öÆä¾ßÌå×÷ÓÃÁË£¬ÕâÀïÖØµã½éÉÜÏÂGetAttribute£¨£©·½·¨ºÍGetConfiguration£¨£©·½·¨£¬ÕâÊÇÎÒÃÇÔÚдίÍÐÀàʵÏÖʱ£¬Òª¾­³£Óõ½µÄ2¸ö·½·¨¡£GetAttribute£¨£©ÓÃÀ´»ñÈ¡Á÷³ÌʵÀýÖеÄÊôÐÔÖµ£¬°üÀ¨Á÷³ÌÇ°Ãæ´¦ÀíÕß²úÉúµÄÊôÐÔÖµ£¨ÈçÓû§Ìîд±íµ¥µÄÖµ£©ºÍÇ°Ãæ´¦ÀíÒýÇæÊ¼þÖÐÉèÖõıíʾÊôÐÔÖµ£¨×¢£ºIActionHandler¾ßÓÐSetAttribute£¨£©·½·¨£¬¸Ã·½·¨¾­³£ÓÃÀ´±êʶÊôÐÔÖµ£¬¹©ºóÃæ³ÌÐòÂß¼­Ó㩵ȡ£¶øGetConfiguration£¨£©ÓÃÀ´»ñÈ¡Á÷³Ì¶¨ÒåÖÐÉèÖõÄparameter(²ÎÊý£¬ÇënPdlparameterС½Ú)¡£

ÏÂÃæÔÙÀ´¿´¼¸ÖÖµäÐ͵ÄÌØ¶¨ÉÏÏÂÎÄ»·¾³½Ó¿Ú£º

IAssignmentContext£ºÎªIAssignmentHandlerίÍÐÀàÌṩÒýÇæÉÏÏÂÎÄ»·¾³£¬¸Ã½Ó¿Ú¶¨ÒåÁË»ñÈ¡×éÖ¯¼Ü¹¹ÐÅÏ¢µÄ·½·¨£¬¾ßÌåʵÏÖ·½·¨¼ûÀàͼ¡£

IActionContext£ºÎªactionÌṩÒýÇæÉÏÏÂÎÄ»·¾³£¬×¢ÒâÆä¾ßÓÐSetAttributeµÄ·½·¨£¬¿ÉÒÔΪÁ÷³ÌʵÀýÖеÄÊôÐÔ¸³Öµ£¬¾ßÌåʵÏÖ·½·¨¼ûÀàͼ¡£

IForkContext£ºÎªIForkHandlerίÍÐÀàÌṩÒýÇæÉÏÏÂÎÄ»·¾³£¬Ëü¶¨ÒåÁËÈçºÎ´Ó¸¸flow·ÖÉ¢forked flowµÄ·½·¨£¬¼ûÀàͼ¡£

IJoinContext£ºÎªIJoinHandlerίÍÐÀàÌṩÒýÇæÉÏÏÂÎÄ»·¾³£¬Ëü¶¨ÒåÁË»ñÈ¡ÆäËû²¢ÐÐflowsµÄ·½·¨£¬¼ûÀàͼ¡£

IProcessInvocationContext: ΪIProcessInvocationHandlerίÍÐÌṩÒýÇæÉÏÏÂÎÄ»·¾³£¬ÊµÏÖ·½·¨¼ûÀàͼ¡£

ÆäËûµÄίÍÐÀàÐÍÉÏÏÂÎÄ»·¾³³ýÁËʵÏÖ»ù±¾IHandlerContext·½·¨Í⣬ûÓÐÌØ¶¨µÄ·½·¨£¬Çë²Î¿¼IHandlerContext·½·¨¡£

ίÍÐÀà

ÔÚÇ°ÃæÎÒÃÇÒ»Ö±ÌᵽίÍÐÀ࣬ÄÇôίÍÐÀൽµ×ÊÇÊ²Ã´ÄØ£¿ÕâÀïίÍеĸÅÄîÖ¸µÄ²»ÊÇ.NET FrameworkÖÐdelegate£¬ÕâÀï¿ÉÒÔÀí½âËüΪ¡°Î¯ÍС¢´úΪ´¦Àí¡±ÕâÑùµÄ¸ÅÄî¾ÍºÃ¡£

NetBPM±»Éè¼Æ³ÉͨÓõÄÁ÷³Ì´¦ÀíÒýÇæ£¬NetBPMºËÐÄÖ´ÐÐÒýÇæÖ»¸ºÔð´¦Àí×î»ù±¾µÄÒµÎñÁ÷³ÌÂß¼­£¬ËùÓв»¶¨µÄÂß¼­¶¼±»Î¯ÍиøÒ»ÏµÁеĽӿڣ¬ÕâЩ½Ó¿Ú³Æ×÷Delegation Interfaces£¨Î¯Íнӿڣ©£¬¶øÊµÏÖÕâЩ½Ó¿ÚµÄÀà¾ÍÊÇίÍÐÀà¡£Á÷³Ì¶¨ÒåÔ¼¶¨ÔÚʲô³¡ºÏʹÓÃʲôίÍÐÀàÐÍ£¬ÒýÇæºÍίÍÐÀàÈçºÎ¹ØÁªÒ²ÔÚÁ÷³Ì¶¨ÒåÖÐÍê³É¡£

ΪÁË´ïµ½×î´óµÄ¿ÉÀ©Õ¹ÐÔ£¬Á÷³Ì¿ª·¢ÕßÔÚÁ÷³Ì¶¨Òåʱ¿ÉÒÔÑ¡ÔñÏÂÃæÈÎÒâÒ»ÖÖίÍÐÀàʵÏÖ·½Ê½£º

ʹÓÃÒѾ­ÔÚNetBpmÒýÇæÖÐʵÏÖµÄÓÐЧµÄίÍÐÀà¡££¨¾ßÓÐͨÓÃÐÔµÄίÍн¨Òé²ÉÓÃÕâÖÖ·½Ê½ÔÚÒýÇæÖж¨Ò壬ÒÔ±ãÖØÓã©

ʹÓÃ×Ô¶¨ÒåµÄίÍÐÀ࣬ÒÔ.NET³ÌÐò¼¯µÄÐÎʽͨ¹ýÁ÷³Ì¶¨ÒåѹËõ°ü¶¯Ì¬¼ÓÔØ¡£

ÕýÊÇ·½Ê½2ÕâÖÖÐÎʽ¸øNetBPM´øÀ´Á˼«´óµÄÁé»îÐÔ£¬°ÑÖ»ÊʺÏÓÚij¸öÌØ¶¨Á÷³ÌµÄµÄ³ÌÐòÂß¼­£¨ÕâЩÍùÍùÕ¼ÁË´ó¶àÊý£©ÒÔ.NET³ÌÐò¼¯µÄÐÎʽ¶¨ÒåÔÚÁ÷³Ì¶¨ÒåѹËõ°üÖУ¬NetBpmͨ¹ýÁ÷³Ì¶¨Òå×é¼þ½«Æä½âÎö²¢±£´æÖÁÊý¾Ý¿â¡£µ±ÒýÇæÔËתÁ÷³ÌÐèÒªµ÷ÓÃίÍÐÀàʱ£¬ÒýÇæÀûÓ÷´Éä¼¼ÊõʵÀý»¯³öίÍÐÀà¶ÔÏó£¬È»ºóÀûÓÃÉÏÎĽéÉܵÄÔËÐÐʱÉÏÏÂʱ»·¾³£¨ExecutionContext£©½¨Á¢ÆðίÍÐÀàºÍÒýÇæÖ®¼äµÄ½»»¥ÇþµÀ£¬ÕâÕæÊÇÒ»¸öÁîÈËÐ˷ܵÄÉè¼Æ£º£©

ÏÂÃæÊÇNetBpmÖеÄίÍÐÀàÐÍ£¨½¨ÒéºÍExecutionContextÒ»½ÚÒ»ÆðÀí½â£©£º

AssignmentHandler£º

ʵÏÖ½Ó¿ÚIAssignmentHandler, Ëü¿ÉÒÔºÍ×éÖ¯¼Ü¹¹ÖеÄIT-SystemÏ໥ͨÐÅ£¬ÓÃÀ´Îªactivty-stateÖ¸¶¨Ö´ÐÐÕß¡£IAssignmentHandler¾ßÓÐΨһµÄ·½·¨SelectActor(IAssignmentContext assignerContext)£¬ÆäÖеÄassignerContextÊÇÆäºÍÒýÇæÁªÏµµÄÇþµÀ;

ActionHandler£ºÊµÏÖ½Ó¿ÚIActionHandler£¬ËüÓÃÀ´Ö´ÐÐÒ»¶ÎÁ÷³ÌÒýÇæÍâÍê³ÉµÄ³ÌÐòÂß¼­£¬¹ØÓÚactionÔÚÄÄÀïÖ´ÐУ¬Ê²Ã´Ê±ºòÖ´ÐеÈÔÚÁ÷³Ì¶¨ÒåÖб»¶¨Òå¡£actions¿ÉÒÔ±»¿´×÷һϵÁÐÁ÷³ÌÖ´ÐÐʼþµÄÕìÌý½Ó¿Ú£¬Ëü¾ßÓз½·¨Run(IActionContext actionContext)£¬actionContextÊÇËüºÍÒýÇæÁªÏµµÄÇþµÀ¡£

DecisionHandler£ºÊµÏÖ½Ó¿ÚIDecisionHandler£¬ËüÓÃÀ´Ñ¡Ôñ¾ö¶¨×ßÄÄÒ»Ìõtransition£¨±ß,¼ûnPdl£©£¬¾ßÓз½·¨Decide(IDecisionContextdecisionContext)£¬¸Ã·½·¨·µ»ØÑ¡ÔñÒª×ߵıߵÄÃû³Æ£¬decisionContextÊÇÆäºÍÒýÇæÁªÏµµÄÇþµÀ¡£

ForkHandler£ºÊµÏÖ½Ó¿ÚIForkHandler£¬µ±Ö´Ðе½fork½Úµãʱ£¬ForkhandlerÓÃÀ´¾ö¶¨´ÓforkÁ÷³ÌµÄ±ßÖÐÄÄЩ±ßÐèÒª¡°forking¡±¡£Ëü¾ßÓз½·¨Fork(IForkContext forkContext)£¬forkContextÊÇÆäºÍÒýÇæÁªÏµµÄÇþµÀ¡£×¢£ºforkhandler¿ÉÒÔÔÚͬһÌõ±ßÉÏ·ÖÉ¢¶à¸öforked flow¡£

JoinHandler£ºÊµÏÖ½Ó¿ÚIJoinHandler£¬µ±Ö´Ðе½joinʱ£¬JoinHandler¾ö¶¨ÊÇ·ñÒª¼¤»î¸¸flow£¬Ëü¾ßÓз½·¨Join(IJoinContext joinContext)£¬joinContextÊÇÆäºÍÒýÇæÁªÏµµÄÇþµÀ¡£

Serializer£ºÊµÏÖ½Ó¿ÚISerializer£¬¾ßÓз½·¨Serialize(Object valueObject)ºÍDeserialize(String text)£¬¸ÃίÍнӿڸºÔðÓÃÀ´×ª»»ÊôÐÔÖµ£¬°ÑÊôÐÔÖµÔÚ.NET-objects£¨.NET¶ÔÏ󣩺Ítext-format(Îı¾)Ö®¼äת»»¡£ÆäÖУ¬text-format(Îı¾)ÓÃÀ´´æ´¢ÊôÐÔÖµµ½Êý¾Ý¿âÖС£

HtmlFormatter£ºÊµÏÖ½Ó¿ÚIHtmlFormatter£¬¸ÃίÍÐÖ÷ÒªÓÃÀ´ÔÚÊôÐÔÖµºÍÆäÏà¶ÔÓ¦µÄweb½çÃæÔªËØÖ®¼ä½¨Á¢ÁªÏµ£¬Í¬Ê±¸ºÔð½âÎöweb½çÃæÔªËØ¾ßÓеÄÖµ¡£ÈôÒÆÖ²µ½ASP.NETƽ̨£¬¸Ã½Ó¿Ú½¨ÒéÖØÐ´¡£

ProcessInvocationHandler£ºÊµÏÖ½Ó¿ÚIProcessInvocationHandler£¬¸ÃίÍÐʵÏÖÊÕ¼¯×ÓÁ÷³ÌµÄ³õʼ»¯Êý¾Ý¡¢ÊÕ¼¯´¦Àí½á¹û¡¢Ö¸¶¨Íê³É×ÓÁ÷³ÌºóÒªÁ÷ÈëµÄ±ßµÈ·½·¨£¬processInvocationContextÊÇÆäºÍÒýÇæÁªÏµµÄÇþµÀ¡£

Á÷³Ì¶¨Òå°æ±¾ÎÊÌâ

Á÷³Ì¶¨ÒåµÄÃû³ÆÓë°æ±¾

°üº¬ÔÚÒ»¸öÁ÷³Ì¶¨ÒåѹËõ°üÖеÄÐÅÏ¢½Ð×öÁ÷³Ì¶¨Òå¡£NetBpmÖУ¬Á÷³ÌÊÇÓÉ×Ö¶ÎnameÀ´Çø·ÖµÄ£¬Ò²¾ÍÊÇ˵ÒýÇæ¸ù¾ÝÁ÷³ÌµÄnameÀ´ÅжÏÁ½¸öÁ÷³ÌÊÇ·ñÏàµÈ¡£ÔÚÁ÷³Ì¶¨Òå°üÖв»ÄÜÖ¸¶¨°æ±¾£¬µ±Ò»¸öÁ÷³Ì¶¨Òå±»ÒýÇæ¼ÓÔØºó£¬NetBpm½«¼ì²éÊÇ·ñÓиÃÁ÷³Ì¶¨ÒåµÄ¾É°æ±¾¡£Èç¹ûÓУ¬NetBpm½«×Ô¶¯ÉèÖøÃмÓÔØ½øÀ´µÄÁ÷³Ì°æ±¾ÎªËùÓдæÔڵľɰ汾Á÷³Ì¶¨ÒåÖÐ×î¸ß°æ±¾ÊýÄ¿»ù´¡ÉϼÓ1¡£

Á÷³ÌÖ´ÐÐÓë°æ±¾

µ±µ÷ÓÃÔËת×é¼þ»ñÈ¡Á÷³Ì¶¨ÒåÁÐ±í·½·¨Ê±£¬Ö»ÄÜ»ñÈ¡µ½Ã¿¸öÁ÷³ÌµÄ×î¸ß°æ±¾Á÷³Ì¶¨Òå¡£ÕâÑù×ö±£Ö¤ÁËÓû§×ÜÊÇ´Ó×îа汾µÄÁ÷³Ì¶¨Ò忪ʼһ¸öÁ÷³ÌʵÀý¡£µ±ÐµÄÁ÷³Ì°æ±¾¼ÓÔØµ½NetBpmʱ£¬ËùÓÐÕýÔÚÔËÐеľɰ汾µÄÁ÷³ÌʵÀý½«±£³ÖÔÚÔ­À´Á÷³Ì¶¨Ò巽ʽÏÂÔËÐС£

ίÍÐÀàÓë°æ±¾

¹ØÓÚ°æ±¾µÄÁíÍâÒ»¸ö·½ÃæÊÇίÍÐÀà¡£²»Í¬°æ±¾Á÷³Ì¶¨ÒåµÄίÍÐÀ಻Êǹ²ÏíµÄ£¬Ò²¾ÍÊÇ˵ÿ¸öÁ÷³ÌÔÚÖ´ÐÐʱֻ»á¡°¿´µ½¡±Ëü×Ô¼ºÁ÷³Ì¶¨ÒåµÄίÍÐÀà¡£

Òì³£´¦Àí»úÖÆ

NetBpm×÷Ϊһ¸ö¼¯³Éƽ̨£¬µ±Á÷³ÌÔËÐÐʱ£¬¿Ï¶¨»áÒÀÀµ¹«Ë¾ºÜ¶àÆäËûµÄIT×ÊÔ´£¬Ò»µ©ÕâЩÒÀÀµµ¼ÖÂÁ÷³ÌÖ´ÐÐʱ³öÏÖ´íÎó£¬NetBpmÌṩÁË3ÖÖ½â¾ö»úÖÆ£º

1.ºöÂÔ´íÎó

2.°Ñ´íÎóÈÕÖ¾¼Ç¼ÏÂÀ´£¨Ä¬ÈϲÉÓõĻúÖÆ£©

3.´íÎóÖ´Ðлعö²Ù×÷£¨rollback£©

Ö´Ðлعö»úÖÆÖУ¬Á÷³ÌʵÀý½«»á±»»Ø¹öµ½Ö´ÐÐactivity֮ǰµÄ״̬¡£Èç¹ûÊǶÔNetBpm µ÷ÓÃEecution Interfaceʱ·¢ÉúÁ÷³Ì´íÎó£¬ËùÓеÄÁ÷¹ýµÄtransition£¨±ß£©¶¼»áÖ´Ðлعö¡£

Á÷³Ì¶¨ÒåÔªËØÀàͼ

NetBpmÖÐʹÓõĿò¼Ü»ò×é¼þ

NetBpmÖÐÓõ½µÄ¿ò¼Ü¡¢×é¼þ¡¢¹¤¾ß±È½Ï¶à£¬ËüÃÇ´ó¶¼ÊÇÓÅÐãµÄ¿ªÔ´ÏîÄ¿¡£ÈçCastle£¬NHibernate£¬Log4Net, NVelocity£¬NUnit£¬NAntµÈ£¬²»Òª±»ÕâЩ¿ò¼ÜÏŵ¹£¬Êµ¼ÊÉÏ£¬ËüÃǽö½öÖ»ÊÇ¡°¿ò¼Ü¡±¶øÒÑ£º£©

IOCÈÝÆ÷¨D¨DCastle

NetBpmʹÓÃÁËCastle¿ò¼Ü£¬Ö÷ÒªÓÃËüÀ´ÊµÏÖIOC£¨¿ØÖÆ·´×ª»òÕß˵ÒÀÀµ×¢È룩£¬ÒÔÒÀÀµ×¢ÈëµÄ·½Ê½¼ÓÔØºËÐÄ×é¼þ£¬ÈçDBClassLoader£¬Á÷³Ì¶¨Òå×é¼þ£¬ÔËÐÐ×é¼þ£¬ÈÕÖ¾×é¼þ£¬×éÖ¯¼Ü¹¹×é¼þ£¬ÈÎÎñµ÷¶È×é¼þµÈ¡£ÔÚWeb³ÌÐòÆô¶¯µÄʱºò£¬¸ù¾ÝÅäÖÃÎļþ£¬ËùÓеĺËÐÄ×é¼þ¶¼½«×¢²áµ½Caslte IOCÈÝÆ÷ÖУ¬ÒÔºóµ±ÐèҪʹÓÃij¸ö×é¼þµÄʱºò£¬Ö»ÐèÀûÓÃϵͳÌṩµÄServiceLocator£¨·þÎñ¼ÓÔØ¹¤¾ßÀࣩ´ÓÈÝÆ÷ÖлñȡʵÀý¼´¿É¡£ÁíÍ⣬ÔÚÈÎÎñµ÷¶È×é¼þÖÐÒ²ÓÐÓõ½CastleµÄStartable Facility£¨×¢£º´ó¼Ò°ÑfacilityÀí½âΪעÈëÐÔÖʵ쬶ÔCastle IOCÄÚºËÈÝÆ÷µÄ¹¦ÄÜÀ©³ä×é¼þ¡£Castle±¾Éí×Ô´øÊµÏÖÁËһЩfaciltiy£¬¿ª·¢ÕßÒ²¿ÉÒÔ×Ô¶¨Òåfacility£©,¸ÃfacitlityÖ÷ÒªÓÃÀ´×Ô¶¯ÔËÐгÌÐò£¨ÕâÀïÓÃÀ´×Ô¶¯¼ä¸ôɨÃèÈÎÎñ±í£¬½øÐÐÈÎÎñµ÷¶È£©¡£

CastleÊÇ.NETƽ̨ÏÂÒ»¸ö¹¦ÄÜÇ¿´óµÄÓÅÐ㿪Դ¿ò¼Ü£¬¹ØÓÚCastleµÄ¸ü¶àÐÅÏ¢£¬Çë¿´Castle¹Ù·½ÍøÕ¾¡£ÁíÍâTerryLeeµÄ²©¿ÍÖйØÓÚCastleµÄÖÐÎÄ×ÊÔ´Ò²ºÜ·á¸»¡£

Êý¾Ý³Ö¾Ã²ã¨D¨D NHibernate

NetBpmÖÐNHibernate×é¼þÊÇ×÷ΪCastleµÄÒ»¸öfacility´æÔڵģ¬ËüÓÃÀ´ÊµÏÖNetBpmÊý¾Ý³Ö¾Ã²ã£¬ ²¢·½±ãµÄʵÏÖÁËÊÂÎñÖ§³Ö¡£¹ØÓÚNHibernateµÄ¸ü¶àÐÅÏ¢£¬Çë¿´NHibernate¹Ù·½ÍøÕ¾£¬¹ØÓÚNHibernate×÷ΪCastleµÄfacilityÏà¹ØÇë¿´ÕâÀï¡£

ʾÀýweb²ã¨D¨DMonoRail

´ó¼ÒÔÚDemoÑÝʾÌåÑéµÄʱºò£¬Ò»¶¨ºÜÆæ¹Ö£¬Ã»Óп´µ½ÊìϤµÄ.aspxÒ³Ãæ£¬¶øÊÇ.railsÒ³Ãæ£¬ÎªÊ²Ã´ÄØ£¿´ð°¸¾ÍÊÇNetBPMµÄWeb²ã²ÉÓõÄÊÇMonoRail¿ò¼Ü£¬¶ø²»ÊÇÎÒÃÇÊìϤASP.NET¿ò¼Ü¡£MonoRailÊÇCaslte¿ò¼ÜÏÂÕë¶Ôweb²ã±à³ÌµÄÒ»¸ö×Ó¿ò¼Ü£¬Ëü´ÓRuby Rails»ñÈ¡Áé¸Ð¶øÀ´£¬²ÉÓüܹ¹ÇåÎú·Ö¹¤Ã÷È·µÄMVCģʽ¡£NetBPM²ÉÓõÄʹÓÃNVelocity×÷ÎªÒ³Ãæ½âÎöÒýÇæµÄMonoRail£¬ËüÖ»ÊǶÔNetBPMºËÐÄAPIµÄÒ»¸öWeb½çÃæÑÝʾʾÀý£¬ÓÃÀ´¸æËßÎÒÃǸÃÔõÑù´ÓWeb²ãµ÷ÓÃNetBpm API¡£ËùÒÔ£¬ËäÈ»MonoRailÓÐÆä¶Àµ½Ö®´¦£¬µ«ÊÇÔÚÆä±»ÆÕ¼°²¢ÓкÃÓù¤¾ßÖ§³Ö֮ǰ£¬ÎÒÃÇÖ»Ðè¼òµ¥Á˽âÏÂËüµÄÔËÐлúÖÆ£¬ÓÃÒÔÊìϤweb²ãÈçºÎÀûÓÃNetBpm API£¬²»ÐèÒªÁ˽âËüÌ«¶à¡£ÓÃÎÒÃÇÊìϤµÄASP.NETʵÏÖWeb²¿·ÖÏÔÈ»ÊǸüºÃµÄÑ¡Ôñ£º£©¡£¹ØÓÚMonoRailµÄ¸ü¶àÐÅÏ¢£¬Çë¿´ÕâÀï¡£

ϵͳÈÕÖ¾ ¨D¨DLog4Net

log4net´ó¼ÒÒ»¶¨²»Ä°ÉúÁË£¬NetBpmʹÓÃËüÀ´¼Ç¼ϵͳÈÕÖ¾£¬¹ØÓÚlog4netµÄ¸ü¶àÐÅÏ¢£¬Çë¿´Log4Net¹Ù·½ÍøÕ¾£¬ÍøÉÏÖÐÎÄ×ÊÔ´Ò²ºÜ·á¸».

µ¥Ôª²âÊÔ¹¤¾ß¨D¨DNUnit

µ¥Ôª²âÊÔ¹¤¾ßNUnitÒ»Ö±ÊÇ´ó¼ÒÓÃÀ´µ¥Ôª²âÊÔµÄÀûÆ÷¡£ NetBPMÔ´ÂëÖÐÒѾ­½¨Óм¸¸ö²âÊÔ¹¤³Ì¡£¹ØÓÚNUnitµÄ¸ü¶àÐÅÏ¢£¬Çë¿´NUnit¹Ù·½ÍøÕ¾¡£

×¢£ºÒÆÖ²µ½.NET Framework 2.0Ï£¬¿ÉÄÜÒª¸ü¸ÄÆä°æ±¾¡£

ºó¼Ç

NetBPMµÄÉè¼ÆÎÞÒÉÊÇÇÉÃîµÄ£¬µ«ÊÇÏֽ׶εÄËüÏÔÈ»»¹²»ÊÇÒ»¸öÍêÃÀµÄ¹¤×÷Á÷ÒýÇæ£¬È±·¦ÈçJBOSSÕâÑùµÄÇ¿´óºó¶Ü×÷Ö§³Ö£¬ÖÐ;ÓÖÓöÉÏÇ¿µÐWF£¬NetBPMԶûÓÐÆäÐÖµÜJBPM·ç¹â£¬¸üÐÂûÓÐËü¿ì£¨JBPMÒѾ­³ö3.0°æ±¾ÁË£©£¬»ñÈ¡µÄÖ§³ÖÒ²ÉÙÐí¶à£¬ µ«ÊÇ.NETƽ̨ÏÂÄÜÓÐÕâÑùÒ»¸öÓÅÐãµÄ¿ªÔ´¹¤×÷Á÷ÏîÄ¿ÊÇÊ®·Ö¿É¹óµÄ£¬Èç¹ûÄúÕýÔÚWFÖпà¿àÕõÔú£¬Ò²Ðí£¬¿ªÔ´µÄNetBPM½«´ø¸øÄúÒ»¸ö¾ªÏ²£º£©

   
3593 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

¶àά·½·¨À´¿ª·¢ÓлúµÄÒµÎñÁ÷³Ì¼Ü¹¹
SCA Ó¦ÓóÌÐò¿ª·¢
BPM ºÍ SOA ÐÔÄÜ×î¼Ñʵ¼ù
ʵÏÖÆóÒµ·þÎñ×ÜÏßģʽ
Ïà¹ØÎĵµ

SCA½éÉܼ°Ó¦ÓÃʵÀý
»ùÓÚSOA¼Ü¹¹µÄESBƽ̨£ºInfomagic
SCA¼Ü¹¹
SOAµÄ»ù±¾¸ÅÄî
Ïà¹Ø¿Î³Ì

ÃæÏòÓ¦Óõļܹ¹Éè¼ÆÊµ¼ù
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Èí¼þ¼Ü¹¹Ê¦¡ª¸ß¼¶Êµ¼ù
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

»ùÓÚSOAµÄ¹¤×÷Á÷£¨WF£©ÕûºÏ
SOA 100ÎÊ - ÎÊÓë´ð
SOAP Ó¦ÓÃģʽ:´¦ÀíÓëÐÔÄÜ
ESB¼Ü¹¹Ö®Æóҵʵʩ°¸Àý
»ùÓÚSOA¼Ü¹¹µÄÆóÒµ¼¯³Éϵͳ
»ùÓÚSOAµÄÌåϵ¼Ü¹¹Éè¼Æ


ÃæÏòÓ¦Óõļܹ¹Éè¼ÆÊµ¼ù
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Èí¼þ¼Ü¹¹Ê¦¡ª¸ß¼¶Êµ¼ù
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù
SOAÌåϵ½á¹¹Êµ¼ù


ijµÚÈý·½µç×ÓÖ§¸¶ÆóÒµ SOA¼Ü¹¹Éè¼Æ
ijµç×ÓÆóÒµ SOAÓ¦ÓÃ
ÖйúÒÆ¶¯ SOAÅàѵ
±±¾©´óѧ SOA¼Ü¹¹Éè¼ÆÊµ¼ù
ÓѰÏÕ SOA¼Ü¹¹Éè¼Æ
ÉϺ£ SOA¼Ü¹¹Êµ¼ù
ɽ¶«Òƶ¯Í¨ÐÅ SOAÌåϵ½á¹¹Êµ¼ù