Skip to content

Commit 8eac703

Browse files
authored
Merge pull request #105 from codingapi/dev
fix permission bug
2 parents 317a2a6 + f17ded1 commit 8eac703

10 files changed

Lines changed: 38 additions & 13 deletions

File tree

flow-engine-example/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.codingapi.flow</groupId>
88
<artifactId>flow-engine-parent</artifactId>
9-
<version>0.0.7</version>
9+
<version>0.0.8</version>
1010
<relativePath>../pom.xml</relativePath>
1111
</parent>
1212

flow-engine-framework/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.codingapi.flow</groupId>
88
<artifactId>flow-engine-parent</artifactId>
9-
<version>0.0.7</version>
9+
<version>0.0.8</version>
1010
</parent>
1111

1212
<name>flow-engine-framework</name>

flow-engine-framework/src/main/java/com/codingapi/flow/form/FlowForm.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,30 @@ public List<String> loadFieldNames() {
114114
/**
115115
* 获取表单字段
116116
*
117-
* @param fieldName 字段名称
117+
* @param fieldCode 字段code
118118
* @return 表单字段
119119
*/
120-
public FormField getField(String fieldName) {
121-
return fields.stream().filter(field -> field.getName().equals(fieldName)).findFirst().orElse(null);
120+
public FormField getField(String fieldCode) {
121+
return fields.stream().filter(field -> field.getCode().equals(fieldCode)).findFirst().orElse(null);
122+
}
123+
124+
125+
/**
126+
* 获取表单字段
127+
* @param formCode 表单code
128+
* @param fieldCode 字段code
129+
*/
130+
public FormField getField(String formCode,String fieldCode){
131+
if(this.code.equals(formCode)){
132+
return this.getField(fieldCode);
133+
}else {
134+
for (FlowForm subForm:subForms){
135+
if(subForm.getCode().equals(formCode)){
136+
return subForm.getField(fieldCode);
137+
}
138+
}
139+
}
140+
return null;
122141
}
123142

124143
private void initFormFieldDataTypes(FlowForm form, Map<String, DataType> types) {

flow-engine-framework/src/main/java/com/codingapi/flow/service/impl/FlowProcessNodeService.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,12 +159,16 @@ public NextNodeLoader(IFlowNode currentNode) {
159159

160160
private void fetchNextNode(FlowSession flowSession, List<IFlowNode> nexNodes) {
161161
for (IFlowNode flowNode : nexNodes) {
162+
ActionManager actionManager = flowNode.actionManager();
163+
IFlowAction passAction = actionManager.getAction(PassAction.class);
164+
flowSession = flowSession.updateSession(passAction);
165+
162166
List<IFlowOperator> operators = null;
163167
if (flowNode.getType().equals(StartNode.NODE_TYPE)) {
164168
operators = List.of(flowSession.getCurrentOperator());
165169
} else {
166170
NodeStrategyManager nodeStrategyManager = flowNode.strategyManager();
167-
OperatorManager operatorManager = nodeStrategyManager.loadOperators(flowSession);
171+
OperatorManager operatorManager = nodeStrategyManager.loadOperators(flowSession.updateSession(flowNode));
168172
operators = operatorManager.getOperators();
169173
}
170174
ProcessNode processNode = new ProcessNode(flowNode, operators);

flow-engine-framework/src/main/java/com/codingapi/flow/strategy/node/FormFieldPermissionStrategy.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.codingapi.flow.exception.FlowValidationException;
66
import com.codingapi.flow.form.DataType;
77
import com.codingapi.flow.form.FlowForm;
8+
import com.codingapi.flow.form.FormField;
89
import com.codingapi.flow.form.permission.FormFieldPermission;
910
import com.codingapi.flow.form.permission.PermissionType;
1011
import com.codingapi.flow.session.FlowSession;
@@ -62,6 +63,7 @@ public void verifySession(FlowSession session) {
6263
Map<String, Object> latestData = session.getFormData().toMapData();
6364
if(fieldPermissions!=null) {
6465
for (FormFieldPermission permission : fieldPermissions) {
66+
FormField formField = flowForm.getField(permission.getFormCode(),permission.getFieldCode());
6567
// 子表
6668
if (flowForm.isSubForm(permission.getFormCode())) {
6769
if (permission.getType() == PermissionType.READ) {
@@ -87,10 +89,10 @@ public void verifySession(FlowSession session) {
8789
}
8890
} else {
8991
// 在只读权限下不允许修改数据
90-
if (permission.getType() == PermissionType.READ) {
92+
if (formField.isRequired() && permission.getType() == PermissionType.READ) {
9193
Object currentValue = currentData.get(permission.getFieldCode());
9294
Object latestValue = latestData.get(permission.getFieldCode());
93-
if (!currentValue.equals(latestValue)) {
95+
if (latestValue!=null && currentValue!=null && !currentValue.equals(latestValue)) {
9496
throw FlowValidationException.fieldReadOnly(permission.getFieldCode());
9597
}
9698
}

flow-engine-starter-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.codingapi.flow</groupId>
88
<artifactId>flow-engine-parent</artifactId>
9-
<version>0.0.7</version>
9+
<version>0.0.8</version>
1010
</parent>
1111

1212
<name>flow-engine-starter-api</name>

flow-engine-starter-infra/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.codingapi.flow</groupId>
88
<artifactId>flow-engine-parent</artifactId>
9-
<version>0.0.7</version>
9+
<version>0.0.8</version>
1010
</parent>
1111

1212
<name>flow-engine-starter-infra</name>

flow-engine-starter-query/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.codingapi.flow</groupId>
88
<artifactId>flow-engine-parent</artifactId>
9-
<version>0.0.7</version>
9+
<version>0.0.8</version>
1010
</parent>
1111

1212
<name>flow-engine-starter-query</name>

flow-engine-starter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.codingapi.flow</groupId>
88
<artifactId>flow-engine-parent</artifactId>
9-
<version>0.0.7</version>
9+
<version>0.0.8</version>
1010
</parent>
1111

1212
<name>flow-engine-starter</name>

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</parent>
1111
<groupId>com.codingapi.flow</groupId>
1212
<artifactId>flow-engine-parent</artifactId>
13-
<version>0.0.7</version>
13+
<version>0.0.8</version>
1414
<packaging>pom</packaging>
1515

1616
<url>https://github.com/codingapi/flow-engine</url>

0 commit comments

Comments
 (0)