Browse Source

bpmn.js整合bpmn-js-lint

master
xlsea 3 years ago
parent
commit
5c5c41ce1b
  1. 4
      ruoyi-ui/package.json
  2. 3
      ruoyi-ui/src/components/Process/.bpmnlintrc
  3. 15
      ruoyi-ui/src/components/Process/index.vue
  4. 6
      ruoyi-ui/vue.config.js

4
ruoyi-ui/package.json

@ -39,6 +39,10 @@
"@riophae/vue-treeselect": "0.4.0", "@riophae/vue-treeselect": "0.4.0",
"axios": "0.24.0", "axios": "0.24.0",
"bpmn-js": "^11.1.0", "bpmn-js": "^11.1.0",
"bpmnlint": "^6.4.0",
"bpmn-js-bpmnlint": "^0.15.0",
"bpmnlint-loader": "^0.1.4",
"file-drops": "^0.4.0",
"clipboard": "2.0.8", "clipboard": "2.0.8",
"core-js": "3.25.3", "core-js": "3.25.3",
"diagram-js": "^11.4.1", "diagram-js": "^11.4.1",

3
ruoyi-ui/src/components/Process/.bpmnlintrc

@ -0,0 +1,3 @@
{
"extends": "bpmnlint:recommended"
}

15
ruoyi-ui/src/components/Process/index.vue

@ -29,6 +29,7 @@
</el-tooltip> </el-tooltip>
</div> </div>
<div> <div>
<el-button size="mini" icon="el-icon-s-check" @click="verifyXML">校验xml</el-button>
<el-button size="mini" icon="el-icon-view" @click="showXML">查看xml</el-button> <el-button size="mini" icon="el-icon-view" @click="showXML">查看xml</el-button>
<el-button size="mini" icon="el-icon-download" @click="saveXML(true)">下载xml</el-button> <el-button size="mini" icon="el-icon-download" @click="saveXML(true)">下载xml</el-button>
<el-button size="mini" icon="el-icon-picture" @click="saveImg('svg', true)">下载svg</el-button> <el-button size="mini" icon="el-icon-picture" @click="saveImg('svg', true)">下载svg</el-button>
@ -51,7 +52,9 @@
<script> <script>
// //
import customTranslate from './common/customTranslate' import customTranslate from './common/customTranslate'
import lintModule from 'bpmn-js-bpmnlint';
import Modeler from 'bpmn-js/lib/Modeler' import Modeler from 'bpmn-js/lib/Modeler'
import bpmnlintConfig from './.bpmnlintrc';
import panel from './PropertyPanel' import panel from './PropertyPanel'
import getInitStr from './flowable/init' import getInitStr from './flowable/init'
// flowable // flowable
@ -107,11 +110,15 @@ export default {
this.modeler = new Modeler({ this.modeler = new Modeler({
container: this.$refs.canvas, container: this.$refs.canvas,
additionalModules: [ additionalModules: [
lintModule,
customControlsModule, customControlsModule,
{ // { //
translate: ['value', customTranslate] translate: ['value', customTranslate]
}, },
], ],
linting: {
bpmnlint: bpmnlintConfig
},
moddleExtensions: { moddleExtensions: {
flowable: FlowableModule flowable: FlowableModule
} }
@ -179,6 +186,11 @@ export default {
if (rootElements[i].$type === 'bpmn:Process') return rootElements[i] if (rootElements[i].$type === 'bpmn:Process') return rootElements[i]
} }
}, },
async verifyXML(){
const linting = this.modeler.get('linting')
console.log(linting)
linting.toggle(true);
},
async saveXML(download = false) { async saveXML(download = false) {
try { try {
const { xml } = await this.modeler.saveXML({ format: true }) const { xml } = await this.modeler.saveXML({ format: true })
@ -243,6 +255,7 @@ export default {
@import "~bpmn-js/dist/assets/bpmn-font/css/bpmn.css"; @import "~bpmn-js/dist/assets/bpmn-font/css/bpmn.css";
@import "~bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css"; @import "~bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css";
@import "~bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css"; @import "~bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css";
@import "~bpmn-js-bpmnlint/dist/assets/css/bpmn-js-bpmnlint.css";
.view-mode { .view-mode {
.el-header, .el-aside, .djs-palette, .bjs-powered-by { .el-header, .el-aside, .djs-palette, .bjs-powered-by {
display: none; display: none;
@ -289,7 +302,7 @@ export default {
} }
.djs-container svg { .djs-container svg {
min-height: 650px; //min-height: 650px;
} }
.highlight.djs-shape .djs-visual > :nth-child(1) { .highlight.djs-shape .djs-visual > :nth-child(1) {

6
ruoyi-ui/vue.config.js

@ -89,6 +89,12 @@ module.exports = {
symbolId: 'icon-[name]' symbolId: 'icon-[name]'
}) })
.end() .end()
config.module
.rule('bpmnlintrc')
.test(/\.bpmnlintrc$/)
.use('bpmnlint-loader')
.loader('bpmnlint-loader')
.end()
config config
.when(process.env.NODE_ENV !== 'development', .when(process.env.NODE_ENV !== 'development',

Loading…
Cancel
Save