feat: 引擎版本初始化

master
031026 2024-05-08 17:14:13 +08:00
commit 6758088dcb
4 changed files with 109 additions and 65 deletions

View File

@ -5,7 +5,7 @@ import data from '@/views/system/dict/data.vue'
export function listSource(query) { export function listSource(query) {
return request({ return request({
url: '/source/source/list', url: '/source/source/list',
method: 'get', method: 'post',
params: query params: query
}) })
} }

View File

@ -96,3 +96,11 @@ export function statusOnOff(data){
data data
}) })
} }
export function versionsUpd(data){
return request({
url: '/rule/versions/versionsUpd',
method: 'post',
data
})
}

View File

@ -1,6 +1,6 @@
<template> <template>
<div style="height: 800px"> <div style="height: 800px">
<codemirror ref="codeMirror" :value="code" :options="cmOptions" style="height: 800px"/> <codemirror ref="codeMirror" v-model="code" :value="code" :options="cmOptions" style="height: 800px"/>
</div> </div>
</template> </template>
@ -40,6 +40,15 @@ export default {
type: Boolean type: Boolean
} }
}, },
watch:{
'code':{
handler(val){
if (val != null){
console.log(this.$emit('input',val))
}
}
}
},
name: "Encoding", name: "Encoding",
data() { data() {
return { return {

View File

@ -46,7 +46,7 @@
</span> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{event: 'info', ruleEngineVersion: ruleEngineVersion}">规则详情</el-dropdown-item> <el-dropdown-item :command="{event: 'info', ruleEngineVersion: ruleEngineVersion}">规则详情</el-dropdown-item>
<el-dropdown-item :command="{event: 'test', ruleEngineVersion: ruleEngineVersion}">测试规则</el-dropdown-item> <el-dropdown-item :command="{event: 'test', ruleEngineVersion: ruleEngineVersion}" :disabled="ruleEngineVersion.status === '0'">测试规则</el-dropdown-item>
<el-dropdown-item :command="{event: 'status', ruleEngineVersion: ruleEngineVersion}" :disabled="ruleEngineVersion.status !== '2'"> <el-dropdown-item :command="{event: 'status', ruleEngineVersion: ruleEngineVersion}" :disabled="ruleEngineVersion.status !== '2'">
{{ruleEngineVersion.isActivate !== 'no-activate' ? "禁用" : "激活"}}规则 {{ruleEngineVersion.isActivate !== 'no-activate' ? "禁用" : "激活"}}规则
</el-dropdown-item> </el-dropdown-item>
@ -162,7 +162,7 @@
<el-drawer <el-drawer
title="规则版本测试" size="80%" :before-close="ruleEngineVersionTestStatusClose" title="规则版本测试" size="80%" :before-close="ruleEngineVersionTestStatusClose"
:visible.sync="ruleEngineVersionTestStatus" :visible.sync="ruleEngineVersionTestStatus"
:direction="'rtl'" v-if="ruleEngineVersionInfoAndTest.status === 1" v-else-if="ruleEngineVersionInfoAndTest.status"> :direction="'rtl'">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-descriptions v-if="ruleEngineVersionInfoAndTest != null" class="margin-top" :column="2" border> <el-descriptions v-if="ruleEngineVersionInfoAndTest != null" class="margin-top" :column="2" border>
@ -188,60 +188,60 @@
<el-col :span="12"> <el-col :span="12">
<encoding style="margin-top: 20px" v-model="ruleEngineVersionInfoAndTest.codeIng" :read-only="true"></encoding> <encoding style="margin-top: 20px" v-model="ruleEngineVersionInfoAndTest.codeIng" :read-only="true"></encoding>
</el-col> </el-col>
<el-col :span="12"> <!-- <el-col :span="12">-->
<el-col :span="assetStructure == null ? 24 : 12"> <!-- <el-col :span="assetStructure == null ? 24 : 12">-->
<el-card class="box-card"> <!-- <el-card class="box-card">-->
<div slot="header" class="clearfix"> <!-- <div slot="header" class="clearfix">-->
<span>选择数据接入</span> <!-- <span>选择数据接入</span>-->
</div> <!-- </div>-->
<el-select v-model="assetStructure" style="width: 100%;"> <!-- <el-select v-model="assetStructure" style="width: 100%;">-->
<el-option v-for="_assetStructure in assetStructureList" <!-- <el-option v-for="_assetStructure in assetStructureList"-->
:key="_assetStructure.name" <!-- :key="_assetStructure.name"-->
:value="_assetStructure.name" <!-- :value="_assetStructure.name"-->
:label="_assetStructure.name+'('+_assetStructure.systemName+')'" <!-- :label="_assetStructure.name+'('+_assetStructure.systemName+')'"-->
></el-option> <!-- ></el-option>-->
</el-select> <!-- </el-select>-->
</el-card> <!-- </el-card>-->
</el-col> <!-- </el-col>-->
<el-col :span="12" v-if="assetStructure != null"> <!-- <el-col :span="12" v-if="assetStructure != null">-->
<el-card class="box-card" > <!-- <el-card class="box-card" >-->
<div slot="header" class="clearfix"> <!-- <div slot="header" class="clearfix">-->
<span>选择资产结构</span> <!-- <span>选择资产结构</span>-->
</div> <!-- </div>-->
<el-select v-model="assets" style="width: 100%;"> <!-- <el-select v-model="assets" style="width: 100%;">-->
<el-option v-for="_assets in assetsList" <!-- <el-option v-for="_assets in assetsList"-->
:key="_assets.name" <!-- :key="_assets.name"-->
:value="_assets.name" <!-- :value="_assets.name"-->
:label="_assets.name+'('+_assets.as+')'" <!-- :label="_assets.name+'('+_assets.as+')'"-->
></el-option> <!-- ></el-option>-->
</el-select> <!-- </el-select>-->
</el-card> <!-- </el-card>-->
</el-col> <!-- </el-col>-->
<el-col :span="24"> <!-- <el-col :span="24">-->
<el-card class="box-card" v-if="assets != null"> <!-- <el-card class="box-card" v-if="assets != null">-->
<div slot="header" class="clearfix"> <!-- <div slot="header" class="clearfix">-->
<span>选择资产模型</span> <!-- <span>选择资产模型</span>-->
</div> <!-- </div>-->
<el-descriptions direction="vertical" :column="3" border> <!-- <el-descriptions direction="vertical" :column="3" border>-->
<el-descriptions-item v-for="_dataModel in dataModelList" <!-- <el-descriptions-item v-for="_dataModel in dataModelList"-->
:label='_dataModel.name + "("+_dataModel.comment+")"'> <!-- :label='_dataModel.name + "("+_dataModel.comment+")"'>-->
<el-radio v-model="dataMode" :label="_dataModel.name" :value="_dataModel.id">{{dataModeMap[_dataModel.name]}}</el-radio> <!-- <el-radio v-model="dataMode" :label="_dataModel.name" :value="_dataModel.id">{{dataModeMap[_dataModel.name]}}</el-radio>-->
</el-descriptions-item> <!-- </el-descriptions-item>-->
</el-descriptions> <!-- </el-descriptions>-->
</el-card> <!-- </el-card>-->
</el-col> <!-- </el-col>-->
<el-col :span="24" style="margin-top: 10px" v-if="dataMode != null"> <!-- <el-col :span="24" style="margin-top: 10px" v-if="dataMode != null">-->
<el-button>测试</el-button> <!-- <el-button>测试</el-button>-->
<el-input style="margin-top: 10px" v-model="testResult" type="textarea" placeholder="请点击测试" /> <!-- <el-input style="margin-top: 10px" v-model="testResult" type="textarea" placeholder="请点击测试" />-->
</el-col> <!-- </el-col>-->
</el-col> <!-- </el-col>-->
</el-row> </el-row>
</el-drawer> </el-drawer>
</div> </div>
</template> </template>
<script> <script>
import {details, versionsAdd, engineOnOff,statusOnOff} from "@/api/rule/maintenance" import { details, versionsAdd, engineOnOff, statusOnOff, versionsUpd, ruleengine } from '@/api/rule/maintenance'
import Encoding from "@/components/Encoding/index.vue"; import Encoding from "@/components/Encoding/index.vue";
export default { export default {
name: "EngineVersion", name: "EngineVersion",
@ -277,13 +277,16 @@ export default {
codeIng: null, codeIng: null,
isTest:"0" isTest:"0"
}, },
assetStructure:null,
assetStructureList:[],
// //
ruleEngineVersionInfoStatus: false, ruleEngineVersionInfoStatus: false,
// //
ruleEngineVersionTestStatus: false, ruleEngineVersionTestStatus: false,
// //
ruleEngineVersionInfoAndTest:{}, ruleEngineVersionInfoAndTest:{},
show:null, //
ruleContentReq: {},
} }
}, },
created() { created() {
@ -291,7 +294,33 @@ export default {
}, },
methods: { methods: {
// //
saveCoding: function() { saveCoding: function() {
this.ruleEngineVersionInfoAndTest.status = "1"
console.log(this.ruleEngineVersionInfoAndTest)
versionsUpd(this.ruleEngineVersionInfoAndTest).then(res=>{
if (res.code === 200) {
const codeName = this.ruleEngineVersionInfoAndTest.codeIng;
this.ruleContentReq.ruleContent=codeName
this.ruleContentReq.className= this.ruleEngineVersionInfoAndTest.versionCode
this.$message.success(res.msg)
ruleengine(this.ruleContentReq).then(
res=>{
this.$message.error(res.msg)
this.ruleEngineVersionInfoStatus=false
this.initRuleEngine(this.ruleEngineId)
this.ruleEngineVersionInfoAndTest={}
}
)
}else {
this.$message.error(res.msg)
this.initRuleEngine(this.ruleEngineId)
this.ruleEngineVersionInfoAndTest={}
this.ruleEngineVersionInfoStatus=false
}
})
}, },
// //
ruleEngineVersionInfoStatusClose(done) { ruleEngineVersionInfoStatusClose(done) {
@ -349,21 +378,24 @@ export default {
getCodeIng(value){ getCodeIng(value){
let parentClass=null let parentClass=null
console.log("规则作用域",value) console.log("规则作用域",value)
//
if (value === 'taskContext') { if (value === 'taskContext') {
parentClass = "DataSetContext"; parentClass = "DataSetContext";
//
}else if (value === 'recordContext'){ }else if (value === 'recordContext'){
parentClass = "RecordContext"; parentClass = "RecordContext";
//
}else if (value === 'dataSetContext'){ }else if (value === 'dataSetContext'){
parentClass = "DataModelEngine"; parentClass = "DataModelContext";
} }
let packageName = "com.muyu.rule.engine";
let packageName = "com.muyu.engine";
let customName = "custom"; let customName = "custom";
let templateName = "template"; let templateName = "template";
let codeIng = `package ${packageName}.${customName}; let codeIng = `package ${packageName}.${customName};
import com.muyu.engine.action.ActionDiscard; import com.muyu.engine.action.ActionDiscard;
import com.muyu.engine.scope.${parentClass}; import com.muyu.engine.scope.${parentClass};
@ -374,13 +406,8 @@ import com.muyu.engine.scope.${parentClass};
* @Version: 1.0 * @Version: 1.0
*/ */
public class ${this.engineVersionForm.versionCode} extends ${parentClass} { public class ${this.engineVersionForm.versionCode} extends ${parentClass} {
@Override public static void main(String[] args) {
public void execution () { return "zhangsan";
Object value = getValue();
if (value == null || "".equals(value) || "null".equals(value)) {
throw new ActionDiscard();
}
} }
}`; }`;
return codeIng; return codeIng;