Appearance
数据格式说明
DFlow
提供了三种数据用于满足不同的场景需求,分别是流程数据
和BpmnXML
和设计数据
。
流程数据
流程数据
是一个JSON
,采用有向图
数据结构,仅保存了流程节点和业务属性(如:编码
、名称
、责任人
、下步任务
、条件
等)。
流程数据
可以通过遍历解析流程图中各个节点,将其转换为后台业务能够识别的数据格式。适合没有基于JBPM/Activiti二次开发,而是采用完全自研的流程引擎
、规则引擎
或任务引擎
。
通过API
的toFlowObject
方法可以获取流程数据
javascript
//获取编辑器
let editor = this.$refs["ddei_editor_1"].editor;
//获取flowAPI
let flowAPI = editor.flow
//获取流程数据
let flowObj = flowAPI.toFlowObject()
//打印流程数据
console.log(flowObj)
//打印流程数据JSON
console.log(JSON.stringify(flowObj))
示例
json
{
"id": "stage_1",
"nodes": {
"start": {
"id": "start_6",
"code": "start",
"nextNodes": [
"line_9"
],
"bpmnType": "StartEvent",
"bpmnSubType": 1,
"bpmnBaseType": "Event"
},
"userTask1": {
"id": "user_task_8",
"code": "userTask1",
"name": "用户任务1",
"prevNodes": [
"line_9"
],
"nextNodes": [
"line_11"
],
"bpmnType": "UserTask",
"bpmnBaseType": "Activity"
},
"line_9": {
"id": "line_9",
"prevNode": "start",
"nextNode": "userTask1",
"ep": {
"type": 51
},
"bpmnSubType": 1,
"bpmnBaseType": "Sequence"
},
"scriptTask1": {
"id": "script_task_10",
"code": "scriptTask1",
"name": "脚本1",
"prevNodes": [
"line_11"
],
"nextNodes": [
"line_13",
"line_55"
],
"bpmnType": "ScriptTask",
"bpmnBaseType": "Activity"
},
"line_11": {
"id": "line_11",
"prevNode": "userTask1",
"nextNode": "scriptTask1",
"ep": {
"type": 51
},
"bpmnSubType": 1,
"bpmnBaseType": "Sequence"
},
"parallel_gateway_12": {
"id": "parallel_gateway_12",
"name": "并行网关",
"prevNodes": [
"line_13"
],
"nextNodes": [
"line_20"
],
"bpmnType": "ParallelGateway",
"bpmnBaseType": "Gateway"
},
"line_13": {
"id": "line_13",
"prevNode": "scriptTask1",
"nextNode": "parallel_gateway_12",
"ep": {
"type": 51
},
"bpmnSubType": 1,
"bpmnBaseType": "Sequence"
},
"subprocess_16": {
"id": "subprocess_16",
"name": "子流程",
"prevNodes": [
"line_20"
],
"nextNodes": [
"line_36"
],
"bpmnType": "SubProcess",
"bpmnSubType": 3,
"bpmnBaseType": "Activity",
"nodes": {
"substart": {
"id": "start_18",
"code": "substart",
"prevNodes": [
"line_66"
],
"nextNodes": [
"line_22"
],
"subProcesses": [
"subprocess_16"
],
"bpmnType": "StartEvent",
"bpmnSubType": 1,
"bpmnBaseType": "Event"
},
"user_task_21": {
"id": "user_task_21",
"name": "子任务1",
"prevNodes": [
"line_22"
],
"nextNodes": [
"line_24",
"line_66"
],
"subProcesses": [
"subprocess_16"
],
"bpmnType": "UserTask",
"bpmnBaseType": "Activity"
},
"user_task_23": {
"id": "user_task_23",
"name": "子任务2",
"prevNodes": [
"line_24"
],
"nextNodes": [
"line_26"
],
"subProcesses": [
"subprocess_16"
],
"bpmnType": "UserTask",
"bpmnBaseType": "Activity"
},
"subend": {
"id": "end_25",
"code": "subend",
"prevNodes": [
"line_26"
],
"subProcesses": [
"subprocess_16"
],
"bpmnType": "EndEvent",
"bpmnSubType": 1,
"bpmnBaseType": "Event"
}
},
"startNodes": [
"substart"
],
"endNodes": [
"subend"
]
},
"substart": {
"id": "start_18",
"code": "substart",
"prevNodes": [
"line_66"
],
"nextNodes": [
"line_22"
],
"subProcesses": [
"subprocess_16"
],
"bpmnType": "StartEvent",
"bpmnSubType": 1,
"bpmnBaseType": "Event"
},
"line_20": {
"id": "line_20",
"prevNode": "parallel_gateway_12",
"nextNode": "subprocess_16",
"ep": {
"type": 51
},
"sp": {
"type": 4
},
"bpmnSubType": 2,
"bpmnBaseType": "Sequence"
},
"line_22": {
"id": "line_22",
"prevNode": "substart",
"nextNode": "user_task_21",
"ep": {
"type": 51
},
"bpmnSubType": 1,
"bpmnBaseType": "Sequence"
},
"line_24": {
"id": "line_24",
"prevNode": "user_task_21",
"nextNode": "user_task_23",
"ep": {
"type": 51
},
"bpmnSubType": 1,
"bpmnBaseType": "Sequence"
},
"subend": {
"id": "end_25",
"code": "subend",
"prevNodes": [
"line_26"
],
"subProcesses": [
"subprocess_16"
],
"bpmnType": "EndEvent",
"bpmnSubType": 1,
"bpmnBaseType": "Event"
},
"line_26": {
"id": "line_26",
"prevNode": "user_task_23",
"nextNode": "subend",
"ep": {
"type": 51
},
"bpmnSubType": 1,
"bpmnBaseType": "Sequence"
},
"complex_gateway_33": {
"id": "complex_gateway_33",
"prevNodes": [
"line_36"
],
"nextNodes": [
"line_42"
],
"bpmnType": "ComplexGateway",
"bpmnBaseType": "Gateway"
},
"line_36": {
"id": "line_36",
"prevNode": "subprocess_16",
"nextNode": "complex_gateway_33",
"ep": {
"type": 51
},
"bpmnSubType": 1,
"bpmnBaseType": "Sequence"
},
"end": {
"id": "end_41",
"code": "end",
"prevNodes": [
"line_42"
],
"bpmnType": "EndEvent",
"bpmnSubType": 1,
"bpmnBaseType": "Event"
},
"line_42": {
"id": "line_42",
"prevNode": "complex_gateway_33",
"nextNode": "end",
"ep": {
"type": 51
},
"bpmnSubType": 1,
"bpmnBaseType": "Sequence"
},
"comment_53": {
"id": "comment_53",
"prevNodes": [
"line_55"
],
"text": "自动执行脚本",
"bpmnType": "Comment",
"bpmnBaseType": "Comment"
},
"line_55": {
"id": "line_55",
"prevNode": "scriptTask1",
"nextNode": "comment_53",
"ep": {
"type": 0
},
"sp": {
"type": 0
},
"bpmnSubType": 5,
"bpmnBaseType": "Sequence"
},
"line_66": {
"id": "line_66",
"prevNode": "user_task_21",
"nextNode": "substart",
"ep": {
"type": 51
},
"bpmnSubType": 1,
"bpmnBaseType": "Sequence"
}
},
"startNodes": [
"start"
],
"endNodes": [
"end"
]
}
说明
DDeiFlowGraph
--流程图
DDeiFlowGraph
是顶级节点,是一个包含了所有流程节点、子流程和连线的流程图。
属性名 | 说明 | 数据类型 | 默认值 | 备注 |
---|---|---|---|---|
id | 流程图ID | string | 系统生成 | 流程图ID |
name | 名称 | string | 流程图名称 | |
nodes | 流程节点 | Map<string,DDeiFlowNode |DDeiFlowSequence > | 所有节点、子流程、连线 | |
startNodes | 开始节点 | DDeiFlowNode[] | 所有顶级开始节点 | |
endNodes | 结束节点 | DDeiFlowNode[] | 所有顶级结束节点 | |
isolatedNodes | 孤立节点 | DDeiFlowNode[] | 所有孤立节点 | |
groups | 分组 | DDeiFlowGroup[] | 所有分组 |
DDeiFlowNode
--流程节点
DDeiFlowNode
表示一流程中的节点、可以是开始、结束、任务以及子流程。
属性名 | 说明 | 数据类型 | 默认值 | 备注 |
---|---|---|---|---|
id | 节点 | string | 系统生成 | |
code | 编码 | string | ||
name | 名称 | string | ||
text | 文本 | string | ||
desc | 备注 | string | ||
prevNodes | 前置节点 | DDeiFlowNode[] |DDeiFlowSequence[] | 所有前置节点 | |
nextNodes | 后置节点 | DDeiFlowNode[] |DDeiFlowSequence[] | 所有后置节点 | |
attachNodes | 依附节点 | DDeiFlowNode[] | 所有依附于本节点的节点 | |
attachPNode | 依附节点(父) | string | 本节点所依附节点的Key | |
subProcesses | 所属子流程ID | DDeiSubProcess[] | 本节点所属所有子流程,按照层级关系从深到浅排列 |
DDeiFlowSequence
表示一流程中的连接线,用于连接前后两个节点。
属性名 | 说明 | 数据类型 | 默认值 | 备注 |
---|---|---|---|---|
id | 节点 | string | 系统生成 | 连线id |
code | 编码 | string | ||
name | 名称 | string | ||
text | 文本 | string | ||
desc | 备注 | string | ||
prevNode | 前置节点 | DDeiFlowNode | 前置节点 | |
nextNode | 后置节点 | DDeiFlowNode | 后置节点 | |
condition | 条件 | string | ||
default | 缺省节点 | boolean |
DDeiFlowSubProcess
表示一个子流程,继承自DDeiFlowNode
,子流程可以嵌套。
属性名 | 说明 | 数据类型 | 默认值 | 备注 |
---|---|---|---|---|
id | 节点 | string | 系统生成 | 子流程ID |
code | 编码 | string | ||
name | 名称 | string | ||
text | 文本 | string | ||
desc | 备注 | string | ||
prevNodes | 前置节点 | DDeiFlowNode[] |DDeiFlowSequence[] | 所有前置节点 | |
nextNodes | 后置节点 | DDeiFlowNode[] |DDeiFlowSequence[] | 所有后置节点 | |
attachNodes | 依附节点 | DDeiFlowNode[] | 所有依附于本节点的节点 | |
attachPNode | 依附节点(父) | string | 本节点所依附节点的Key | |
subProcesses | 所属子流程ID | string[] | 本节点所属所有子流程ID,按照层级关系从深到浅排列 | |
nodes | 流程节点 | Map<string,DDeiFlowNode |DDeiFlowSequence > | 当前子流程的所有节点、子流程、连线 | |
startNodes | 开始节点 | DDeiFlowNode[] | 当前子流程开始节点 | |
endNodes | 结束节点 | DDeiFlowNode[] | 当前子流程结束节点 | |
isolatedNodes | 孤立节点 | DDeiFlowNode[] | 当前子流程孤立节点 |
DDeiFlowGroup
表示一个分组,分组只是在图形显示上对节点进行分类,一般不影响流程。
属性名 | 说明 | 数据类型 | 默认值 | 备注 |
---|---|---|---|---|
id | 节点 | string | 系统生成 | |
code | 编码 | string | ||
name | 名称 | string | ||
text | 文本 | string | ||
desc | 备注 | string | ||
nodes | 流程节点 | Map<string,DDeiFlowNode |DDeiFlowSequence > | 分组中范围中的所有节点 |
DDeiFlowFile
--流程文件
DDeiFlowFile
是流程文件节点,只有当返回数据中包含多个流程图时,才会包装为DDeiFlowFile
。
属性名 | 说明 | 数据类型 | 默认值 | 备注 |
---|---|---|---|---|
id | 文件id | string | 系统生成 | 流程文件ID |
name | 名称 | string | 文件名称 | |
graphics | 分组 | DDeiFlowGraph[] | 所有流程图 |
BpmnXML
BpmnXML
是一个BPMN规范制定的一个标准,采用XML
作为数据格式,可以用来完整的描述复杂的流程图。
BpmnXML
可以很方便的与主流的流程引擎JBPM
、Activiti
集成,这些引擎都遵循BPMN
规范,提供了将BpmnXML
转换为流程定义的能力,同时支持在XML中扩展内容。这种格式适合基于JBPM/Activit二次开发的流程引擎
、规则引擎
或任务引擎
。
通过API
的toBPMNXML()
方法可以获取BpmnXML
javascript
//获取编辑器
let editor = this.$refs["ddei_editor_1"].editor;
//获取flowAPI
let flowAPI = editor.flow
//获取流程数据
let bpmnXML = flowAPI.toBPMNXML()
//打印bpmnXML
console.log(bpmnXML)
示例
xml
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions id="a8bfc36085a06dda9812567699ae4493"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI" targetNamespace="http://bpmn.io/schema/bpmn">
<bpmn:process id="stage_1" isExecutable="true">
<bpmn:startEvent id="start_6"/>
<bpmn:userTask id="userTask1" name="用户任务1">
<bpmn:incoming>line_9</bpmn:incoming>
<bpmn:outgoing>line_11</bpmn:outgoing>
</bpmn:userTask>
<bpmn:sequenceFlow id="line_9" sourceRef="start" targetRef="userTask1"/>
<bpmn:scriptTask id="scriptTask1" name="脚本1">
<bpmn:incoming>line_11</bpmn:incoming>
<bpmn:outgoing>line_13</bpmn:outgoing>
<bpmn:outgoing>line_55</bpmn:outgoing>
</bpmn:scriptTask>
<bpmn:sequenceFlow id="line_11" sourceRef="userTask1" targetRef="scriptTask1"/>
<bpmn:parallelGateway id="parallel_gateway_12" name="并行网关">
<bpmn:incoming>line_13</bpmn:incoming>
<bpmn:outgoing>line_20</bpmn:outgoing>
</bpmn:parallelGateway>
<bpmn:sequenceFlow id="line_13" sourceRef="scriptTask1" targetRef="parallel_gateway_12"/>
<bpmn:transaction id="subprocess_16" name="子流程">
<bpmn:startEvent id="start_18"/>
<bpmn:userTask id="user_task_21" name="子任务1"/>
<bpmn:userTask id="user_task_23" name="子任务2"/>
<bpmn:endEvent id="end_25"/>
<bpmn:transaction/>
<bpmn:startEvent id="start_18"/>
<bpmn:sequenceFlow id="line_20" sourceRef="parallel_gateway_12" targetRef="subprocess_16"/>
<bpmn:sequenceFlow id="line_22" sourceRef="substart" targetRef="user_task_21"/>
<bpmn:sequenceFlow id="line_24" sourceRef="user_task_21" targetRef="user_task_23"/>
<bpmn:endEvent id="end_25"/>
<bpmn:sequenceFlow id="line_26" sourceRef="user_task_23" targetRef="subend"/>
<bpmn:complexGateway id="complex_gateway_33">
<bpmn:incoming>line_36</bpmn:incoming>
<bpmn:outgoing>line_42</bpmn:outgoing>
</bpmn:complexGateway>
<bpmn:sequenceFlow id="line_36" sourceRef="subprocess_16" targetRef="complex_gateway_33"/>
<bpmn:endEvent id="end_41"/>
<bpmn:sequenceFlow id="line_42" sourceRef="complex_gateway_33" targetRef="end"/>
<bpmn:textAnnotation id="comment_53">
<bpmn:text>自动执行脚本</bpmn:text>
</bpmn:textAnnotation>
<bpmn:association id="line_55" targetRef="comment_53" sourceRef="scriptTask1" associationDirection="None"/>
<bpmn:sequenceFlow id="line_66" sourceRef="user_task_21" targetRef="substart"/>
</bpmn:process>
<bpmndi:BPMNDiagram id="Diagram_a8bfc36085a06dda9812567699ae4493">
<bpmndi:BPMNPlane id="Plane_stage_1" bpmnElement="stage_1">
<bpmndi:BPMNShape id="start_id" bpmnElement="start">
<dc:Bounds x="636.5198768402898" y="1551.4017666040695" width="39.9996163981607" height="39.99961639816047"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="userTask1_id" bpmnElement="userTask1">
<dc:Bounds x="736.5194932384504" y="1536.4015748031497" width="110" height="70"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="line_9_id" bpmnElement="line_9">
<di:waypoint x="676.5194932384505" y="1571.4015748031497"/>
<di:waypoint x="736.5194932384504" y="1571.4015748031497"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="scriptTask1_id" bpmnElement="scriptTask1">
<dc:Bounds x="906.5194932384501" y="1536.4015748031497" width="110.00000000000023" height="70"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="line_11_id" bpmnElement="line_11">
<di:waypoint x="846.5194932384504" y="1571.4015748031497"/>
<di:waypoint x="906.5194932384504" y="1571.4015748031497"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="parallel_gateway_12_id" bpmnElement="parallel_gateway_12">
<dc:Bounds x="1076.5194932384507" y="1546.4015748031497" width="50" height="50"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="line_13_id" bpmnElement="line_13">
<di:waypoint x="1016.5194932384503" y="1571.4015748031497"/>
<di:waypoint x="1076.5194932384507" y="1571.4015748031497"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="subprocess_16_id" bpmnElement="subprocess_16">
<dc:Bounds x="1205.5196850393709" y="1430" width="406.9999999999982" height="283"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="substart_id" bpmnElement="substart">
<dc:Bounds x="1210.5198768402893" y="1551.5001918009198" width="39.99961639816047" height="39.99961639816047"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="line_20_id" bpmnElement="line_20">
<di:waypoint x="1126.5194932384507" y="1571.4015748031497"/>
<di:waypoint x="1205.5196850393709" y="1571.5"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="line_22_id" bpmnElement="line_22">
<di:waypoint x="1250.5194932384502" y="1571.5"/>
<di:waypoint x="1284.5194932384502" y="1571.5"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="line_24_id" bpmnElement="line_24">
<di:waypoint x="1394.5194932384497" y="1571.5"/>
<di:waypoint x="1420.0196850393704" y="1571.5"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="subend_id" bpmnElement="subend">
<dc:Bounds x="1565.019685039369" y="1551.5001918009198" width="39.99961639816138" height="39.99961639816047"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="line_26_id" bpmnElement="line_26">
<di:waypoint x="1530.01968503937" y="1571.5"/>
<di:waypoint x="1565.01968503937" y="1571.5"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="complex_gateway_33_id" bpmnElement="complex_gateway_33">
<dc:Bounds x="1652.4864532214012" y="1546.4015748031497" width="50.000000000001364" height="50"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="line_36_id" bpmnElement="line_36">
<di:waypoint x="1612.519685039369" y="1571.5"/>
<di:waypoint x="1652.4864532214037" y="1571.4015748031497"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="end_id" bpmnElement="end">
<dc:Bounds x="1762.4864532214033" y="1551.4017666040695" width="39.99961639815956" height="39.99961639816047"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="line_42_id" bpmnElement="line_42">
<di:waypoint x="1702.4864532214015" y="1571.4015748031497"/>
<di:waypoint x="1762.4864532214028" y="1571.4015748031497"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="comment_53_id" bpmnElement="comment_53">
<dc:Bounds x="932.7541871160014" y="1429.8990237827416" width="105.53061224489795" height="40.25510204081638"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="line_55_id" bpmnElement="line_55">
<di:waypoint x="961.5194932384502" y="1536.4015748031497"/>
<di:waypoint x="985.5194932384504" y="1470.154125823558"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="line_66_id" bpmnElement="line_66">
<di:waypoint x="1284.5194932384502" y="1571.5"/>
<di:waypoint x="1250.5194932384497" y="1571.5"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>
说明
关于BpmnXML
可以参考BPMN
的规范或JBPM/Activiti
的相关文档。
设计数据
设计数据
是一个JSON
,保存了所绘流程图的完整信息,包括图形属性(如:大小
、位置
、颜色
、字体
等)和业务属性(如:编码
、名称
、责任人
、节点连接
等)。通过DDeiEditor
的files
属性能够获取所有打开文件的文件,通过DDeiFile
的toJSON
方法就能够得到如下JSON。可以结合设计图可以很了解其结构,JSON是从DDeiFile
这一层级开始。
设计数据
可以完整的还原流程图,并且可以转换为流程数据
和BpmnXML
。适合用来回显
流程图。由于需要存储所有设计细节,占用空间较大,不利于便利和检索。在上一节的loadData
方法中,我们传入的就是设计数据
设计器中的所有都是以文件
形式保存,通过API
的files
对象,可以获取完整的设计数据
javascript
//获取编辑器
let editor = this.$refs["ddei_editor_1"].editor;
//获取JSON对象(设计数据)
let file = editor.files[0]
//将文件对象转换为JSON字符串(设计数据)
let designData = file.toJSON()
//打印设计数据
console.log(designData)
//打印设计数据JSON
console.log(JSON.stringify(designData))
示例
json
{
"id": "1234567890",
"name": "新建文件_NEW",
"desc": "",
"extData": {},
"state": 2,
"publish": "0",
"lastUpdateTime": 1720510890856,
"path": "/新建文件_NEW",
"currentSheetIndex": 0,
"modelType": "DDeiFile",
"modelNumber": 6,
"unicode": "7c2e23e9a3786cd895d4999084ef6262",
"ddeiVersion": 1237,
"sheets": [
{
"name": "页面-1",
"desc": "页面-1",
"stage": {
"id": "stage_1",
"layers": [
{
"id": "layer_11",
"name": "图层1",
"models": {
"end_17": {
"id": "end_17",
"modelCode": "102090",
"modelType": "DDeiPolygon",
"cpv": {
"x": 175.48749999999998,
"y": 110.159375,
"z": 1
},
"hpv": [
{
"x": 175.48749999999998,
"y": 110.159375,
"z": 1
},
{
"x": 201.94583333333333,
"y": 110.159375,
"z": 1
}
],
"exPvs": {},
"poly": 2,
"mirrorX": false,
"mirrorY": false,
"sptStyle": {},
"fill": {
"color": "black"
},
"bpv": {
"x": 186.07083333333333,
"y": 120.74270833333333,
"z": 1
}
},
"start_19": {
"id": "start_19",
"modelCode": "102001",
"modelType": "DDeiPolygon",
"cpv": {
"x": 175.48749999999998,
"y": 65.18020833333334,
"z": 1
},
"hpv": [
{
"x": 175.48749999999998,
"y": 65.18020833333334,
"z": 1
},
{
"x": 201.94583333333333,
"y": 65.18020833333334,
"z": 1
}
],
"exPvs": {},
"poly": 2,
"mirrorX": false,
"mirrorY": false,
"sptStyle": {},
"bpv": {
"x": 186.07083333333333,
"y": 75.76354166666667,
"z": 1
}
}
},
"midList": [
"end_17",
"start_19"
],
"modelType": "DDeiLayer",
"baseModelType": "DDeiLayer",
"index": 0,
"background": null,
"display": 1,
"lock": false,
"print": true,
"centerOpPoints": [],
"modelCode": "DDeiLayer",
"modelChanged": true,
"modelNumber": 2
},
{
"id": "layer_default",
"name": "图层",
"models": {
"task_6": {
"id": "task_6",
"modelCode": "102010",
"modelType": "DDeiPolygon",
"cpv": {
"x": 92.14375000000001,
"y": 65.70937500000001,
"z": 1
},
"hpv": [
{
"x": 92.14375000000001,
"y": 65.70937500000001,
"z": 1
},
{
"x": 118.60208333333334,
"y": 65.70937500000001,
"z": 1
}
],
"exPvs": {
"_84b25e15bf91626b80631bd0d088255e": {
"x": 92.14375000000001,
"y": 74.96979166666667,
"z": 1,
"rate": 0.5,
"sita": 90,
"index": 0,
"id": "_84b25e15bf91626b80631bd0d088255e"
}
},
"poly": 2,
"mirrorX": false,
"mirrorY": false,
"sptStyle": {},
"text": "A",
"bpv": {
"x": 121.24791666666667,
"y": 84.23020833333334,
"z": 1
}
},
"task_8": {
"id": "task_8",
"modelCode": "102011",
"modelType": "DDeiPolygon",
"cpv": {
"x": 135.53541666666666,
"y": 124.71145833333333,
"z": 1
},
"hpv": [
{
"x": 135.53541666666666,
"y": 124.71145833333333,
"z": 1
},
{
"x": 161.99375,
"y": 124.71145833333333,
"z": 1
}
],
"exPvs": {
"_b9bcf285ebba6247bf5593eaa3f1fdb7": {
"x": 135.53541666666666,
"y": 115.45104166666667,
"z": 1,
"rate": 0.5,
"sita": -90,
"index": 2,
"id": "_b9bcf285ebba6247bf5593eaa3f1fdb7"
}
},
"poly": 2,
"mirrorX": false,
"mirrorY": false,
"sptStyle": {},
"text": "B",
"border": {
"round": 5
},
"bpv": {
"x": 164.63958333333335,
"y": 143.23229166666667,
"z": 1
}
},
"line_10": {
"id": "line_10",
"modelCode": "100401",
"modelType": "DDeiLine",
"hpv": [
{
"x": 92.14375000000001,
"y": 74.96979166666667,
"z": 1
},
{
"x": 118.60208333333334,
"y": 74.96979166666667,
"z": 1
}
],
"pvs": [
{
"x": 92.14375000000001,
"y": 74.96979166666667,
"z": 1,
"isVector3": true
},
{
"x": 92.14375000000001,
"y": 95.21041666666667,
"z": 1
},
{
"x": 135.53541666666666,
"y": 95.21041666666667,
"z": 1
},
{
"x": 135.53541666666666,
"y": 115.45104166666667,
"z": 1,
"isVector3": true
}
],
"exPvs": {},
"mirrorX": false,
"mirrorY": false,
"sptStyle": {},
"type": 2,
"linkModels": {
"lsm_10": {
"type": 3,
"dmid": "lsm_10"
}
},
"freeze": 0
},
"lsm_10": {
"id": "lsm_10",
"modelCode": "100200",
"modelType": "DDeiPolygon",
"cpv": {
"x": 113.83958333333334,
"y": 95.21041666666667,
"z": 1
},
"hpv": [
{
"x": 113.83958333333334,
"y": 95.21041666666667,
"z": 1
},
{
"x": 140.29791666666665,
"y": 95.21041666666667,
"z": 1
}
],
"exPvs": {},
"poly": 2,
"mirrorX": false,
"mirrorY": false,
"sptStyle": {},
"borderType": 0,
"text": "连接",
"font": {
"size": 12
},
"bpv": {
"x": 135.00625,
"y": 101.82499999999999,
"z": 1
}
}
},
"midList": [
"task_6",
"task_8",
"line_10",
"lsm_10"
],
"modelType": "DDeiLayer",
"baseModelType": "DDeiLayer",
"index": 1,
"background": null,
"display": 1,
"lock": true,
"print": true,
"centerOpPoints": [],
"modelCode": "DDeiLayer",
"modelChanged": true,
"modelNumber": 4
}
],
"layerIndex": 0,
"idIdx": 20,
"modelType": "DDeiStage",
"ratio": 1,
"width": 2245.0393700787404,
"height": 1587.4015748031497,
"wpv": {
"x": -658.5196850393702,
"y": -488.20078740157487,
"z": 0
},
"links": [
{
"smid": "task_6",
"dmid": "line_10",
"smpath": "exPvs._84b25e15bf91626b80631bd0d088255e",
"dmpath": "startPoint"
},
{
"smid": "task_8",
"dmid": "line_10",
"smpath": "exPvs._b9bcf285ebba6247bf5593eaa3f1fdb7",
"dmpath": "endPoint"
}
],
"spv": {
"x": 561.2598425196851,
"y": 396.85039370078744,
"z": 1
},
"modelCode": "DDeiStage",
"unit": "mm"
},
"active": 1,
"modelType": "DDeiSheet",
"unicode": "741d8249192061ceb6228a5ba7df035f"
}
]
}
说明
第一级DDeiFile
属性名 | 说明 | 数据类型 | 默认值 | 备注 |
---|---|---|---|---|
id | id | string | 文件唯一标识 | |
unicode | 标识码 | string | 唯一标识 | |
name | 名称 | string | 文件名称 | |
path | 路径 | string | 文件路径 | |
desc | 说明 | string | 文件说明 | |
modelNumber | 模型数量 | number | 文件的所有页签的图形数量总和 | |
modelType | 模型类型 | string | DDeiFile | 文件的模型类别 |
state | 状态 | number | 文件状态 | |
publish | 发布状态 | number | 0未发布,1已发布 | |
lastUpdateTime | 最后更新时间 | number | 最后修改文件的时间 | |
extData | 扩展数据 | object | 用于存储一些业务相关的扩展数据 | |
ddeiVersion | DDei版本 | number | 当前文件保存时的DDei版本,用于兼容性检查 | |
currentSheetIndex | 当前页签下标 | number | 0 | 当前哪个页签处于激活状态 |
sheets | 页签 | object[] | 文件所包含的页签集合,至少包含1个页签,参考第二级DDeiSheet |
第二级DDeiSheet
属性名 | 说明 | 数据类型 | 默认值 | 备注 |
---|---|---|---|---|
unicode | 标识码 | string | 页签唯一标识 | |
name | 页签名称 | string | 页签的显示标题名称 | |
desc | 页签说明 | string | 页签的说明备注 | |
modelType | 模型类型 | string | DDeiSheet | 页签的模型类型 |
active | 激活状态 | number | 0 | 1激活/0未激活 |
stage | 舞台 | object | 页签的舞台,一个页签有且只有一个舞台,参考第三级DDeiStage |
第三级DDeiStage
属性名 | 说明 | 数据类型 | 默认值 | 备注 |
---|---|---|---|---|
id | 舞台ID | string | 舞台的唯一标识 | |
unicode | 唯一编号 | string | 系统生成 | 自动编码 |
modelCode | 模型类型 | string | DDeiStage | 舞台的模型类型 |
modelType | 模型类型 | string | DDeiStage | 舞台的模型类型 |
idIdx | 当前图形的ID种子 | number | ||
ratio | 缩放比率 | number | 1.0 | |
width | 画布宽度 | number | ||
height | 画布高度 | number | ||
wpv | 视窗开始点 | object | (0,0,0) | |
spv | 纸张标量开始点 | object | 中心 | |
mark | 水印 | object | 查看详情 | |
paper | 纸张 | object | 查看详情 | |
ruler | 标尺 | object | 查看详情 | |
grid | 网格线 | object | 查看详情 | |
unit | 单位 | string | px | px像素/cm厘米/mm毫米/inch英寸/m米,当前舞台用来表示大小和位置的单位 |
links | 链接集合 | object[] | 记录了舞台中所有连线和图形的链接信息,可以用此对象来判定两个图形的前后连接关系 | |
links[n].smid | 源对象ID | string | 一般为图形的ID | |
links[n].dmid | 目标对象ID | string | 一般为线的ID | |
links[n].smpath | 源对象属性路径 | string | 一般为线的端点之一 | |
links[n].dmpath | 目标对象属性路径 | string | 一般为图形的扩展端点 | |
layerIndex | 当前的图层下标 | number | -1 | |
layers | 图层集合 | object[] | 舞台的所有图层结合,参考第四级DDeiLayer |
第四级DDeiLayers
属性名 | 说明 | 数据类型 | 默认值 | 备注 |
---|---|---|---|---|
id | 图层ID | string | ||
unicode | 唯一编号 | string | 系统生成 | 自动编码 |
name | 名称 | string | 系统生成 | |
models | 控件集合 | object<string,object> | key为控件ID,value为控件对象,参考控件和容器 | |
midList | 控件ID集合 | string[] | 子控件id列表,带排序 | |
index | 下标 | number | 当前layer所在stage的下标 | |
display | 是否显示 | number | 1 | 0不显示/1显示 |
lock | 锁定 | boolean | false | |
打印 | boolean | true | ||
modelNumber | 模型总数量 | object | 0 | |
bg | 背景 | object | 查看详情 | |
modelType | 模型类型 | string | DDeiLayer |
控件和容器
到这一级就能够获取到具体控件的属性了,由于图形控件的属性支持自定义,因此只列举公共的属性。在这一层中有一种特殊情况,当出现组合控件或容器控件时,需要继续通过midList
和models
进行遍历。才能获取更深层次的控件。
属性名 | 说明 | 数据类型 | 默认值 | 备注 |
---|---|---|---|---|
id | 图形ID | string | 画布唯一 | |
unicode | 唯一编号 | string | 系统生成 | 自动编码 |
code | 编码 | string | ||
text | 文本 | string | ||
poly | 坐标策略 | number | 1 | 1直角坐标/2极坐标 |
rotate | 旋转量 | number | 1.0 | 只读 |
cpv | 中心点向量 | object | (0,0,0) | 中心点坐标 |
hpv | 平行拉伸向量 | objec[] | 用于计算旋转/拉伸量 | |
pvs | 点向量 | object[] | 构成图形的所有点 | |
essBounds | 实际大小 | object | 未经旋转、缩放的实际大小 | |
text | 文本 | string | 显示文本 | |
sptStyle | 特殊文本样式 | object[] | ||
zIndex | 图层层次 | number | 影响渲染顺序 | |
state | 背景 | DDeiEnumControlState | DEFAULT | |
stage | 所属舞台 | DDeiStage | ||
layer | 所属图层 | DDeiLayer | ||
pModel | 所属容器 | DDeiContainer | ||
modelCode | 模型的编码 | string | 区分modelType相同,但业务含义不同的模型 | |
modelType | 模型类型 | string | AbstractShape | |
border | 边框 | object | ||
border.type | 边框类型 | number | 0无/1实线 | |
border.color | 边框颜色 | string | ||
border.opacity | 透明度 | number | 0-1之间 | 1 |
border.width | 宽度 | number | >0 | 1 |
border.dash | 线段样式 | Array | >0 | |
border.roung | 圆角 | number | 0-10 | 0 |
fill | 填充 | object | ||
fill.type | 填充类型 | number | 0无/1纯色/2图片 | |
fill.color | 填充颜色 | string | ||
fill.image | 填充图片 | string | ||
fill.opacity | 透明度 | number | 0-1之间 | 1 |
font | 字体 | object | ||
font.family | 字体名称 | string | 系统默认 | |
font.color | 字体颜色 | string | black | |
font.size | 字体大小 | string | 14 | |
textStyle | 文本样式 | object | ||
textStyle.align | 横向对齐 | number | 1左/2中/3右 | 2 |
textStyle.valign | 纵向对齐 | number | 1上/2中/3下 | 2 |
textStyle.feed | 自动换行 | number | 1是/0否 | 1 |
textStyle.scale | 超范围策略 | number | 0隐藏/1省略/2缩小/3扩展 | 0 |
textStyle.lockWidth | 锁定宽度 | number | 0否/1是 | 0 |
textStyle.hollow | 镂空 | number | 0否/1是 | 0 |
textStyle.bold | 加粗 | number | 0否/1是 | 0 |
textStyle.italic | 斜体 | number | 0否/1是 | 0 |
textStyle.underline | 下划线 | number | 0否/1是 | 0 |
textStyle.deleteline | 删除线 | number | 0否/1是 | 0 |
textStyle.bgcolor | 文本背景 | string | ||
textStyle.hspace | 水平间距 | number | 0-10 | 0.5 |
textStyle.vspace | 垂直间距 | number | 0-10 | 0.5 |
mirrorX | 水平镜像 | boolean | false | |
mirrorY | 垂直镜像 | boolean | false |
技术支持
QQ:3697355039
微信公众号:ddei757