Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3a8d5f8

Browse files
committed
issue: checkConflictTransitions方法校验有问题
1 parentc48b1d6 commit3a8d5f8

File tree

4 files changed

+158
-0
lines changed

4 files changed

+158
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
packageorg.squirrelframework.foundation.fsm.issue;
2+
3+
4+
importjdk.nashorn.internal.objects.annotations.Getter;
5+
6+
publicenumBusinessEventEnum {
7+
8+
EVENT_CREATE_SIGN_UP("活动报名"),
9+
EVENT_BATCH_SIGN_UP("批量活动报名"),
10+
EVENT_STASH_SIGN_UP("暂存报名"),
11+
EVENT_COMMIT_SIGN_UP("提交报名"),
12+
EVENT_AUDIT_SIGN_UP("审核报名"),
13+
EVENT_DELETE_SIGN_UP("删除报名"),
14+
EVENT_QUIT_SIGN_UP("退出活动"),
15+
EVENT_CLEAR_PARTICIPANT("清退参与者"),
16+
EVENT_SUSPEND_PARTICIPATE("暂停参与"),
17+
EVENT_RESUME_PARTICIPATE("恢复参与"),
18+
EVENT_EDIT_SIGN_UP("编辑报名"),
19+
20+
EVENT_EXIT_PUBLISH("退出推广"),
21+
EVENT_UPDATE_SIGN_UP("更新报名"),
22+
;
23+
24+
privateStringdesc;
25+
26+
BusinessEventEnum(Stringdesc) {
27+
this.desc =desc;
28+
}
29+
30+
publicStringgetDesc() {
31+
returndesc;
32+
}
33+
34+
publicvoidsetDesc(Stringdesc) {
35+
this.desc =desc;
36+
}
37+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
packageorg.squirrelframework.foundation.fsm.issue;
2+
importorg.junit.Test;
3+
importorg.squirrelframework.foundation.fsm.StateMachineBuilder;
4+
importorg.squirrelframework.foundation.fsm.StateMachineBuilderFactory;
5+
6+
importjava.util.*;
7+
8+
9+
publicclassNormalStateMachineInit {
10+
11+
12+
/**
13+
* 定义终态、相同的event下、使用了mvel表达式且没有命名,在checkConflictTransitions方法中会认为使用了相同的Transition,抛异常
14+
* @see org.squirrelframework.foundation.fsm.impl.StateImpl#checkConflictTransitions
15+
* @see org.squirrelframework.foundation.fsm.impl.TransitionImpl#isMatch(S, S, E, int)
16+
*/
17+
@Test(expected =Exception.class)
18+
publicvoidinitSignUpStateMachine() {
19+
20+
StateMachineBuilder<SignupStateMachine,SignUpStatusEnum,BusinessEventEnum,Map>builder =
21+
StateMachineBuilderFactory.create(SignupStateMachine.class,SignUpStatusEnum.class,BusinessEventEnum.class,Map.class,
22+
newClass<?>[0]);
23+
//1、定义报名主子状态关系
24+
builder.defineState(SignUpStatusEnum.START);
25+
builder.defineSequentialStatesOn(SignUpStatusEnum.CREATING,
26+
SignUpStatusEnum.COMMITTED);
27+
builder.defineSequentialStatesOn(SignUpStatusEnum.VALID,
28+
SignUpStatusEnum.SUB_VALID);
29+
builder.defineSequentialStatesOn(SignUpStatusEnum.INVALID,
30+
SignUpStatusEnum.AUDIT_REJECT_INVALID,SignUpStatusEnum.QUIT_INVALID,SignUpStatusEnum.CAMPAIGN_INVALID);
31+
32+
// 定义终态
33+
builder.defineFinalState(SignUpStatusEnum.AUDIT_REJECT_INVALID);
34+
35+
// 2 定义transaction
36+
builder.externalTransition().from(SignUpStatusEnum.START).to(SignUpStatusEnum.COMMITTED).on(BusinessEventEnum.EVENT_COMMIT_SIGN_UP);
37+
builder.externalTransition().from(SignUpStatusEnum.START).to(SignUpStatusEnum.COMMITTED).on(BusinessEventEnum.EVENT_BATCH_SIGN_UP);
38+
39+
builder.externalTransition().from(SignUpStatusEnum.COMMITTED).to(SignUpStatusEnum.COMMITTED).on(BusinessEventEnum.EVENT_UPDATE_SIGN_UP);
40+
41+
builder.externalTransition().from(SignUpStatusEnum.COMMITTED).to(SignUpStatusEnum.SUB_VALID).on(BusinessEventEnum.EVENT_AUDIT_SIGN_UP)
42+
.whenMvel("context.auditResult == 1");
43+
builder.externalTransition().from(SignUpStatusEnum.COMMITTED).to(SignUpStatusEnum.AUDIT_REJECT_INVALID).on(BusinessEventEnum.EVENT_AUDIT_SIGN_UP)
44+
.whenMvel("context.auditResult == 2");
45+
46+
builder.externalTransitions().fromAmong(SignUpStatusEnum.CREATING).to(SignUpStatusEnum.QUIT_INVALID).on(BusinessEventEnum.EVENT_QUIT_SIGN_UP);
47+
48+
// 初始化状态机对象
49+
SignupStateMachinesignupStateMachine =builder.newStateMachine(SignUpStatusEnum.START);
50+
}
51+
52+
}
53+
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
packageorg.squirrelframework.foundation.fsm.issue;
2+
3+
publicenumSignUpStatusEnum {
4+
START(9999,"初始态"),
5+
/** 主状态 **/
6+
CREATING(1,"创建中"),
7+
VALID(2,"生效"),
8+
SUSPENDED(3,"暂停"),
9+
INVALID(4,"失效"),
10+
11+
/** 子状态 **/
12+
DRAFT(101,"待提交"),
13+
COMMITTED(102,"已提交"),
14+
15+
SUB_VALID(200,"生效"),
16+
17+
AUDIT_REJECT_INVALID(401,"失效-审核拒绝"),
18+
CREATOR_CLEAR_INVALID(402,"失效-创建者清退"),
19+
QUIT_INVALID(403,"失效-主动退出"),
20+
OFFICIAL_CLEAR_INVALID(404,"失效-官方清退"),
21+
CAMPAIGN_INVALID(405,"失效-计划失效");
22+
23+
privateintvalue;
24+
privateStringdesc;
25+
26+
SignUpStatusEnum(intvalue,Stringdesc) {
27+
this.value =value;
28+
this.desc =desc;
29+
}
30+
31+
publicstaticSignUpStatusEnumof(Integervalue) {
32+
if (value ==null) {
33+
returnnull;
34+
}
35+
for (SignUpStatusEnumstatus :SignUpStatusEnum.values()) {
36+
if (status.value ==value.intValue()) {
37+
returnstatus;
38+
}
39+
}
40+
returnnull;
41+
}
42+
43+
publicintgetValue() {
44+
returnvalue;
45+
}
46+
47+
publicvoidsetValue(intvalue) {
48+
this.value =value;
49+
}
50+
51+
publicStringgetDesc() {
52+
returndesc;
53+
}
54+
55+
publicvoidsetDesc(Stringdesc) {
56+
this.desc =desc;
57+
}
58+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
packageorg.squirrelframework.foundation.fsm.issue;
2+
3+
importorg.squirrelframework.foundation.fsm.impl.AbstractStateMachine;
4+
5+
importjava.util.Map;
6+
7+
publicclassSignupStateMachineextendsAbstractStateMachine<SignupStateMachine,SignUpStatusEnum,BusinessEventEnum,Map> {
8+
9+
10+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp