工作流文档管理插件
想必你遇到过下面的问题
……
使用 Works Outline 吧!
该插件以busniess work-flow的形式管理维护业务,将开发者按顺序定义的业务节点(symbol)串联起来
基础功能
- 文档访问
- 文档定位symbol
- 业务流定义
- 业务流显示
- 定位symbol
- symbol反定位
使用说明
请在你的工作目录(workspace)下定义
在 symbols.config.js 中
这个文件中配置一张symbols表,symbol
指的是 WorkSpace 中存在的变量/类/函数/类成员(私有\共有)等标识符
请暴露一个 symbolsMap
const symbols = [
];
const symbolsMap = new Map();
symbols.forEach(symbol => { symbolsMap.set(symbol.name, symbol); });
module.exports = symbolsMap;
数据结构为:
export interface ISymbol{
name: string, // 真实存在的 symbolName
tag: string, // 引用标签
bugAttention?: boolean, // 是否应该引起bug重视
documentUri?: string, // 超链接文档说明
}
- name 尽量唯一 如果是调用一些通用接口
- 如调用 Canvas.update 请写 Canvas.update
- 尽量配置关键节点使得业务流简洁,如忽略一些细节如判断有效条件的函数
在 maintain.config.js 中
请暴露一个变量 maintain_works
const maintain_works: IMaintainWork[];
module.exports = maintain_works;
数据结构为:
// 一个节点
export interface ISymbolData{
name: string // symbol 名称 ** 一定在 symbols.config.js 中能查找到**
linkedBussiness?: string // 指向其他业务(业务嵌套的情况)
flowComment?: boolean // 是否是评论节点
documentUri?: boolean // 是否存在超链接文档
children?: ISymbolData[] // 子节点
condition?: boolean // 条件执行 (目前这个只是有提示作用,意思是这个节点在业务流执行时满足一定的条件才执行)
}
// 一个业务流
export interface IMaintainWork {
name: string,
comment: string,
documentUri: string,
symbols: ISymbolData[],
}
example
symbols.config.js
const DOCUMENT_URL = {
snap_collision: 'http://google.com'
}
const symbols = [
{ name : '_calIsToggleOnTarget', tag: '计算是否切换ZPlane', },
{ name : 'getPositionByTouchSelection', tag: '获取上位位置', bugAttention: true },
{ name: '_updateZplaneVectorBySelections', tag: '更新投影Zplane', documentUri: DOCUMENT_URL.snap_collision },
{ name: 'ProxyRelationShip.update', tag: '更新关系信息', },
// ... 我只筛选了一些
]
const symbolsMap = new Map();
symbols.forEach(symbol => { symbolsMap.set(symbol.name, symbol); });
module.exports = symbolsMap;
maintain.config.js
// 需要复用的业务流模块
const WORKS_BLOCK = {
getCandiateCollisionModel: {
name: '_getCandiateCollisionModel',
children: [
{ name: 'getWallMixBVHTree', condition: true },
{ name: 'getContentGroupCloneObject', condition: true },
{ name: 'getSurfaceMixBVHTree', condition: true },
{ name: '_getContentMixBoundingBoxTree', condition: true },
{ name: 'getMoldingBVHTree', condition: true },
{ name: 'getSpeicalSnapTypeFromCategoryType', condition: true },
]
}
}
const maintain_works = [
{
name: '强吸附修正',
comment: '强吸附修正',
documentUri: '',
symbols: [
{ name : 'updatePositionWithCorrector', children: [
{ name: 'doCollidedAndWeakSnapCorrect', children: [
{ name: 'Collisioner.handleDragMove', children: [
WORKS_BLOCK.getCandiateCollisionModel,
{ name: 'getStrongSnapResult', children: [
{ name: 'getBuildingWallLineGeometry', children: [
{ name: 'getWallLinesListDataFromDIYWall', condition: true },
{ name: 'getWallLinesListData', condition: true },
{ name: 'getWallLineSnapGeometry' },
]},
{ name: 'doSnapToWallWithWallLineGeometry', condition: true },
]},
{ name: '如果存在强吸附结果更新:位置/角度/位移', flowComment: true },
{ name: '_updateColliderModel' , condition: true },
{ name: '裁剪空间检测/更新,候选人更新', flowComment: true, condition: true },
{ name: 'doMultiObbPathCascadeCorrect', condition: true },
{ name: '强吸附全部完成,更新结果[没有独立暴露结果]', flowComment: true },
]},
]},
]}
],
},
];
图例说明
可以点击节点(非备注节点)直接访问symbol
可切换显示模式 (tag模式更好理解)
可右键节点直接浏览器访问该节点的文档 (若存在 documentUri)
可在对应的节点访问它在业务流(Works-Outline)中的位置