bpmn-js / bmpn.io / coreUI / React
bpmn-js / bmpn.io / coreUI / React
资源
示例回购:https://github.com/aaronscribner/bmpn-coreui-react
核心UI:http://coreui.io/
问题
在 Core UI 管理模板中使用它时,我似乎无法弄清楚如何将建模器设置为正确的宽度和高度。有没有人有尝试将此 BPMN 编辑器嵌入核心 UI 模板的经验?
我也在学习React,我现在好像在用头撞墙
link 已损坏,但我假设建模器被包裹在 div 元素内,因为它们在 bpmn.io examples.
中使用
建模器通常包含在两个 div 元素中,如示例中的代码所示:
<div class="content" id="js-drop-zone">
<div class="message intro">
<div class="note">
Drop BPMN diagram from your desktop or <a id="js-create-diagram" href>create a new diagram</a> to get started.
</div>
</div>
<div class="message error">
<div class="note">
<p>Ooops, we could not display the BPMN 2.0 diagram.</p>
<div class="details">
<span>cause of the problem</span>
<pre></pre>
</div>
</div>
</div>
<div class="canvas" id="js-canvas"></div>
</div>
上面的代码显示了一个元素js-drop-zone
,它是拖放容器,允许您将文件拖入其中进行加载。内部元素是 js-canvas
,它是要渲染的建模器实例的主要目标。
因为您知道这些元素的名称,所以您可以创建一个新的 css 样式表并操纵它们的宽度和高度,而无需额外的反应代码:
#js-drop-zone {
width: 100%;
border: solid 1px F00;
}
#js-canvas {
width: 100%;
border: solid 1px 0F0;
}
我刚刚添加了两个边框来提示您这两个元素的尺寸。希望对你有帮助。
注意:您仍然应该检查包中包含的建模器代码,如果它也具有相同的元素命名,如果不是,您需要找到它们的 ID 名称,例如通过浏览器检查。
这是一个有效的 React 组件
import Modeler from "bpmn-js/lib/Modeler";
import "bpmn-js/dist/assets/diagram-js.css";
import "bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css";
import { useEffect, useRef } from "react";
const xml = `<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.3.5">
<bpmn:process id="Process_1" isExecutable="true">
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>`;
export default function CfsSpec() {
const containerRef = useRef(null);
useEffect(() => {
const container = containerRef.current;
const modeler = new Modeler({
container,
keyboard: {
bindTo: document
}
});
modeler.importXML(xml, err => {
if (err) {
console.error(err);
}
const canvas = modeler.get("canvas");
const elementFactory = modeler.get("elementFactory");
canvas.zoom("fit-viewport");
var task = elementFactory.createBpmnElement("shape", {
type: "bpmn:Task",
x: 350,
y: 100
});
var root = canvas.getRootElement();
canvas.addShape(task, root);
});
}, [])
return (
<div ref={containerRef} style={{width: '100%', height: '100%'}}>
</div>
);
}
资源
示例回购:https://github.com/aaronscribner/bmpn-coreui-react
核心UI:http://coreui.io/
问题 在 Core UI 管理模板中使用它时,我似乎无法弄清楚如何将建模器设置为正确的宽度和高度。有没有人有尝试将此 BPMN 编辑器嵌入核心 UI 模板的经验?
我也在学习React,我现在好像在用头撞墙
link 已损坏,但我假设建模器被包裹在 div 元素内,因为它们在 bpmn.io examples.
中使用建模器通常包含在两个 div 元素中,如示例中的代码所示:
<div class="content" id="js-drop-zone">
<div class="message intro">
<div class="note">
Drop BPMN diagram from your desktop or <a id="js-create-diagram" href>create a new diagram</a> to get started.
</div>
</div>
<div class="message error">
<div class="note">
<p>Ooops, we could not display the BPMN 2.0 diagram.</p>
<div class="details">
<span>cause of the problem</span>
<pre></pre>
</div>
</div>
</div>
<div class="canvas" id="js-canvas"></div>
</div>
上面的代码显示了一个元素js-drop-zone
,它是拖放容器,允许您将文件拖入其中进行加载。内部元素是 js-canvas
,它是要渲染的建模器实例的主要目标。
因为您知道这些元素的名称,所以您可以创建一个新的 css 样式表并操纵它们的宽度和高度,而无需额外的反应代码:
#js-drop-zone {
width: 100%;
border: solid 1px F00;
}
#js-canvas {
width: 100%;
border: solid 1px 0F0;
}
我刚刚添加了两个边框来提示您这两个元素的尺寸。希望对你有帮助。
注意:您仍然应该检查包中包含的建模器代码,如果它也具有相同的元素命名,如果不是,您需要找到它们的 ID 名称,例如通过浏览器检查。
这是一个有效的 React 组件
import Modeler from "bpmn-js/lib/Modeler";
import "bpmn-js/dist/assets/diagram-js.css";
import "bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css";
import { useEffect, useRef } from "react";
const xml = `<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.3.5">
<bpmn:process id="Process_1" isExecutable="true">
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>`;
export default function CfsSpec() {
const containerRef = useRef(null);
useEffect(() => {
const container = containerRef.current;
const modeler = new Modeler({
container,
keyboard: {
bindTo: document
}
});
modeler.importXML(xml, err => {
if (err) {
console.error(err);
}
const canvas = modeler.get("canvas");
const elementFactory = modeler.get("elementFactory");
canvas.zoom("fit-viewport");
var task = elementFactory.createBpmnElement("shape", {
type: "bpmn:Task",
x: 350,
y: 100
});
var root = canvas.getRootElement();
canvas.addShape(task, root);
});
}, [])
return (
<div ref={containerRef} style={{width: '100%', height: '100%'}}>
</div>
);
}