锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
"<process-definition>" +
" <start-state>" +
" <transition to='s' />" +
" </start-state>" +
" <state name='s'>" +
" <transition to='end' />" +
" </state>" +
" <end-state name='end' />" +
"</process-definition>"
);
ProcessInstance processInstance =new ProcessInstance(processDefinition);
Token token = processInstance.getRootToken();
assertSame(processDefinition.getStartState(), token.getNode());
token.signal();
assertSame(processDefinition.getNode("s"), token.getNode());
token.signal();
assertSame(processDefinition.getNode("end"), token.getNode());
}
棣栧厛錛屾垜浠畾涔変釜嫻佺▼妯℃澘錛圥rocessDefinition錛夛紝灝辨槸涓婇潰浠g爜鐨凱rocessDefinition processDefinition = ProcessDefinition.parseXmlString(….);榪欐錛屽湪鎷彿涓槸jbpm瀹氫箟鐨勬祦紼嬶紝鍏朵腑鍖呮嫭涓変釜鐜妭錛屽垎鍒槸starts-state銆乻tate鍜宔nd-state銆俻arseXmlString錛堬級鏂規硶鐨勪富瑕佸姛鑳芥槸瑙f瀽榪欐xml璇█榪斿洖涓祦紼嬫ā鏉垮璞★紙processDefinition錛夈?br />
鎺ョ潃錛岄氳繃嫻佺▼瀹炰緥綾伙紙ProcessInstance錛夋潵瀹炰緥鍖栦釜嫻佺▼瀹炰緥錛岄氳繃浼犺繘鏉ョ殑嫻佺▼妯℃澘瀵硅薄鍒涘緩ProcessInstance processInstance =new ProcessInstance(processDefinition)銆傛垜浠潵鐪嬬湅new ProcessInstance(processDefinition)鍒板簳鍋氫簡浠涔堬紝閫氳繃鏌ョ湅ProcessInstance鐨勬簮浠g爜錛屽彲浠ョ湅鍒板叾涓富瑕佺殑涓孌墊槸
public ProcessInstance( ProcessDefinition processDefinition ) {
//鐣ュ幓鍏朵粬浠g爜
this.processDefinition = processDefinition; //灝嗘祦紼嬫ā鏉垮璞′粯緇欐祦紼嬪疄渚?br />
this.rootToken = new Token(this); //鍒涘緩璺熶護鐗?br />
//鐣ュ幓鍏朵粬浠g爜
}
鎴戜滑緇х畫璺熻繘Token榪欎釜綾?br />
public Token(ProcessInstance processInstance) {
//涓昏涓鍙ュ涓?br />
this.node = processInstance.getProcessDefinition().getStartState();
}
榪欐牱灝卞疄鐜頒簡浠ょ墝緇戝畾鍒板紑濮嬭妭鐐廣傝嚦姝わ紝涓涓祦紼嬪疄渚嬪氨鍒涘緩璧鋒潵浜嗭紝騫朵笖璇ユ祦紼嬪疄渚嬭蛋鍒頒簡寮濮嬭妭鐐癸紝鍗充護鐗屾墍澶勭殑浣嶇疆銆?br />
鎴戜滑鎺ョ潃寰涓嬭蛋token.signal()
public void signal() {
signal(node.getDefaultLeavingTransition(), new ExecutionContext(this));
//榪欓噷鐨刧etDefaultLeavingTransition()濡傛灉鏈夊鏉¤礬寰勶紝鍒欏幓絎竴鏉¤礬寰?br />
}
void signal(Transition transition, ExecutionContext executionContext) {
//鐪佺暐鍏朵粬浠g爜
node.leave(executionContext, transition);
//鐪佺暐鍏朵粬浠g爜
}
榪欓噷鐨刵ode灝辨槸鍒氭墠浠ょ墝鎵鍦ㄧ殑寮濮嬭妭鐐癸紝鎴戜滑鏉ョ湅鐪媕bpm鏄浣曞皢浠ょ墝浠庡紑濮嬭妭鐐圭Щ鍒頒笅涓妭鐐圭殑銆?br />
public void leave(ExecutionContext executionContext, Transition transition) {
Token token = executionContext.getToken();
token.setNode(this);//姝ゆ椂浠ょ墝榪樺湪寮濮嬭妭鐐?br />
executionContext.setTransition(transition);
//鐣ュ幓閮ㄥ垎浠g爜
executionContext.setTransitionSource(this);
transition.take(executionContext);//瀹炵幇浠ょ墝鐨勮漿縐?br />
}
鎴戜滑鏉ョ湅鐪媡ransition.take(..)鏂規硶鍋氫簡浠涔?br />
public void take(ExecutionContext executionContext) {
//鐣ュ幓閮ㄥ垎浠g爜
to.enter(executionContext);//紱誨紑寮濮嬭妭鐐癸紝榪涘叆鍒頒笅涓妭鐐?br />
}
澶у鍙兘浼氭湁鐐圭枒闂紝榪欎釜to鑺傜偣鏄粈涔堟槸鍚﹀垵濮嬪寲鐨勶紵鍏跺疄鍦╯ignal鏃舵湁鍙ode.getDefaultLeavingTransition()錛岃繖鍙ヨ繑鍥濼ransition瀵硅薄錛岃瀵硅薄灝卞凡緇忓垵濮嬪寲浜唗o鑺傜偣鐨勫璞°傛垜浠湪璺熻繘to.enter(..)
public void enter(ExecutionContext executionContext) {
Token token = executionContext.getToken();
token.setNode(this);//姝ゆ椂浠ょ墝灝卞埌浜嗗悕瀛椾負“s”鐨剆tate鑺傜偣
token.setNodeEnter(new Date());
executionContext.setTransition(null);
executionContext.setTransitionSource(null);
execute(executionContext);
}
鍦ㄨ繖孌典唬鐮佷腑鐨勬敞閲婅繖鍙ワ紝鐪熸瀹炵幇浜嗕護鐗屼粠寮濮嬭妭鐐瑰埌涓嬩釜鑺傜偣浜嗐?br />
鑷蟲錛宩bpm宸ヤ綔嫻佸紩鎿庣殑鍐呴儴宸ヤ綔鍘熺悊灝變粙緇嶅畬浜嗭紝鍏跺疄榪欏氨鏄伐浣滄祦寮曟搸鏈鏍稿績鐨勯儴鍒嗕簡錛屽氨鏄浣曚粠涓涓幆鑺傝漿縐誨埌鍙︿竴涓幆鑺傘傛垨璁鎬綘浼氳“榪欎箞綆鍗曪紝鎴戦┈涓婂氨鍙互鍐欎竴涓?#8221;錛屽叾瀹炰笉鐒訛紝涓婇潰鎴戜滑鎵鐢ㄧ殑渚嬪瓙鏄崄鍒嗙畝鍗曠殑渚嬪瓙錛屽叾瀹炲湪宸ヤ綔嫻佽仈鐩熻鑼冧腑榪樻湁鍏朵粬澶嶆潅鐨勮妭鐐規ā鍨嬶紝濡俿plit錛宩oin錛宻ubflow絳夈備笉榪囧垢榪愮殑鏄繖浜涘鏉傜殑鑺傜偣妯″瀷jbpm閮戒負鎴戜滑鎻愪緵浜嗕粬鑷繁鐨勯粯璁ょ殑瀹炵幇錛岃繖浜涜妭鐐規ā鍨嬮兘鍦╫rg.jbpm.graph.node鍖呬笅銆俲bpm寮曟搸涓緢濂界殑鎶借薄浜嗚妭鐐規ā鍨婲ode綾伙紝澶ч儴鍒嗙殑澶嶆潅鑺傜偣妯″瀷閮界戶鎵胯嚜Node錛屾垜浠篃鍙互瀹氬埗鑷繁鐨勮妭鐐癸紝鍙瀹炵幇Node綾葷殑execute()鏂規硶鍗沖彲鏂逛究鐨勫疄鐜般傚叾瀹炰粠涓婇潰鍒嗘瀽鐨勪唬鐮佸彲浠ョ湅鍑猴紝Node綾諱富瑕佺殑閫昏緫澶勭悊鏄湪leave()銆乪nter()鍜宔xecute()涓変釜鏂規硶錛屽ぇ瀹跺彲浠ョ湅涓婸rocessState錛宩oin錛宖ork榪欎簺鑺傜偣妯″瀷鏄浣曞疄鐜扮殑銆?br />
浠ヤ笂綆鍗曚粙緇嶄簡jbpm寮曟搸鍐呮牳鐨勫伐浣滃師鐞嗭紝濡傛湁涓嶅鐨勫湴鏂硅繕鏈涙寚姝c?br />
鎿嶄綔緋葷粺錛?/span>window xp sp2
SVN鐨勭増鏈細1.5錛?/span>http://www.collab.net/downloads/subversion/錛?/span>
TortoiseSVN鐨勭増鏈細1.5錛?/span>http://sourceforge.net/projects/tortoisesvn/錛?/span>
SVN鏈嶅姟鍣ㄧ瀹夎閰嶇疆
1銆?nbsp;瀹夎SVN鏈嶅姟鍣ㄧ
A銆佸埌svn鐨勫畼鏂圭綉涓嬭澆svn鏈嶅姟鍣ㄧ杞歡鍒版湰鍦幫紝鐒跺悗瀹夎錛屾寜鎻愮ず涓姝ヤ竴姝ュ畨瑁呭畬鎴愩?/span>1.5鐗堟湰榛樿鐨勪細灝?/span>svn娣誨姞涓?/span>window鐨勬湇鍔$殑閫夐」錛屽嬀閫変笂鍗沖彲闅忔搷浣滅郴緇熺殑鍚姩鑰屽惎鍔?/span>svn鐨勬湇鍔°傝?/span>1.5浠ュ墠鐨勭増鏈垯闇瑕佹墜鍔ㄦ坊鍔犵殑window鐨勬湇鍔′腑錛岀敤window鐨?/span>sc鍛戒護錛岃嚦浜?/span>sc鍛戒護濡備綍鐢ㄨ鑰呭彲浠ユ煡鐪?/span>sc鐨勫府鍔┿?/span>
B銆佸畨瑁呭畬鍚庢墦寮window鐨勬湇鍔$鐞嗗櫒錛屽皢svn鐨勬湇鍔″惎鍔紝鍏ㄥ悕涓?/span>Svnversion Server銆傛墦寮鍛戒護琛岃繍琛屽懡浠?/span>svnadmin --version錛屽彲浠ョ湅鍒?/span>svn瀹夎鐨勭増鏈俊鎭紝鑷蟲svn鐨勫畨瑁呭畬鎴愩?/span>
C銆佸畨瑁?/span>svn瀹㈡埛绔杞歡TortoiseSVN錛屾寜姝ラ瀹夎涓嬫潵鍗沖彲銆?/span>
2銆?/span>SVN鏈嶅姟鍣ㄧ鐨勯厤緗?/span>
絎竴鐐瑰彧浠嬬粛浜?/span>svn鐨勫畨瑁咃紝瑕佽鍏惰兘澶熶嬌鐢紝鎴戜滑榪橀渶瑕佷簺閰嶇疆錛屽儚鐗堟湰搴撶殑寤虹珛錛岀敤鎴風殑璁塊棶鏉冮檺絳夈?/span>
A銆佸垱寤虹増鏈簱銆?/span>
鎵撳紑鍛戒護琛屾墽琛?/span>svnadmin create path錛屽叾涓?/span>path琛ㄧず浣犺寤虹珛鐨勭増鏈簱鐨勫瓨鏀捐礬寰?姝よ礬寰勪篃鏄痵vn鍦╳indow鐨勬湇鍔′笂娉ㄥ唽鏄寚鍚戠殑璺緞錛岀瑪鑰呯殑璺緞涓?/span>D:\svn_repository錛屽嵆svnadmin create D:\svn_repository銆傝繍琛岃鍛戒護鍚庯紝鍙互鍙戠幇鍦?/span>D:\svn_repository鐨勭洰褰曚笅錛屽垱寤轟簡浜涙枃浠跺拰鏂囦歡澶癸紝鑷蟲鍒涘緩鐗堟湰搴撴垚鍔熴?/span>
B銆侀厤緗敤鎴風殑璁塊棶鏉冮檺銆?/span>
鍦ㄥ垰鎵嶇殑鐩綍涓嬫湁涓枃浠跺すconf錛?/span>svn鐨勯厤緗枃浠跺氨鍦ㄦ鐩綍涓傛墦寮璇ユ枃浠跺す涓嬬殑svnserver.conf鏂囦歡錛屾垜浠彲浠ョ湅鍒?/span>svn鐨勯厤緗俊鎭殑涓浜涘睘鎬э紝榪欓噷琛屽墠鍑℃槸鏈?/span>#鐨勯兘琛ㄧず琚敞閲婃帀浜嗭紝浣犲彲浠ユ妸#鍘繪帀璁╄琛岀殑灞炴х敓鏁堬紝鎴栬呰嚜宸卞湪鏈鍚庢坊鍔犳柊鐨勮鏉ョ敓鏁?/span>svn鐨勫睘鎬с?/span>
鍦ㄨ繖鎴戜滑鍏沖績鐨勫睘鎬ц鏄庡涓嬶細
anon-access = read 琛ㄧず鍖垮悕鐨勭敤鎴峰彲浠ヤ粈涔堟牱鐨勬柟寮忚闂増鏈簱錛屾湁none銆?/span>read銆?/span>write涓変釜鍊煎彲閫夛紝鏂囦歡涓負read璇存槑鍖垮悕鐢ㄦ埛鍙互鍙鐨勬柟寮忚闂増鏈簱銆?/span>
auth-access = write 琛ㄧず楠岃瘉閫氳繃鐨勭敤鎴峰叿鏈変粈涔堟潈闄愶紝鏈?/span>none銆?/span>read銆?/span>write涓変釜鍊煎彲閫夛紝鏂囦歡涓負write琛ㄧず鍙啓錛屽綋鐒朵篃鍙浜嗐?/span>
password-db = passwd 琛ㄧず鐢ㄦ埛鐨勫瘑鐮佸瓨鏀劇殑鍦版柟銆?/span>
authz-db = authz 琛ㄧず鐗堟湰搴撲腑璁塊棶璺緞鐨勮鍒欙紝鍗寵皝鍙兘璁塊棶鍝釜鐩綍涓嬬殑鏂囦歡錛屽叾浠栫洰褰曚笅鐨勬枃浠舵棤娉曡闂?/span>
鐜板湪鎴戜滑灝?/span>auth-access銆?/span>password-db銆?/span>authz-db涓変釜灞炴х殑鍓嶉潰鐨?/span>#鍘繪帀錛屼嬌鍏剁敓鏁堬紝娉ㄦ剰涓変釜灞炴у墠涓嶈兘鏈夌┖鏍箋?/span>
鐒跺悗鎴戜滑緙栬緫passwd鍜?/span>authz榪欎袱涓枃浠剁殑淇℃伅銆?/span>
a銆佸湪passwd鏂囦歡涓殑[users]涓嬫坊鍔犺兘璁塊棶鐗堟湰搴撶殑鐢ㄦ埛鍚嶅拰瀵嗙爜錛屽璇ユ枃浠朵腑鐨勪簨渚嬨傛垜浠坊鍔?/span>admin = admin
b銆佸湪authz鏂囦歡涓紝[groups]涓嬪彲浠ラ厤緗粍淇℃伅錛屽嵆灝嗗嚑涓漢鍔犲叆鍒頒竴涓粍涓?/span>[/foo/bar]涓嬫坊鍔犱漢鍛樼殑瑙勫垯琛ㄧず璋佸彲璁塊棶/foo/bar璺緞涓嬬殑淇℃伅銆傛垜浠湪[/foo/bar]涓嬫坊鍔?/span>
[/]
admin = rw
鑷蟲錛屾垜浠厤緗簡admin鐨勮處鍙鳳紝璇ヨ處鍙峰叿鏈夋牴鐩綍涓嬬殑鎵鏈夋枃浠剁殑璇誨啓鎿嶄綔鏉冮檺銆?/span>
3銆佸垱寤烘垜浠殑欏圭洰
鍦?/span>D:"test涓嬫柊寤?/span>project鏂囦歡澶癸紝鍦?/span>project涓嬫柊寤?/span>trunk錛?/span>tags錛?/span>branches涓変釜鏂囦歡澶癸紝鎵撳紑鍛戒護琛岋紝灝嗙洰褰曡漿鍒?/span>D:\test涓嬶紝榪愯svn import –m addproject --username admin --password admin --config-dir /project svn://localhost鍥炶濺鏄劇ず濡備笅錛?/span>
Adding project
Adding project/trunk
Adding project/branches
Adding project/tags
Committed revision 1.
琛ㄧず鎴戜滑鐨勯」鐩?/span>project鍒涘緩鎴愬姛銆?/span>
榪欓噷璇存槑涓?/span>trunk銆?/span>tags銆?/span>branches涓変釜鏂囦歡澶圭殑浣滅敤錛?/span>
trunk錛氳〃紺哄紑鍙戞椂鐗堟湰瀛樻斁鐨勭洰褰曪紝鍗沖湪寮鍙戦樁孌電殑浠g爜閮芥彁浜ゅ埌璇ョ洰褰曚笂銆?/span>
branches錛氳〃紺哄彂甯冪殑鐗堟湰瀛樻斁鐨勭洰褰曪紝鍗抽」鐩笂綰挎椂鍙戝竷鐨勭ǔ瀹氱増鏈瓨鏀懼湪璇ョ洰褰曚腑銆?/span>
tags錛氳〃紺烘爣絳懼瓨鏀劇殑鐩綍銆?/span>
鍦ㄨ繖闇瑕佽鏄庝笅鍒嗕笁涓洰褰曠殑鍘熷洜錛屽鏋滈」鐩垎涓轟竴鏈熴佷簩鏈熴佷笁鏈熺瓑錛岄偅涔堜竴鏈熶笂綰挎椂鐨勭ǔ瀹氱増鏈氨搴旇鍦ㄤ竴鏈熷畬鎴愭椂灝嗕唬鐮?/span>copy鍒?/span>branches涓婏紝榪欐牱浜屾湡寮鍙戠殑浠g爜灝卞涓鏈熺殑浠g爜娌℃湁褰卞搷錛屽鏂板鐨勬ā鍧楀氨涓嶄細閮ㄧ講鍒扮敓浜х幆澧冧笂銆傝?/span>branches涓婄殑紼沖畾鐨勭増鏈氨鏄彂甯冨埌鐢熶駭鐜涓婄殑浠g爜錛屽鏋滅敤鎴蜂嬌鐢ㄧ殑榪囩▼涓彂鐜版湁bug錛屽垯鍙鍦?/span>branches涓婁慨鏀硅bug錛屼慨鏀瑰畬bug鍚庡啀緙栬瘧branches涓婃渶鏂扮殑浠g爜鍙戝竷鍒扮敓浜х幆澧冨嵆鍙?/span>tags鐨勪綔鐢ㄦ槸灝嗗湪branches涓婁慨鏀圭殑bug鐨勪唬鐮佸悎騫跺埌trank涓婃椂鍒涘緩涓増鏈爣璇嗭紝浠ュ悗branches涓婁慨鏀圭殑bug浠g爜鍐嶅悎騫跺埌trunk涓婃椂灝變粠tags鐨?/span>version鍒?/span>branches鏈鏂扮殑version鍚堝茍鍒?/span>trunk錛屼互淇濊瘉鍓嶆湡淇敼鐨?/span>bug浠g爜涓嶄細鍦ㄥ悎騫躲?/span>
鑷蟲鎴戜滑灝卞彲浠ヤ嬌鐢?/span>svn鏉ョ鐞嗘垜浠殑浠g爜浜嗐?/span>