X Tutup
Skip to content

Commit ea073d7

Browse files
lukeupJackLian
authored andcommitted
docs: 加入图编排扩展使用说明
1 parent addcdeb commit ea073d7

File tree

1 file changed

+155
-0
lines changed

1 file changed

+155
-0
lines changed
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
---
2+
title: 图编排扩展
3+
sidebar_position: 9
4+
---
5+
## 项目运行
6+
### 前置准备
7+
1. 参考 https://lowcode-engine.cn/site/docs/guide/quickStart/start
8+
2. 参考至Demo下载 https://lowcode-engine.cn/site/docs/guide/quickStart/start#%E4%B8%8B%E8%BD%BD-demo
9+
### 选择demo-graph-x6
10+
在根目录下执行:
11+
```bash
12+
cd demo-graph-x6
13+
```
14+
### 安装依赖
15+
在 lowcode-demo/demo-graph-x6目录下执行:
16+
```bash
17+
npm install
18+
```
19+
### 启动Demo
20+
在 lowcode-demo/demo-graph-x6 目录下执行:
21+
```bash
22+
npm run start
23+
```
24+
之后就可以通过 http://localhost:5556/ 来访问我们的 DEMO 了。
25+
26+
## 认识Demo
27+
这里的Demo即通过图编排引擎加入了几个简单的物料而来,已经是可以面向真是用户的产品界面。
28+
![image.png](https://img.alicdn.com/imgextra/i1/O1CN016TbCI31hM2sJy8qkR_!!6000000004262-2-tps-5120-2726.png)
29+
### 区域组成
30+
#### 顶部:操作区​
31+
- 右侧:保存到本地、重置页面、自定义按钮
32+
#### 顶部:工具区
33+
- 左侧:删除、撤销、重做、放大、缩小
34+
#### 左侧:面板与操作区​
35+
- 物料面板:可以查找节点,并在此拖动节点到编辑器画布中
36+
#### 中部:可视化页面编辑画布区域​
37+
- 点击节点/边在右侧面板中能够显示出对应组件的属性配置选项
38+
- 拖拽修改节点的排列顺序
39+
#### 右侧:组件级别配置​
40+
- 选中的组件:从页面开始一直到当前选中的节点/边位置,点击对应的名称可以切换到对应的节点上
41+
- 选中组件的配置:属性:节点的基础属性值设置
42+
43+
> 每个区域的组成都可以被替换和自定义来生成开发者需要的业务产品。
44+
45+
## 目录介绍
46+
![image.png](https://img.alicdn.com/imgextra/i3/O1CN01Luc8gr1tLq5QTbpb9_!!6000000005886-0-tps-832-1522.jpg)
47+
48+
- public:与其他demo保持一致,均是lowcode engine所必要依赖
49+
- src
50+
- plugins::自定义插件,完成了x6的切面回调处理功能
51+
- services:mock数据,真实场景中可能为异步获取数据
52+
53+
## 开发插件
54+
```typescript
55+
function pluginX6DesignerExtension(ctx: IPublicModelPluginContext) {
56+
return {
57+
init() {
58+
// 获取 x6 designer 内置插件的导出 api
59+
const x6Designer = ctx.plugins['plugin-x6-designer'] as IDesigner;
60+
61+
x6Designer.onNodeRender((model, node) => {
62+
// @ts-ignore
63+
// 自定义 node 渲染逻辑
64+
const { name, title } = model.propsData;
65+
node.attr('text/textWrap/text', title || name);
66+
});
67+
68+
x6Designer.onEdgeRender((model, edge) => {
69+
// @ts-ignore
70+
const { source, target, sourcePortId, targetPortId } = model.propsData;
71+
console.log(sourcePortId, targetPortId);
72+
requestAnimationFrame(() => {
73+
edge.setSource({ cell: source, port: sourcePortId });
74+
edge.setTarget({ cell: target, port: targetPortId });
75+
});
76+
77+
// https://x6.antv.vision/zh/docs/tutorial/intermediate/edge-labels x6 标签模块
78+
// appendLabel 会触发 onEdgeLabelRender
79+
edge.appendLabel({
80+
markup: Markup.getForeignObjectMarkup(),
81+
attrs: {
82+
fo: {
83+
width: 120,
84+
height: 30,
85+
x: -60,
86+
y: -15,
87+
},
88+
},
89+
});
90+
});
91+
92+
x6Designer.onEdgeLabelRender((args) => {
93+
const { selectors } = args
94+
const content = selectors.foContent as HTMLDivElement
95+
if (content) {
96+
ReactDOM.render(<div>自定义 react 标签</div>, content)
97+
}
98+
})
99+
}
100+
}
101+
}
102+
103+
pluginX6DesignerExtension.pluginName = 'plugin-x6-designer-extension';
104+
105+
export default pluginX6DesignerExtension;
106+
```
107+
x6Designer为图实例暴露出来的一些接口,可基于此进行一些图的必要插件的封装,整个插件的封装完全follow低代码引擎的插件,详情可参考 https://lowcode-engine.cn/site/docs/guide/expand/editor/pluginWidget
108+
109+
## 开发物料
110+
```bash
111+
npm init @alilc/element your-material-demo
112+
```
113+
![image.png](https://img.alicdn.com/imgextra/i3/O1CN01DCCqO82ADuhS8ztCt_!!6000000008170-2-tps-546-208.png)
114+
115+
仓库初始化完成
116+
![image.png](https://img.alicdn.com/imgextra/i2/O1CN01qK2rUe1JNpdqbdhoW_!!6000000001017-0-tps-5120-2830.jpg)
117+
118+
接下来即可编写物料内容了
119+
图物料与低代码的dom场景存在画布的差异,因此暂不支持物料单独调试,须通过项目demo进行物料调试
120+
121+
### 资产描述
122+
```bash
123+
npm run lowcode:build
124+
```
125+
如果物料是个React组件,则在执行上述命令时会自动生成对应的meta.ts,<b>但图物料很多时候并非一个React组件,因此须手动生产meta.ts</b>
126+
127+
可参考: https://github.com/alibaba/lowcode-materials/blob/main/packages/graph-x6-materials/lowcode/send-email/meta.ts
128+
同时会自动生成物料描述文件
129+
130+
### 物料调试
131+
#### 物料侧
132+
物料想要支持被项目动态inject调试,须在build.lowcode.js中加入
133+
```javascript
134+
[
135+
'@alilc/build-plugin-alt',
136+
{
137+
type: 'component',
138+
inject: true,
139+
library
140+
},
141+
]
142+
```
143+
![image.png](https://img.alicdn.com/imgextra/i4/O1CN01HyXfL12992sDkOmOg_!!6000000008024-0-tps-5120-2824.jpg)
144+
145+
本地启动
146+
```bash
147+
npm run lowcode:dev
148+
```
149+
#### 项目侧
150+
通过@alilc/lce-graph-core加载物料的天然支持了debug,因此无须特殊处理。
151+
若项目中自行加载,则参考 https://lowcode-engine.cn/site/docs/guide/expand/editor/cli
152+
项目访问地址后拼接query "?debug"即可进入物料调试
153+
![image.png](https://img.alicdn.com/imgextra/i2/O1CN01ke58hT1aRoYJzkutk_!!6000000003327-2-tps-5120-2790.png)
154+
155+

0 commit comments

Comments
 (0)
X Tutup