@freelog/freelog-cg-collection 1.0.9 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,12 +2,14 @@ const {CollectionPolicyVisitor} = require("./gen/CollectionPolicyVisitor");
2
2
  const {ExpHelper} = require("./dist/helper/ExpHelper");
3
3
  const {FunctionHelper} = require("./dist/helper/FunctionHelper");
4
4
  const system_keywords = require("./resources/context_config/system_keywords.json");
5
- const function_configs = require("./resources/context_config/function_configs.json");
5
+ const context_variables = require("./resources/context_config/context_variables.json");
6
+ const service_state_configs = require("./resources/context_config/service_state_configs.json");
6
7
  const event_configs = require("./resources/context_config/event_configs.json");
7
8
 
8
9
  class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
9
- constructor() {
10
+ constructor(serviceName) {
10
11
  super();
12
+ this.serviceName = serviceName;
11
13
  // 签约条件
12
14
  this.audienceSection = {};
13
15
  // 全局定义(变量)声明
@@ -19,10 +21,25 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
19
21
  this.currentState = null;
20
22
  this.currentStateObj = null;
21
23
  this.currentEventElem = null;
24
+ this.parseState = {inContextArgsSectionAtEvent: 0, inActionSection: 0};
22
25
 
23
26
  this.expHelper = new ExpHelper();
24
27
  this.functionHelper = new FunctionHelper();
25
28
  this.functionHelper.setExpHelper(this.expHelper);
29
+ this.expHelper.setFunctionHelper(this.functionHelper);
30
+ }
31
+
32
+ generateVarValueTypeList(varValueList) {
33
+ let varValueListTmp = [...varValueList].reverse();
34
+ return varValueListTmp.map(vv => {
35
+ return {
36
+ varName: vv["varName"], varValueType: vv["varValueType"]
37
+ };
38
+ });
39
+ }
40
+
41
+ getVarDeclarationValueTypeList() {
42
+ return this.generateVarValueTypeList(this.varDeclarationList);
26
43
  }
27
44
 
28
45
  visitAudience_clause(ctx) {
@@ -36,9 +53,11 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
36
53
  let conditions = this.visitExpression_param_list(ctx.expression_param_list());
37
54
  for (let condition of conditions) {
38
55
  if (condition["paramName"] == null) {
39
- throw new Error(`参数名不可为空 ${condition}`);
56
+ throw new Error(`参数名不可为空 ${condition["content"]}`);
57
+ }
58
+ if (["echoSubject", "labels", "exps"].indexOf(condition["paramName"]) === -1) {
59
+ throw new Error(`无效的参数名 ${condition["content"]}`);
40
60
  }
41
- console.log(condition);
42
61
  }
43
62
  this.audienceSection["conditions"] = conditions;
44
63
  } else {
@@ -65,6 +84,9 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
65
84
  } else {
66
85
  this.varDeclarationMap.set(varElem.varName, varElem);
67
86
  }
87
+ varElem["varValueType"] = this.expHelper.guessBaseTypeByExpType(varElem["varValueObj"], this.getVarDeclarationValueTypeList());
88
+ console.debug(`>> ${ctx.getText()} --> ${varElem["varValueType"]}`);
89
+
68
90
  this.varDeclarationList.push(varElem);
69
91
 
70
92
  return varElem;
@@ -87,6 +109,9 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
87
109
  } else {
88
110
  this.varDeclarationMap.set(varElem.varName, varElem);
89
111
  }
112
+ varElem["varValueType"] = this.expHelper.guessBaseTypeByExpType(varElem["varValueObj"], this.getVarDeclarationValueTypeList());
113
+ console.debug(`>> ${ctx.getText()} --> ${varElem["varValueType"]}`);
114
+
90
115
  this.varDeclarationList.push(varElem);
91
116
 
92
117
  return varElem;
@@ -125,9 +150,35 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
125
150
  visitState_definition(ctx) {
126
151
  this.currentState = ctx.state_name().getText();
127
152
  this.currentStateObj = {stateName: this.currentState, assignments: [], events: []};
153
+ if (ctx.service_state_section() != null) {
154
+ this.currentStateObj["serviceStateSection"] = this.visitService_state_section(ctx.service_state_section());
155
+ }
156
+ if (ctx.state_context_args_section() != null) {
157
+ this.currentStateObj["stateContextArgs"] = ctx.state_context_args_section().ID().map(i => i.getText());
158
+ } else {
159
+ this.currentStateObj["stateContextArgs"] = [];
160
+ }
128
161
  this.stateMachine.push(this.currentStateObj);
129
162
 
130
- return super.visitState_definition(ctx);
163
+ let result = super.visitState_definition(ctx);
164
+ this.currentState = null;
165
+ this.currentStateObj = null;
166
+ return result;
167
+ }
168
+
169
+ visitService_state_section(ctx) {
170
+ let serviceStateSection = {};
171
+ if (ctx.service_state() != null) {
172
+ serviceStateSection["serviceState"] = ctx.service_state().getText();
173
+ if (service_state_configs[this.serviceName].indexOf(serviceStateSection["serviceState"]) === -1) {
174
+ throw new Error(`该颜色态颜色不被允许 --- ${serviceStateSection["serviceState"]}`);
175
+ }
176
+ }
177
+ if (ctx.service_state_collection() != null) {
178
+ serviceStateSection["serviceStateCollection"] = ctx.service_state_collection().ID().map(i => i.getText());
179
+ }
180
+
181
+ return serviceStateSection;
131
182
  }
132
183
 
133
184
  visitFsmVarAssignment(ctx) {
@@ -136,7 +187,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
136
187
  content: ctx.getText(),
137
188
  varName: ctx.variable_assignment().ID().getText(),
138
189
  varValue: ctx.variable_assignment().assignment_clause().getText(),
139
- varValueObj: super.visitAssignment_clause(ctx.variable_assignment().assignment_clause())
190
+ varValueObj: this.visitAssignment_clause(ctx.variable_assignment().assignment_clause())
140
191
  };
141
192
 
142
193
  if (this.varDeclarationMap.has(assignmentElem.varName)) {
@@ -147,6 +198,17 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
147
198
  }) == null) {
148
199
  throw new Error(`该局部变量未声明 --- ${assignmentElem.varName}`);
149
200
  }
201
+ let varValueTypeList = [...this.varDeclarationList, ...this.currentStateObj["assignments"]];
202
+ assignmentElem["varValueType"] = this.expHelper.guessBaseTypeByExpType(assignmentElem["varValueObj"], this.generateVarValueTypeList(varValueTypeList));
203
+ console.debug(`| ${this.currentState} | ${ctx.getText()} --> ${assignmentElem["varValueType"]}`);
204
+ let varValueTypeListTmp = [...varValueTypeList].reverse();
205
+ let varValueTypeObj = varValueTypeListTmp.find(elem => {
206
+ return elem.varName === assignmentElem.varName;
207
+ });
208
+ if (assignmentElem["varValueType"] !== varValueTypeObj.varValueType) {
209
+ throw new Error(`类型验证不通过 >| ${ctx.getText()}`);
210
+ }
211
+
150
212
  this.currentStateObj["assignments"].push(assignmentElem);
151
213
 
152
214
  return assignmentElem;
@@ -158,7 +220,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
158
220
  content: ctx.getText(),
159
221
  varName: ctx.local_variable_name().getText(),
160
222
  varValue: ctx.assignment_clause().getText(),
161
- varValueObj: super.visitAssignment_clause(ctx.assignment_clause())
223
+ varValueObj: this.visitAssignment_clause(ctx.assignment_clause())
162
224
  };
163
225
 
164
226
  if (this.varDeclarationMap.has(assignmentElem.varName)) {
@@ -169,14 +231,20 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
169
231
  }) != null) {
170
232
  throw new Error(`该局部变量已声明 --- ${assignmentElem.varName}`);
171
233
  }
234
+ let varValueTypeList = [...this.varDeclarationList, ...this.currentStateObj["assignments"]];
235
+ assignmentElem["varValueType"] = this.expHelper.guessBaseTypeByExpType(assignmentElem["varValueObj"], this.generateVarValueTypeList(varValueTypeList));
236
+
237
+ console.debug(`| ${this.currentState} | ${ctx.getText()} --> ${assignmentElem["varValueType"]}`);
238
+
172
239
  this.currentStateObj["assignments"].push(assignmentElem);
173
240
 
174
241
  return assignmentElem;
175
242
  }
176
243
 
177
244
  visitEventNormal(ctx) {
178
- let builtInFunctionResult = this.visitBuilt_in_function(ctx.event().built_in_function());
245
+ console.debug(`>> ${ctx.event().getText()}`);
179
246
 
247
+ let builtInFunctionResult = this.visitBuilt_in_function(ctx.event().built_in_function());
180
248
  this.currentEventElem = {
181
249
  type: "normal",
182
250
  content: ctx.getText(),
@@ -188,10 +256,6 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
188
256
  if (ctx.event().event_path() != null) {
189
257
  this.currentEventElem["eventPath"] = ctx.event().event_path().getText();
190
258
  }
191
- if (ctx.action_section() != null) {
192
- this.visitAction_section(ctx.action_section());
193
- }
194
-
195
259
  let event_config = event_configs.find(ec => {
196
260
  let suitable = true;
197
261
  if (this.currentEventElem["eventPath"] != null) {
@@ -204,45 +268,86 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
204
268
  }
205
269
  return suitable;
206
270
  });
271
+ let event_configParamList = [];
207
272
  if (event_config != null) {
208
273
  try {
209
- if (!this.functionHelper.argsMatch(this.currentEventElem["eventParamList"], event_config["paramList"])) {
274
+ if (!this.functionHelper.argsMatch(this.currentEventElem["eventParamList"], event_config["paramList"], this.getVarDeclarationValueTypeList())) {
210
275
  throw new Error(`参数列表错误 ----- ${ctx.event().getText()}`);
211
276
  }
212
277
  } catch (e) {
213
278
  console.debug(`参数验证错误 ----- ${ctx.event().getText()}`);
214
279
  throw e;
215
280
  }
281
+ event_configParamList = event_config["paramList"];
282
+ }
283
+
284
+ if (ctx.state_context_args_section_at_event() != null) {
285
+ this.currentEventElem["stateContextArgs"] = ctx.state_context_args_section_at_event().variable_assignment().map(elem => {
286
+ this.parseState.inContextArgsSectionAtEvent = 1;
287
+ let paramElem = {
288
+ paramName: elem.ID().getText(),
289
+ paramValue: elem.assignment_clause().getText(),
290
+ paramValueObj: this.visitAssignment_clause(elem.assignment_clause()),
291
+ content: elem.getText()
292
+ };
293
+ this.parseState.inContextArgsSectionAtEvent = 0;
294
+
295
+ if (paramElem["paramValueObj"]["expType"] === "variableChain"
296
+ && context_variables.indexOf(paramElem["paramValue"]) === -1
297
+ && !this.varDeclarationMap.has(paramElem["paramValue"])
298
+ && this.currentStateObj["stateContextArgs"].find(sca => `contextArgs.${sca}` === paramElem["paramValue"]) == null
299
+ && this.currentStateObj["assignments"].find(assignment => assignment.varName === paramElem["paramValue"]) == null
300
+ && event_configParamList.find(event_configParam => {
301
+ if (event_configParam["type"] === "argsGroup") {
302
+ return paramElem["paramValue"].match(`^\\$event\\.${event_configParam["name"]}(\\.[0-9A-Za-z_]+)*$`) != null
303
+ } else {
304
+ return paramElem["paramValue"].match(`^\\$event\\.${event_configParam["name"]}$`) != null;
305
+ }
306
+ }
307
+ ) == null) {
308
+ throw new Error(`该环境参数未声明 --- ${paramElem["content"]}`);
309
+ }
310
+
311
+ return paramElem;
312
+ });
313
+ }
314
+
315
+ if (ctx.action_section() != null) {
316
+ this.visitAction_section(ctx.action_section());
216
317
  }
217
318
 
218
319
  this.currentStateObj["events"].push(this.currentEventElem);
219
320
 
220
- return this.currentEventElem;
321
+ let result = this.currentEventElem;
322
+ this.currentEventElem = null;
323
+ return result;
221
324
  }
222
325
 
223
326
  visitEventTerminate(ctx) {
224
327
  this.currentEventElem = {
225
- type: "terminate",
226
- content: ctx.getText(),
227
- eventName: ctx.TERMINATE().getText()
328
+ type: "terminate", content: ctx.getText(), eventName: ctx.TERMINATE().getText()
228
329
  };
229
330
 
230
331
  this.currentStateObj["events"].push(this.currentEventElem);
231
332
 
232
- return this.currentEventElem;
333
+ let result = this.currentEventElem;
334
+ this.currentEventElem = null;
335
+ return result;
233
336
  }
234
337
 
235
338
  visitAction_section(ctx) {
339
+ this.parseState.inActionSection = 1;
340
+
236
341
  this.currentEventElem["actions"] = [];
237
342
 
238
- return super.visitAction_section(ctx);
343
+ let result = super.visitAction_section(ctx);
344
+ this.parseState.inActionSection = 0;
345
+ return result;
239
346
  }
240
347
 
241
348
  visitFsmActionFunctionCall(ctx) {
242
349
  let actionElem = {
243
- type: "functionCall",
244
- content: ctx.getText(),
245
- actionObj: this.visitFunction_call(ctx.function_call())
350
+ type: "functionCall", content: ctx.getText(), actionObj: this.visitFunction_call(ctx.function_call())
246
351
  };
247
352
 
248
353
  this.currentEventElem["actions"].push(actionElem);
@@ -252,15 +357,34 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
252
357
 
253
358
  visitFsmActionVarAssignment(ctx) {
254
359
  let actionElem = {
255
- type: "varAssignment",
256
- content: "ctx.getText()",
257
- actionObj: {
258
- varName: ctx.variable_assignment().ID().getText(),
259
- varValue: ctx.variable_assignment().assignment_clause().getText(),
260
- varValueObj: this.visitAssignment_clause(ctx.variable_assignment().assignment_clause())
261
- }
360
+ type: "varAssignment", content: ctx.getText(),
361
+ };
362
+ let actionObj = {
363
+ varName: ctx.variable_assignment().ID().getText(),
364
+ varValue: ctx.variable_assignment().assignment_clause().getText(),
365
+ varValueObj: this.visitAssignment_clause(ctx.variable_assignment().assignment_clause())
262
366
  };
263
367
 
368
+ if (this.varDeclarationMap.has(actionObj.varName)) {
369
+ throw new Error(`全局变量不可以被再次赋值 --- ${actionObj.varName}`);
370
+ }
371
+ if (this.currentStateObj["assignments"].find(elem => {
372
+ return elem.varName === actionObj.varName;
373
+ }) == null) {
374
+ throw new Error(`该局部变量未声明 --- ${actionObj.varName}`);
375
+ }
376
+ let varValueTypeList = [...this.varDeclarationList, ...this.currentStateObj["assignments"]];
377
+ actionObj["varValueType"] = this.expHelper.guessBaseTypeByExpType(actionObj["varValueObj"], this.generateVarValueTypeList(varValueTypeList));
378
+ console.debug(`actions -- ${ctx.getText()} --> ${actionObj["varValueType"]}`);
379
+ let varValueTypeListTmp = [...varValueTypeList].reverse();
380
+ let varValueTypeObj = varValueTypeListTmp.find(elem => {
381
+ return elem.varName === actionObj.varName;
382
+ });
383
+ if (actionObj["varValueType"] !== varValueTypeObj.varValueType) {
384
+ throw new Error(`类型验证不通过 >| ${ctx.getText()}`);
385
+ }
386
+
387
+ actionElem["actionObj"] = actionObj;
264
388
  this.currentEventElem["actions"].push(actionElem);
265
389
 
266
390
  return actionElem;
@@ -342,9 +466,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
342
466
  return this.visitAtom(ctx.atom());
343
467
  } else if (ctx.signedSymbol != null) {
344
468
  return {
345
- expType: "expSigned",
346
- var1: this.visitSigned_atom(ctx.signed_atom()),
347
- symbol: ctx.signedSymbol.text
469
+ expType: "expSigned", var1: this.visitSigned_atom(ctx.signed_atom()), symbol: ctx.signedSymbol.text
348
470
  };
349
471
  } else {
350
472
  return super.visitSigned_atom(ctx);
@@ -376,8 +498,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
376
498
 
377
499
  if (ctx.LPAREN() != null) {
378
500
  return {
379
- expType: "expBooleanParen",
380
- var1: this.visitBoolean_expression(ctx.boolean_expression(0))
501
+ expType: "expBooleanParen", var1: this.visitBoolean_expression(ctx.boolean_expression(0))
381
502
  };
382
503
  }
383
504
 
@@ -523,8 +644,7 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
523
644
 
524
645
  visitArgs_group_expression(ctx) {
525
646
  return {
526
- expType: "expArgsGroup",
527
- paramList: this.visitArgs_group_param_list(ctx.args_group_param_list())
647
+ expType: "expArgsGroup", paramList: this.visitArgs_group_param_list(ctx.args_group_param_list())
528
648
  };
529
649
  }
530
650
 
@@ -578,7 +698,8 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
578
698
  ctx.expression_param().forEach(expParam => {
579
699
  let paramElem = {
580
700
  paramValue: expParam.assignment_clause().getText(),
581
- paramValueObj: this.visitAssignment_clause(expParam.assignment_clause())
701
+ paramValueObj: this.visitAssignment_clause(expParam.assignment_clause()),
702
+ content: expParam.getText()
582
703
  };
583
704
  if (expParam.expression_param_name() != null) {
584
705
  paramElem["paramName"] = expParam.expression_param_name().getText();
@@ -590,27 +711,18 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
590
711
  }
591
712
 
592
713
  visitFunction_call(ctx) {
714
+ console.debug(`>> ${ctx.getText()}`);
715
+
593
716
  let result = this.visitBuilt_in_function(ctx.built_in_function());
594
717
  result["expType"] = "functionCall";
595
718
  if (ctx.variable_chain() != null) {
596
719
  result["varChain"] = ctx.variable_chain().getText();
597
720
  }
598
721
 
599
- let function_config = function_configs.find(fc => {
600
- let suitable = true;
601
- if (result["varChain"] != null) {
602
- if (result["varChain"] !== fc["varChain"]) {
603
- suitable = false;
604
- }
605
- }
606
- if (result["funcName"] !== fc["funcName"]) {
607
- suitable = false;
608
- }
609
- return suitable;
610
- });
722
+ let function_config = this.functionHelper.findFunctionConfig(result["varChain"], result["funcName"]);
611
723
  if (function_config != null) {
612
724
  try {
613
- if (!this.functionHelper.argsMatch(result["paramList"], function_config["paramList"])) {
725
+ if (!this.functionHelper.argsMatch(result["paramList"], function_config["paramList"], this.getVarDeclarationValueTypeList())) {
614
726
  throw new Error(`参数列表错误 ----- ${ctx.getText()}`);
615
727
  }
616
728
  } catch (e) {
@@ -655,6 +767,9 @@ class CollectionPolicyCustomVisitor extends CollectionPolicyVisitor {
655
767
  let content = ctx.getText();
656
768
 
657
769
  if (ctx.variable().environment_event() != null) {
770
+ if (this.parseState.inContextArgsSectionAtEvent === 0 && this.parseState.inActionSection === 0) {
771
+ throw new Error(`该变量不能出现在除事件动作区以外的任何位置 -- ${ctx.getText()}`);
772
+ }
658
773
  varType = "event";
659
774
  } else if (content === "policy" || content === "contract") {
660
775
  varType = "context";
@@ -4,9 +4,13 @@ import { Calculator } from "../interface/Calculator";
4
4
  import { AssignmentClauseInfo } from "../model/AssignmentClauseInfo";
5
5
  import { FunctionHelperAware } from "../interface/FunctionHelperAware";
6
6
  export declare class ExpHelper implements Calculator, FunctionHelperAware {
7
+ private functionHelper;
7
8
  private calculatorFactory;
8
9
  constructor();
9
10
  getExpValue(varObj: AssignmentClauseInfo, varContextCapable: VarContextCapable<any>): any;
10
11
  setFunctionHelper(functionHelper: FunctionHelper): void;
11
- guessBaseTypeByExpType(exp: AssignmentClauseInfo): string;
12
+ guessBaseTypeByExpType(exp: AssignmentClauseInfo, varValueTypeList: {
13
+ varName: string;
14
+ varValueType: string;
15
+ }[]): string;
12
16
  }
@@ -17,12 +17,13 @@ class ExpHelper {
17
17
  throw new Error("getExpValue fail [ExpHelper]...");
18
18
  }
19
19
  setFunctionHelper(functionHelper) {
20
+ this.functionHelper = functionHelper;
20
21
  this.calculatorFactory.setFunctionHelper(functionHelper);
21
22
  }
22
23
  /*
23
24
  * 类型推断
24
25
  */
25
- guessBaseTypeByExpType(exp) {
26
+ guessBaseTypeByExpType(exp, varValueTypeList) {
26
27
  switch (exp.expType) {
27
28
  case "entity":
28
29
  return "entity";
@@ -30,17 +31,38 @@ class ExpHelper {
30
31
  return "number";
31
32
  case "expParen":
32
33
  let expParen = exp;
33
- return this.guessBaseTypeByExpType(expParen.var1);
34
+ return this.guessBaseTypeByExpType(expParen.var1, varValueTypeList);
34
35
  case "expSigned":
35
36
  return "number";
36
37
  case "functionCall":
37
- return "any";
38
+ let functionCallInfo = exp;
39
+ let function_config = this.functionHelper.findFunctionConfig(functionCallInfo.varChain, functionCallInfo.funcName);
40
+ if (function_config != null) {
41
+ return function_config["returnType"];
42
+ }
43
+ else {
44
+ return "any";
45
+ }
38
46
  case "number":
39
47
  return "number";
40
48
  case "string":
41
49
  return "string";
42
50
  case "variableChain":
43
- return "any";
51
+ if (varValueTypeList != null) {
52
+ let variableChainInfo = exp;
53
+ let vvtTemp = varValueTypeList.find(vvt => {
54
+ return variableChainInfo.content == vvt["varName"];
55
+ });
56
+ if (vvtTemp != null) {
57
+ return vvtTemp["varValueType"];
58
+ }
59
+ else {
60
+ return "any";
61
+ }
62
+ }
63
+ else {
64
+ return "any";
65
+ }
44
66
  case "expArgsGroup":
45
67
  return "argsGroup";
46
68
  case "boolean":
@@ -62,4 +84,4 @@ class ExpHelper {
62
84
  }
63
85
  }
64
86
  exports.ExpHelper = ExpHelper;
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlci9FeHBIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EscUZBQWdGO0FBSWhGLE1BQWEsU0FBUztJQUlsQjtRQUNJLElBQUksY0FBYyxHQUFHLElBQUksbURBQXdCLEVBQUUsQ0FBQztRQUNwRCxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUE0QixFQUFFLGlCQUF5QztRQUMvRSxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsRSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9FLElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxjQUE4QjtRQUM1QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsc0JBQXNCLENBQUMsR0FBeUI7UUFDNUMsUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsS0FBSyxRQUFRO2dCQUNULE9BQU8sUUFBUSxDQUFDO1lBQ3BCLEtBQUssT0FBTztnQkFDUixPQUFPLFFBQVEsQ0FBQztZQUNwQixLQUFLLFVBQVU7Z0JBQ1gsSUFBSSxRQUFRLEdBQWEsR0FBZSxDQUFDO2dCQUN6QyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsS0FBSyxXQUFXO2dCQUNaLE9BQU8sUUFBUSxDQUFDO1lBQ3BCLEtBQUssY0FBYztnQkFDZixPQUFPLEtBQUssQ0FBQztZQUNqQixLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxRQUFRLENBQUM7WUFDcEIsS0FBSyxRQUFRO2dCQUNULE9BQU8sUUFBUSxDQUFDO1lBQ3BCLEtBQUssZUFBZTtnQkFDaEIsT0FBTyxLQUFLLENBQUM7WUFFakIsS0FBSyxjQUFjO2dCQUNmLE9BQU8sV0FBVyxDQUFDO1lBRXZCLEtBQUksU0FBUztnQkFDVCxPQUFPLFNBQVMsQ0FBQztZQUNyQixLQUFLLHdCQUF3QjtnQkFDekIsT0FBTyxTQUFTLENBQUM7WUFDckIsS0FBSyxxQkFBcUI7Z0JBQ3RCLE9BQU8sU0FBUyxDQUFDO1lBQ3JCLEtBQUssbUJBQW1CO2dCQUNwQixPQUFPLFNBQVMsQ0FBQztZQUNyQixLQUFLLGlCQUFpQjtnQkFDbEIsT0FBTyxTQUFTLENBQUM7WUFFckIsS0FBSyxlQUFlO2dCQUNoQixPQUFPLE9BQU8sQ0FBQztZQUVuQixLQUFLLGNBQWM7Z0JBQ2YsT0FBTyxPQUFPLENBQUM7UUFDdkIsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSjtBQXZFRCw4QkF1RUMifQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlci9FeHBIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EscUZBQWdGO0FBTWhGLE1BQWEsU0FBUztJQU1sQjtRQUNJLElBQUksY0FBYyxHQUFHLElBQUksbURBQXdCLEVBQUUsQ0FBQztRQUNwRCxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUE0QixFQUFFLGlCQUF5QztRQUMvRSxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsRSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9FLElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxjQUE4QjtRQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsc0JBQXNCLENBQUMsR0FBeUIsRUFDekIsZ0JBQTZEO1FBQ2hGLFFBQVEsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLEtBQUssUUFBUTtnQkFDVCxPQUFPLFFBQVEsQ0FBQztZQUNwQixLQUFLLE9BQU87Z0JBQ1IsT0FBTyxRQUFRLENBQUM7WUFDcEIsS0FBSyxVQUFVO2dCQUNYLElBQUksUUFBUSxHQUFhLEdBQWUsQ0FBQztnQkFDekMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3hFLEtBQUssV0FBVztnQkFDWixPQUFPLFFBQVEsQ0FBQztZQUNwQixLQUFLLGNBQWM7Z0JBQ2YsSUFBSSxnQkFBZ0IsR0FBcUIsR0FBdUIsQ0FBQztnQkFDakUsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ25ILElBQUksZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUMxQixPQUFPLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDekMsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE9BQU8sS0FBSyxDQUFDO2dCQUNqQixDQUFDO1lBQ0wsS0FBSyxRQUFRO2dCQUNULE9BQU8sUUFBUSxDQUFDO1lBQ3BCLEtBQUssUUFBUTtnQkFDVCxPQUFPLFFBQVEsQ0FBQztZQUNwQixLQUFLLGVBQWU7Z0JBQ2hCLElBQUksZ0JBQWdCLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQzNCLElBQUksaUJBQWlCLEdBQXNCLEdBQXdCLENBQUM7b0JBQ3BFLElBQUksT0FBTyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDdEMsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUN2RCxDQUFDLENBQUMsQ0FBQztvQkFDSCxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDbEIsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ25DLENBQUM7eUJBQU0sQ0FBQzt3QkFDSixPQUFPLEtBQUssQ0FBQztvQkFDakIsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUM7WUFDTCxLQUFLLGNBQWM7Z0JBQ2YsT0FBTyxXQUFXLENBQUM7WUFDdkIsS0FBSSxTQUFTO2dCQUNULE9BQU8sU0FBUyxDQUFDO1lBQ3JCLEtBQUssd0JBQXdCO2dCQUN6QixPQUFPLFNBQVMsQ0FBQztZQUNyQixLQUFLLHFCQUFxQjtnQkFDdEIsT0FBTyxTQUFTLENBQUM7WUFDckIsS0FBSyxtQkFBbUI7Z0JBQ3BCLE9BQU8sU0FBUyxDQUFDO1lBQ3JCLEtBQUssaUJBQWlCO2dCQUNsQixPQUFPLFNBQVMsQ0FBQztZQUVyQixLQUFLLGVBQWU7Z0JBQ2hCLE9BQU8sT0FBTyxDQUFDO1lBRW5CLEtBQUssY0FBYztnQkFDZixPQUFPLE9BQU8sQ0FBQztRQUN2QixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKO0FBM0ZELDhCQTJGQyJ9
@@ -17,9 +17,15 @@ export declare class FunctionHelper implements FunctionInvoke, ExpHelperAware {
17
17
  addExecutor(executorName: "Query" | "Kit" | "Time" | "fun" | "api", functionName: string, executor: FunctionInvoke): void;
18
18
  setExpHelper(expHelper: ExpHelper): void;
19
19
  argsMatch(paramList: {
20
+ paramValue: string;
20
21
  paramValueObj: AssignmentClauseInfo;
21
22
  }[], paramConfigList: {
22
23
  name: string;
23
24
  type: string;
25
+ optional?: boolean;
26
+ }[], varValueTypeList: {
27
+ varName: string;
28
+ varValueType: string;
24
29
  }[]): boolean;
30
+ findFunctionConfig(varChain: string, funcName: string): any;
25
31
  }
@@ -6,6 +6,7 @@ const KitFunctionExecutor_1 = require("../function-executor/KitFunctionExecutor"
6
6
  const TimeFunctionExecutor_1 = require("../function-executor/TimeFunctionExecutor");
7
7
  const FunFunctionExecutor_1 = require("../function-executor/FunFunctionExecutor");
8
8
  const ApiFunctionExecutor_1 = require("../function-executor/ApiFunctionExecutor");
9
+ const function_configs = require("../../resources/context_config/function_configs.json");
9
10
  class FunctionHelper {
10
11
  constructor() {
11
12
  this.funcExecutors = new Map();
@@ -73,20 +74,43 @@ class FunctionHelper {
73
74
  /*
74
75
  * 参数校验
75
76
  */
76
- argsMatch(paramList, paramConfigList) {
77
+ argsMatch(paramList, paramConfigList, varValueTypeList) {
78
+ if (paramConfigList.length === 1) {
79
+ let paramConfig = paramConfigList[0];
80
+ if (paramConfig.optional != null && paramConfig.optional) {
81
+ if (paramList.length === 0) {
82
+ return true;
83
+ }
84
+ }
85
+ }
77
86
  if (paramList.length != paramConfigList.length) {
78
87
  return false;
79
88
  }
80
89
  for (let i = 0; i < paramList.length; i++) {
81
90
  let param = paramList[i];
82
91
  let paramConfig = paramConfigList[i];
83
- let paramType = this.expHelper.guessBaseTypeByExpType(param.paramValueObj);
92
+ let paramType = this.expHelper.guessBaseTypeByExpType(param.paramValueObj, varValueTypeList);
93
+ console.debug(`args -- ${param.paramValue} --> ${paramType}`);
84
94
  if (paramType != "any" && paramConfig.type != "any" && paramType != paramConfig.type) {
85
95
  return false;
86
96
  }
87
97
  }
88
98
  return true;
89
99
  }
100
+ findFunctionConfig(varChain, funcName) {
101
+ return function_configs.find(fc => {
102
+ let suitable = true;
103
+ if (varChain != null) {
104
+ if (varChain !== fc["varChain"]) {
105
+ suitable = false;
106
+ }
107
+ }
108
+ if (funcName !== fc["funcName"]) {
109
+ suitable = false;
110
+ }
111
+ return suitable;
112
+ });
113
+ }
90
114
  }
91
115
  exports.FunctionHelper = FunctionHelper;
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25IZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVyL0Z1bmN0aW9uSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHNGQUFpRjtBQUNqRixrRkFBNkU7QUFDN0Usb0ZBQStFO0FBQy9FLGtGQUE2RTtBQUM3RSxrRkFBNkU7QUFLN0UsTUFBYSxjQUFjO0lBUXZCO1FBSlEsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUsvRCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSw2Q0FBcUIsRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUkseUNBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLDJDQUFvQixFQUFFLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSx5Q0FBbUIsRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUkseUNBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxZQUFZLENBQUMsU0FBYztRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsWUFBWSxDQUFDLFlBQW9CO1FBQzdCLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6RCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xD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
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25IZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVyL0Z1bmN0aW9uSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHNGQUFpRjtBQUNqRixrRkFBNkU7QUFDN0Usb0ZBQStFO0FBQy9FLGtGQUE2RTtBQUM3RSxrRkFBNkU7QUFLN0UsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsc0RBQXNELENBQUMsQ0FBQztBQUV6RixNQUFhLGNBQWM7SUFRdkI7UUFKUSxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBSy9ELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLDZDQUFxQixFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSx5Q0FBbUIsRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksMkNBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLHlDQUFtQixFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSx5Q0FBbUIsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFjO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxZQUFZLENBQUMsWUFBb0I7UUFDN0IsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pELE9B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
@@ -14,5 +14,6 @@ export interface ActionVarAssignment extends ActionInfo {
14
14
  varName: string;
15
15
  varValue: string;
16
16
  varValueObj: AssignmentClauseInfo;
17
+ varValueType: string;
17
18
  };
18
19
  }
@@ -1,4 +1,5 @@
1
1
  import { AssignmentClauseInfo } from "../AssignmentClauseInfo";
2
+ import { ActionInfo } from "./ActionInfo";
2
3
  export interface EventInfo {
3
4
  type: "normal" | "terminate";
4
5
  content: string;
@@ -11,4 +12,7 @@ export interface EventInfo {
11
12
  paramValueObj: AssignmentClauseInfo;
12
13
  }
13
14
  ];
15
+ toState: string;
16
+ stateContextArgs?: string[];
17
+ actions: ActionInfo[];
14
18
  }
@@ -9,6 +9,7 @@ export interface PolicyInfo {
9
9
  paramName?: string;
10
10
  paramValue: string;
11
11
  paramValueObj: AssignmentClauseInfo;
12
+ content: string;
12
13
  }
13
14
  ];
14
15
  };
@@ -18,6 +19,11 @@ export interface PolicyInfo {
18
19
  stateName: string;
19
20
  assignments: VarDeclarationInfo[];
20
21
  events: EventInfo[];
22
+ serviceStateSection?: {
23
+ serviceState?: string;
24
+ serviceStateCollection?: string[];
25
+ };
26
+ stateContextArgs?: string[];
21
27
  }
22
28
  ];
23
29
  }
@@ -6,4 +6,5 @@ export interface VarDeclarationInfo {
6
6
  paramList?: string[];
7
7
  varValue: string;
8
8
  varValueObj: AssignmentClauseInfo;
9
+ varValueType?: "void" | "boolean" | "number" | "string" | "entity" | "array" | "argsGroup" | "any";
9
10
  }