Skip to content

Commit 0baec57

Browse files
committed
add rule formula
1 parent e3f3482 commit 0baec57

File tree

1 file changed

+129
-12
lines changed

1 file changed

+129
-12
lines changed

dmn-xml.js

+129-12
Original file line numberDiff line numberDiff line change
@@ -325,61 +325,178 @@ function xmlDomToString(xmlObj) {
325325

326326
// 辅助公式
327327
DmnXml.formulas = [
328+
// case 1: 每次n分
328329
{
329330
id: 1,
330-
name: '错1次扣n分',
331+
name: '每次扣n分',
331332
allowAttributeCodeTypes: ["int", "integer"],
332333
operate: 'sub',
333334
inputs: [{ type: "double", code: "n", value: null }],
334335
rules: [{ condition: ">0", output: "-code * {n}" }, { condition: "<=0", output: "0" }]
335336
},
336337
{
337-
id: 2,
338-
name: '对1次加n分',
338+
id: 1.1,
339+
name: '每次加n分',
339340
allowAttributeCodeTypes: ["int", "integer"],
340341
operate: 'add',
341342
inputs: [{ type: "double", code: "n", value: null }],
342343
rules: [{ condition: ">0", output: "code * {n}" }, { condition: "<=0", output: "0" }]
343344
},
344345
{
345-
id: 3,
346+
id: 1.2,
347+
name: '每次扣该项基础分%n',
348+
allowAttributeCodeTypes: ["int", "integer"],
349+
operate: 'sub',
350+
inputs: [{ type: "double", code: "n", value: null }],
351+
rules: [{ condition: ">0", output: "-code*{n}*0.01*base_score" }, { condition: "<=0", output: "0" }]
352+
},
353+
// case 2: bool
354+
{
355+
id: 2,
346356
name: '有该情况扣n分',
347357
allowAttributeCodeTypes: ["bool", "boolean"],
348358
operate: 'sub',
349359
inputs: [{ type: "double", code: "n", value: null }],
350360
rules: [{ condition: "true", output: "-{n}" }, { condition: "false", output: "0" }]
351361
},
352362
{
353-
id: 4,
363+
id: 2.1,
354364
name: '有该情况加n分',
355365
allowAttributeCodeTypes: ["bool", "boolean"],
356366
operate: 'add',
357367
inputs: [{ type: "double", code: "n", value: null }],
358368
rules: [{ condition: "true", output: "{n}" }, { condition: "false", output: "0" }]
359369
},
360370
{
361-
id: 5,
362-
name: 'A不扣分,B扣m分,C扣n分,D扣x分',
363-
allowAttributeCodeTypes: ["string", "text"],
371+
id: 2.2,
372+
name: '没有该情况扣n分',
373+
allowAttributeCodeTypes: ["bool", "boolean"],
374+
operate: 'sub',
375+
inputs: [{ type: "double", code: "n", value: null }],
376+
rules: [{ condition: "false", output: "-{n}" }, { condition: "true", output: "0" }]
377+
},
378+
{
379+
id: 2.3,
380+
name: '没有该情况加n分',
381+
allowAttributeCodeTypes: ["bool", "boolean"],
382+
operate: 'add',
383+
inputs: [{ type: "double", code: "n", value: null }],
384+
rules: [{ condition: "false", output: "{n}" }, { condition: "true", output: "0" }]
385+
},
386+
{
387+
id: 2.4,
388+
name: '有该情况扣该项基础分%n',
389+
allowAttributeCodeTypes: ["bool", "boolean"],
390+
operate: 'sub',
391+
inputs: [{ type: "double", code: "n", value: 100 }],
392+
rules: [{ condition: "true", output: "-{n}*0.01*base_score" }, { condition: "false", output: "0" }]
393+
},
394+
{
395+
id: 2.5,
396+
name: '没有该情况扣该项基础分%n',
397+
allowAttributeCodeTypes: ["bool", "boolean"],
364398
operate: 'sub',
365-
inputs: [{ type: "double", code: "m", value: 5 }, { type: "double", code: "n", value: 10 }, { type: "double", code: "x", value: 15 }],
366-
rules: [{ condition: '"A"', output: "0" }, { condition: '"B"', output: "-{m}" }, { condition: '"C"', output: "-{n}" }, { condition: '"D"', output: "-{x}" }]
399+
inputs: [{ type: "double", code: "n", value: 100 }],
400+
rules: [{ condition: "false", output: "-{n}*0.01*base_score" }, { condition: "true", output: "0" }]
367401
},
402+
// case 3: m次 n分
368403
{
369-
id: 6,
404+
id: 3,
405+
name: '低于m次扣n分',
406+
allowAttributeCodeTypes: ["int", "integer"],
407+
operate: 'sub',
408+
inputs: [{ type: "int", code: "m", value: null }, { type: "double", code: "n", value: null }],
409+
rules: [{ condition: "<{m}", output: "-{n}" }, { condition: ">={m}", output: "0" }]
410+
},
411+
{
412+
id: 3.1,
370413
name: '超过m次扣n分',
371414
allowAttributeCodeTypes: ["int", "integer"],
372415
operate: 'sub',
373416
inputs: [{ type: "int", code: "m", value: null }, { type: "double", code: "n", value: null }],
374417
rules: [{ condition: ">{m}", output: "-{n}" }, { condition: "<={m}", output: "0" }]
375418
},
376419
{
377-
id: 7,
420+
id: 3.2,
421+
name: '超过m次加n分',
422+
allowAttributeCodeTypes: ["int", "integer"],
423+
operate: 'add',
424+
inputs: [{ type: "int", code: "m", value: null }, { type: "double", code: "n", value: null }],
425+
rules: [{ condition: ">{m}", output: "{n}" }, { condition: "<={m}", output: "0" }]
426+
},
427+
{
428+
id: 3.3,
429+
name: '低于m次,低的部分每次扣n分',
430+
allowAttributeCodeTypes: ["int", "integer"],
431+
operate: 'sub',
432+
inputs: [{ type: "int", code: "m", value: null }, { type: "double", code: "n", value: null }],
433+
rules: [{ condition: "<{m}", output: "(code-{m})*{n}" }, { condition: ">={m}", output: "0" }]
434+
},
435+
{
436+
id: 3.4,
437+
name: '超过m次,超过部分每次加n分',
438+
allowAttributeCodeTypes: ["int", "integer"],
439+
operate: 'add',
440+
inputs: [{ type: "int", code: "m", value: null }, { type: "double", code: "n", value: null }],
441+
rules: [{ condition: ">{m}", output: "(code-{m})*{n}" }, { condition: "<={m}", output: "0" }]
442+
},
443+
{
444+
id: 3.5,
445+
name: '超过m次,超过部分每次扣n分',
446+
allowAttributeCodeTypes: ["int", "integer"],
447+
operate: 'sub',
448+
inputs: [{ type: "int", code: "m", value: null }, { type: "double", code: "n", value: null }],
449+
rules: [{ condition: ">{m}", output: "({m}-code)*{n}" }, { condition: "<={m}", output: "0" }]
450+
},
451+
{
452+
id: 3.6,
453+
name: '低于m次 扣该项基础分%n',
454+
allowAttributeCodeTypes: ["int", "integer"],
455+
operate: 'sub',
456+
inputs: [{ type: "int", code: "m", value: null }, { type: "double", code: "n", value: null }],
457+
rules: [{ condition: "<{m}", output: "-{n}*0.01*base_score" }, { condition: ">={m}", output: "0" }]
458+
},
459+
{
460+
id: 3.7,
461+
name: '超过m次 扣该项基础分%n',
462+
allowAttributeCodeTypes: ["int", "integer"],
463+
operate: 'sub',
464+
inputs: [{ type: "int", code: "m", value: null }, { type: "double", code: "n", value: null }],
465+
rules: [{ condition: ">{m}", output: "-{n}*0.01*base_score" }, { condition: "<={m}", output: "0" }]
466+
},
467+
// case 4:完成率
468+
{
469+
id: 4,
378470
name: '完成率每低%1扣n分',
379471
allowAttributeCodeTypes: ["double", "number", "float"],
380472
operate: 'sub',
381473
inputs: [{ type: "double", code: "n", value: null }],
382474
rules: [{ condition: "<1", output: "-(1-code)*100*{n}" }, { condition: ">=1", output: "0" }]
475+
},
476+
{
477+
id: 4.1,
478+
name: '完成率每低%1扣该项基础分%n',
479+
allowAttributeCodeTypes: ["double", "number", "float"],
480+
operate: 'sub',
481+
inputs: [{ type: "double", code: "n", value: null }],
482+
rules: [{ condition: "<1", output: "-(1-code)*100*{n}*0.01*base_score" }, { condition: ">=1", output: "0" }]
483+
},
484+
// case 5: 主观评分
485+
{
486+
id: 5,
487+
name: 'A不扣分,B扣m分,C扣n分,D扣i分',
488+
allowAttributeCodeTypes: ["string", "text"],
489+
operate: 'sub',
490+
inputs: [{ type: "double", code: "m", value: 5 }, { type: "double", code: "n", value: 10 }, { type: "double", code: "i", value: 15 }],
491+
rules: [{ condition: '"A"', output: "0" }, { condition: '"B"', output: "-{m}" }, { condition: '"C"', output: "-{n}" }, { condition: '"D"', output: "-{i}" }]
492+
},
493+
{
494+
id: 5.1,
495+
name: '主观评分',
496+
allowAttributeCodeTypes: ["int", "integer", "double", "number", "float"],
497+
operate: 'sub',
498+
inputs: [],
499+
rules: [{ condition: '', output: "code-base_score" }]
383500
}
384501
]
385502

0 commit comments

Comments
 (0)