All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edi.rule.model.JSRuleShunt Maven / Gradle / Ivy

package edi.rule.model;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnore;
import edi.rule.annotation.JSRuleCheck;
import edi.rule.annotation.JSRuleInject;
import edi.rule.core.JSRuleArgsVessel;
import edi.rule.extend.interfaces.IJSRuleActionModel;
import lombok.Data;

/**
 * @author 摩拉克斯
 * @date 2023年7月22日 上午10:48:53
 * 

分流器,根据断言器{@link JSRuleAssert}的结果来对actions进行分流处理,如果为true则使用then属性下的actions,反之则使用otherwise属性 */ @Data public final class JSRuleShunt> implements IJSRuleActionModel{ /** *

代表与或逻辑(and or),默认为and * */ public Boolean ifAnd; /** *

断言器,别名为if,该属性不能为空,正如其别名的含义,是一个判断真假的断言动作 * */ @JSRuleCheck(required=true) @JsonAlias({"if"}) public JSRuleAssert assertion; /** *

当assertion断言结果为true时执行该属性下的actions * */ public List then; /** *

别名else,当assertion断言结果为false时执行该属性下的actions * */ @JsonAlias({"else"}) public List otherwise; @JSRuleInject @JsonIgnore private JSRuleArgsVessel vessel; public JSRuleShunt() { ifAnd = true; } @Override public Object start(A action) { if (assertion.ifTrue(null,null,null, ifAnd, vessel)) { return startActions(then, vessel).getResult(); }else { return startActions(otherwise, vessel).getResult(); } } @Override public boolean isOwner(Map params,Set roles){ return true; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy