提交 4630e5ab 编写于 作者: sq3536's avatar sq3536

rule规则

上级 6344f417
......@@ -19,6 +19,7 @@ import com.alibaba.fastjson.JSONObject;
global ${pub.getPKGCodeName()}.core.${ParamPSDataEntity.getPSSystemModule().codeName?lower_case}.domain.${ParamPSDataEntity.codeName} ${logicName+logicParam.codeName?lower_case};
<#else>
global java.util.Map ${logicName+logicParam.codeName?lower_case};
global ${pub.getPKGCodeName()}.util.security.AuthenticationUser curuser;
</#if>
</#list>
</#if>
......@@ -50,26 +51,32 @@ ruleflow-group "${logicName+deLogicNode.getCodeName()?lower_case}"
<#list deLogicNode.getPSDELogicNodeParams() as nodeParam>
<#assign targetLogicParam=nodeParam.getDstPSDELogicParam()>
<#assign targetLogicFieldName=nodeParam.getDstFieldName()>
<#if targetLogicParam.getParamPSDataEntity().getPSDEField(targetLogicFieldName)??>
<#assign targetDEField=((targetLogicParam.getParamPSDataEntity().getPSDEField(targetLogicFieldName))!'')>
<#if targetLogicParam.getParamPSDataEntity().getPSDEField(targetLogicFieldName,true)??>
<#assign targetLogicFieldName=srfcaseformat(targetLogicParam.getParamPSDataEntity().getPSDEField(targetLogicFieldName,true).getCodeName(),'l_u2lC')>
</#if>
<#if nodeParam.getSrcValueType()=='SRCVALUE'><#comment>直接值</#comment>
<#if targetDEField??&&srfjavatype(targetDEField.stdDataType)=='Integer'>
${logicName+targetLogicParam.getCodeName()?lower_case}.set("${targetLogicFieldName?lower_case}",${nodeParam.getSrcValue()});
<#else>
${logicName+targetLogicParam.getCodeName()?lower_case}.set("${targetLogicFieldName?lower_case}","${nodeParam.getSrcValue()}");
</#if>
<#elseif nodeParam.getSrcValueType()=='SRCDLPARAM' ><#comment>源逻辑参数</#comment>
<#assign srcPSDELogicParam=nodeParam.getSrcPSDELogicParam()>
<#assign srcFieldName=nodeParam.getSrcFieldName()>
<#--<#assign srcDEField=((srcPSDELogicParam.getParamPSDataEntity().getPSDEField(srcFieldName))!'') >-->
<#--<#if srcDEField!='' && targetDEField!=''>-->
<#if srcPSDELogicParam.getParamPSDataEntity().getPSDEField(srcFieldName,true)??>
<#assign srcFieldName=srfcaseformat(srcPSDELogicParam.getParamPSDataEntity().getPSDEField(srcFieldName,true).getCodeName(),'l_u2lC')>
</#if>
${logicName+targetLogicParam.getCodeName()?lower_case}.set("${targetLogicFieldName?lower_case}",${logicName+srcPSDELogicParam.getCodeName()?lower_case}.get("${srcFieldName?lower_case}"));<#comment>源逻辑参数选择了实体</#comment>
<#--<#else>-->
<#--//暂不支持逻辑参数无实体模式 属性[${srcFieldName?upper_case}]-->
<#--</#if>-->
<#else>
//暂未支持其余准备参数设置
<#if nodeParam.getSrcValueType()=="CURTIME">
${logicName+targetLogicParam.getCodeName()?lower_case}.set("${targetLogicFieldName?lower_case}",(new java.sql.Timestamp(new java.util.Date().getTime()))));
<#elseif nodeParam.getSrcValueType()=="OPERATOR">
${logicName+targetLogicParam.getCodeName()?lower_case}.set("${targetLogicFieldName?lower_case}",curuser.getUserid());
<#elseif nodeParam.getSrcValueType()=="OPERATORNAME">
${logicName+targetLogicParam.getCodeName()?lower_case}.set("${targetLogicFieldName?lower_case}",curuser.getPersonname());
<#elseif nodeParam.getSrcValueType()=="CONTEXT">
${logicName+targetLogicParam.getCodeName()?lower_case}.set("${targetLogicFieldName?lower_case}",${logicName+"default"}.get("${srcFieldName?lower_case}"));<#comment>源逻辑参数选择了实体</#comment>
<#elseif nodeParam.getSrcValueType()=="SESSION">
${logicName+targetLogicParam.getCodeName()?lower_case}.set("${targetLogicFieldName?lower_case}",curuser.getSessionParams().get("${srcFieldName?lower_case}"));
<#elseif nodeParam.getSrcValueType()=="NULLVALUE">
${logicName+targetLogicParam.getCodeName()?lower_case}.set("${targetLogicFieldName?lower_case}",null);
</#if>
</#if>
</#list>
<#elseif deLogicNode.getLogicNodeType()=='DEACTION'><#comment>调用实体行为</#comment>
......
......@@ -7,7 +7,7 @@ TARGET=PSDELOGIC
<extensionElements>
<tns:import name="java.util.Map" />
<tns:import name="org.springframework.util.StringUtils"/>
<tns:import name="${pub.getPKGCodeName()}.util.helper.CompareHelper"/>
<tns:import name="${pub.getPKGCodeName()}.util.helper.RuleUtils"/>
<#assign logicName=(de.codeName+item.codeName)?lower_case>
<#comment>插入逻辑参数</#comment>
<#if item.getPSDELogicParams?? && item.getPSDELogicParams()??>
......@@ -59,7 +59,6 @@ TARGET=PSDELOGIC
</#if>
<#assign LogicLinkCond=LogicLink.getPSDELogicLinkGroupCond()>
<#assign strGroupCond=getGroupCond(LogicLinkCond)>
<#assign strGroupCond=strGroupCond?replace("ISNOTNULL","!=NULL")?replace("ISNULL","==NULL")?replace("AND","&&")?replace("OR","||")?replace("GT&&EQ",">=")?replace("LT&&EQ","<=")?replace("NOTEQ","!=")?replace("EQ","==")?replace("GT",">")?replace("LT","<") >
eval${strGroupCond}
]]>
</conditionExpression>
......@@ -93,7 +92,7 @@ TARGET=PSDELOGIC
<#function getGroupCond LogicLinkCond>
<#assign strRuleCond="(">
<#if LogicLinkCond.getPSDELogicLinkConds?? && LogicLinkCond.getPSDELogicLinkConds()??><#comment>判断是否有组条件</#comment>
<#assign conn=LogicLinkCond.getGroupOP()>
<#assign conn=LogicLinkCond.getGroupOP()?replace("AND","&&")?replace("OR","||")>
<#list LogicLinkCond.getPSDELogicLinkConds() as childLogicLinkCond><#comment>组条件,递归</#comment>
<#if childLogicLinkCond.getPSDELogicLinkConds?? && childLogicLinkCond.getPSDELogicLinkConds()??>
<#assign strRuleCond=strRuleCond+getGroupCond(childLogicLinkCond)>//getGroupCond
......@@ -115,18 +114,13 @@ TARGET=PSDELOGIC
<#assign condBody="">
<#assign targetParam=LogicLinkCond.getDstLogicParam()><#comment>目标参数</#comment>
<#assign targetFieldName=LogicLinkCond.getDstFieldName()><#comment>目标属性名称</#comment>
<#assign targetDEField=((targetParam.getParamPSDataEntity().getPSDEField(targetFieldName))!'')><#comment>目标属性</#comment>
<#assign targetDEField=((targetParam.getParamPSDataEntity().getPSDEField(targetFieldName,true))!'')><#comment>目标属性</#comment>
<#assign targetDBValueOP=LogicLinkCond.getPSDBValueOPId()><#comment>表达式</#comment>
<#assign targetValue=LogicLinkCond.getValue()><#comment>值项</#comment>
<#if targetDEField!=''>
<#if targetDBValueOP=="ISNULL">
<#assign condBody="StringUtils.isEmpty($"+logicName+targetParam.getCodeName()?lower_case+".get"+targetDEField.codeName?cap_first+"()"+")">
<#elseif targetDBValueOP=="ISNOTNULL">
<#assign condBody="!StringUtils.isEmpty($"+logicName+targetParam.getCodeName()?lower_case+".get"+targetDEField.codeName?cap_first+"()"+")">
<#else>
<#assign condBody="CompareHelper.compare($"+logicName+targetParam.getCodeName()?lower_case+".get"+targetDEField.codeName?cap_first+"(),"+"\""+targetValue+"\","+"\""+targetDBValueOP+"\")">
</#if>
targetFieldName=srfcaseformat(targetDEField.codeName,'l_u2lC') ;
</#if>
<#assign condBody="RuleUtils.test($"+logicName+targetParam.getCodeName()?lower_case+".get(\""+targetFieldName+"\"),\""+targetDBValueOP+"\","+"\""+targetValue+"\")">
<#assign fieldCond=fieldCond+condBody >
<#assign fieldCond=fieldCond+")" >
<#return fieldCond/>
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册