index.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import End from './end'
  2. import Start from './start'
  3. import Task from './task'
  4. import summary from './summary'
  5. import Transition from './transition'
  6. import { logicFlowJsonToSubmit,resDataToLogicFlow } from './tool'
  7. /**
  8. * snakerflow组件注册
  9. */
  10. class SnakerFlowElement {
  11. static pluginName = 'snakerFlowElement';
  12. constructor (data:any) {
  13. data.lf.register(End)
  14. data.lf.register(Start)
  15. data.lf.register(Task)
  16. data.lf.register(summary)
  17. data.lf.register(Transition)
  18. }
  19. }
  20. /**
  21. * snakerflow给你LogicFlow数据转换器
  22. */
  23. class SnakerFlowAdapter {
  24. static pluginName = 'snakerFlowAdapter';
  25. constructor ({ lf } : { lf: any }) {
  26. lf.adapterIn = (userData: any) => {
  27. if (typeof userData.externalData === 'string') {//格式转换
  28. userData = resDataToLogicFlow(userData)
  29. }
  30. userData = userData.json ? userData.json : userData;
  31. // 将流程扩展属性绑定给lf图模型对象
  32. lf.graphModel.name = userData.name
  33. lf.graphModel.code = userData.code
  34. lf.graphModel.moduleName = userData.moduleName
  35. lf.graphModel.moduleCode = userData.moduleCode
  36. lf.graphModel.id = userData.id
  37. return userData
  38. }
  39. lf.adapterOut = (logicFlowData: any) => {
  40. const graphData = {
  41. name: lf.graphModel.name,
  42. code: lf.graphModel.code,
  43. moduleName: lf.graphModel.moduleName,
  44. moduleCode: lf.graphModel.moduleCode,
  45. id: lf.graphModel.id,
  46. ...logicFlowData
  47. }
  48. Object.keys(graphData).forEach((key: string) => {
  49. // 删除undefined的值
  50. if (graphData[key] === undefined) {
  51. delete graphData[key]
  52. }
  53. })
  54. const submitData:any = logicFlowJsonToSubmit(graphData);
  55. return {
  56. json: graphData,
  57. submitData:{
  58. ...submitData,
  59. externalData:JSON.stringify(graphData)
  60. }
  61. }
  62. }
  63. }
  64. }
  65. export {
  66. SnakerFlowElement,
  67. SnakerFlowAdapter
  68. }