@ibiz-template/runtime 0.7.41-alpha.125 → 0.7.41-alpha.126

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/dist/index.esm.js +39796 -39493
  2. package/dist/index.system.min.js +1 -1
  3. package/out/controller/control/app-menu/app-menu.controller.js +1 -1
  4. package/out/controller/control/toolbar/toolbar.controller.js +1 -1
  5. package/out/controller/control/tree/tree.service.d.ts.map +1 -1
  6. package/out/controller/control/tree/tree.service.js +1 -1
  7. package/out/controller/utils/view-msg/view-msg-controller.d.ts.map +1 -1
  8. package/out/controller/utils/view-msg/view-msg-controller.js +1 -1
  9. package/out/de-logic/de-logic-context.d.ts +4 -13
  10. package/out/de-logic/de-logic-context.d.ts.map +1 -1
  11. package/out/de-logic/de-logic-context.js +2 -3
  12. package/out/de-logic/de-logic-link/de-logic-link-cond/de-logic-link-cond.d.ts +15 -5
  13. package/out/de-logic/de-logic-link/de-logic-link-cond/de-logic-link-cond.d.ts.map +1 -1
  14. package/out/de-logic/de-logic-link/de-logic-link-cond/de-logic-link-cond.js +3 -4
  15. package/out/de-logic/de-logic-link/de-logic-link-group-cond/de-logic-link-group-cond.d.ts +2 -1
  16. package/out/de-logic/de-logic-link/de-logic-link-group-cond/de-logic-link-group-cond.d.ts.map +1 -1
  17. package/out/de-logic/de-logic-link/de-logic-link-single-cond/de-logic-link-single-cond.d.ts +2 -1
  18. package/out/de-logic/de-logic-link/de-logic-link-single-cond/de-logic-link-single-cond.d.ts.map +1 -1
  19. package/out/de-logic/de-logic-link/de-logic-link.d.ts +6 -7
  20. package/out/de-logic/de-logic-link/de-logic-link.d.ts.map +1 -1
  21. package/out/de-logic/de-logic-link/de-logic-link.js +3 -4
  22. package/out/de-logic/de-logic-node/de-logic-node.d.ts +2 -1
  23. package/out/de-logic/de-logic-node/de-logic-node.d.ts.map +1 -1
  24. package/out/de-logic/de-logic-node/index.d.ts +1 -0
  25. package/out/de-logic/de-logic-node/index.d.ts.map +1 -1
  26. package/out/de-logic/de-logic-node/index.js +1 -0
  27. package/out/de-logic/de-logic.d.ts +31 -37
  28. package/out/de-logic/de-logic.d.ts.map +1 -1
  29. package/out/de-logic/de-logic.js +49 -98
  30. package/out/de-logic/index.d.ts +31 -40
  31. package/out/de-logic/index.d.ts.map +1 -1
  32. package/out/de-logic/index.js +57 -76
  33. package/out/de-logic/provider.d.ts +6 -0
  34. package/out/de-logic/provider.d.ts.map +1 -0
  35. package/out/de-logic/provider.js +25 -0
  36. package/out/install.d.ts.map +1 -1
  37. package/out/install.js +6 -0
  38. package/out/interface/api/common/i-api-de-logic-params.d.ts +9 -0
  39. package/out/interface/api/common/i-api-de-logic-params.d.ts.map +1 -0
  40. package/out/interface/api/common/i-api-logic-context.d.ts +83 -0
  41. package/out/interface/api/common/i-api-logic-context.d.ts.map +1 -0
  42. package/out/interface/api/common/i-api-logic-context.js +1 -0
  43. package/out/interface/api/common/i-api-logic-params.d.ts +27 -0
  44. package/out/interface/api/common/i-api-logic-params.d.ts.map +1 -0
  45. package/out/interface/api/common/i-api-logic-params.js +1 -0
  46. package/out/interface/api/common/i-api-ui-logic-params.d.ts +3 -21
  47. package/out/interface/api/common/i-api-ui-logic-params.d.ts.map +1 -1
  48. package/out/interface/api/common/index.d.ts +2 -0
  49. package/out/interface/api/common/index.d.ts.map +1 -1
  50. package/out/interface/api/controller/control/form-detail/i-api-form-detail.controller.d.ts +1 -1
  51. package/out/interface/common/i-logic-context/i-logic-context.d.ts +27 -0
  52. package/out/interface/common/i-logic-context/i-logic-context.d.ts.map +1 -0
  53. package/out/interface/common/i-logic-context/i-logic-context.js +1 -0
  54. package/out/interface/common/i-logic-link-cond/i-logic-link-cond.d.ts +18 -0
  55. package/out/interface/common/i-logic-link-cond/i-logic-link-cond.d.ts.map +1 -0
  56. package/out/interface/common/i-logic-link-cond/i-logic-link-cond.js +1 -0
  57. package/out/interface/common/index.d.ts +2 -1
  58. package/out/interface/common/index.d.ts.map +1 -1
  59. package/out/interface/de-logic/i-de-logic-context.d.ts +10 -0
  60. package/out/interface/de-logic/i-de-logic-context.d.ts.map +1 -0
  61. package/out/interface/de-logic/i-de-logic-context.js +1 -0
  62. package/out/interface/de-logic/i-de-logic-link-cond.d.ts +33 -0
  63. package/out/interface/de-logic/i-de-logic-link-cond.d.ts.map +1 -0
  64. package/out/interface/de-logic/i-de-logic-link-cond.js +1 -0
  65. package/out/interface/de-logic/i-de-logic-link.d.ts +43 -0
  66. package/out/interface/de-logic/i-de-logic-link.d.ts.map +1 -0
  67. package/out/interface/de-logic/i-de-logic-link.js +1 -0
  68. package/out/interface/de-logic/i-de-logic-node.d.ts +10 -0
  69. package/out/interface/de-logic/i-de-logic-node.d.ts.map +1 -0
  70. package/out/interface/de-logic/i-de-logic-node.js +1 -0
  71. package/out/interface/de-logic/i-de-logic-params.d.ts +10 -0
  72. package/out/interface/de-logic/i-de-logic-params.d.ts.map +1 -0
  73. package/out/interface/de-logic/i-de-logic-params.js +1 -0
  74. package/out/interface/de-logic/i-de-logic.d.ts +23 -0
  75. package/out/interface/de-logic/i-de-logic.d.ts.map +1 -0
  76. package/out/interface/de-logic/i-de-logic.js +1 -0
  77. package/out/interface/de-logic/index.d.ts +7 -0
  78. package/out/interface/de-logic/index.d.ts.map +1 -0
  79. package/out/interface/de-logic/index.js +1 -0
  80. package/out/interface/index.d.ts +1 -0
  81. package/out/interface/index.d.ts.map +1 -1
  82. package/out/interface/index.js +1 -0
  83. package/out/interface/provider/i-de-logic-node.provider.d.ts +29 -0
  84. package/out/interface/provider/i-de-logic-node.provider.d.ts.map +1 -0
  85. package/out/interface/provider/i-de-logic-node.provider.js +1 -0
  86. package/out/interface/provider/i-de-logic.provider.d.ts +22 -0
  87. package/out/interface/provider/i-de-logic.provider.d.ts.map +1 -0
  88. package/out/interface/provider/i-de-logic.provider.js +1 -0
  89. package/out/interface/provider/i-ui-action.provider.d.ts +2 -1
  90. package/out/interface/provider/i-ui-action.provider.d.ts.map +1 -1
  91. package/out/interface/provider/i-ui-logic-node.provider.d.ts +20 -14
  92. package/out/interface/provider/i-ui-logic-node.provider.d.ts.map +1 -1
  93. package/out/interface/provider/i-ui-logic.provider.d.ts +22 -0
  94. package/out/interface/provider/i-ui-logic.provider.d.ts.map +1 -0
  95. package/out/interface/provider/i-ui-logic.provider.js +1 -0
  96. package/out/interface/provider/index.d.ts +3 -0
  97. package/out/interface/provider/index.d.ts.map +1 -1
  98. package/out/interface/register/i-register-params.d.ts +17 -7
  99. package/out/interface/register/i-register-params.d.ts.map +1 -1
  100. package/out/interface/ui-logic/i-ui-logic-context.d.ts +8 -83
  101. package/out/interface/ui-logic/i-ui-logic-context.d.ts.map +1 -1
  102. package/out/interface/ui-logic/i-ui-logic-link-cond.d.ts +33 -0
  103. package/out/interface/ui-logic/i-ui-logic-link-cond.d.ts.map +1 -0
  104. package/out/interface/ui-logic/i-ui-logic-link-cond.js +1 -0
  105. package/out/interface/ui-logic/i-ui-logic-link.d.ts +43 -0
  106. package/out/interface/ui-logic/i-ui-logic-link.d.ts.map +1 -0
  107. package/out/interface/ui-logic/i-ui-logic-link.js +1 -0
  108. package/out/interface/ui-logic/i-ui-logic-node.d.ts +10 -0
  109. package/out/interface/ui-logic/i-ui-logic-node.d.ts.map +1 -0
  110. package/out/interface/ui-logic/i-ui-logic-node.js +1 -0
  111. package/out/interface/{common/i-ui-logic-params → ui-logic}/i-ui-logic-params.d.ts +3 -5
  112. package/out/interface/ui-logic/i-ui-logic-params.d.ts.map +1 -0
  113. package/out/interface/ui-logic/i-ui-logic-params.js +1 -0
  114. package/out/interface/ui-logic/i-ui-logic.d.ts +23 -0
  115. package/out/interface/ui-logic/i-ui-logic.d.ts.map +1 -0
  116. package/out/interface/ui-logic/i-ui-logic.js +1 -0
  117. package/out/interface/ui-logic/index.d.ts +5 -0
  118. package/out/interface/ui-logic/index.d.ts.map +1 -1
  119. package/out/locale/en/index.d.ts +10 -0
  120. package/out/locale/en/index.d.ts.map +1 -1
  121. package/out/locale/en/index.js +10 -0
  122. package/out/locale/zh-CN/index.d.ts +10 -0
  123. package/out/locale/zh-CN/index.d.ts.map +1 -1
  124. package/out/locale/zh-CN/index.js +10 -0
  125. package/out/register/custom-register.d.ts +19 -3
  126. package/out/register/custom-register.d.ts.map +1 -1
  127. package/out/register/custom-register.js +55 -6
  128. package/out/register/helper/app-menu-item-register.d.ts +2 -2
  129. package/out/register/helper/app-menu-item-register.d.ts.map +1 -1
  130. package/out/register/helper/app-menu-item-register.js +18 -10
  131. package/out/register/helper/de-logic-node-register.d.ts +24 -0
  132. package/out/register/helper/de-logic-node-register.d.ts.map +1 -0
  133. package/out/register/helper/de-logic-node-register.js +50 -0
  134. package/out/register/helper/de-logic-register.d.ts +20 -0
  135. package/out/register/helper/de-logic-register.d.ts.map +1 -0
  136. package/out/register/helper/de-logic-register.js +41 -0
  137. package/out/register/helper/index.d.ts +3 -0
  138. package/out/register/helper/index.d.ts.map +1 -1
  139. package/out/register/helper/index.js +3 -0
  140. package/out/register/helper/portlet-register.d.ts +3 -5
  141. package/out/register/helper/portlet-register.d.ts.map +1 -1
  142. package/out/register/helper/portlet-register.js +20 -19
  143. package/out/register/helper/toolbar-item-register.d.ts +5 -7
  144. package/out/register/helper/toolbar-item-register.d.ts.map +1 -1
  145. package/out/register/helper/toolbar-item-register.js +24 -16
  146. package/out/register/helper/ui-logic-node-register.d.ts +13 -9
  147. package/out/register/helper/ui-logic-node-register.d.ts.map +1 -1
  148. package/out/register/helper/ui-logic-node-register.js +51 -17
  149. package/out/register/helper/ui-logic-register.d.ts +20 -0
  150. package/out/register/helper/ui-logic-register.d.ts.map +1 -0
  151. package/out/register/helper/ui-logic-register.js +41 -0
  152. package/out/service/service/entity/method/de-action.d.ts.map +1 -1
  153. package/out/service/service/entity/method/de-action.js +1 -1
  154. package/out/ui-logic/index.d.ts +5 -10
  155. package/out/ui-logic/index.d.ts.map +1 -1
  156. package/out/ui-logic/index.js +12 -14
  157. package/out/ui-logic/provider.d.ts +6 -0
  158. package/out/ui-logic/provider.d.ts.map +1 -0
  159. package/out/ui-logic/provider.js +32 -0
  160. package/out/ui-logic/ui-logic-context.d.ts +1 -1
  161. package/out/ui-logic/ui-logic-context.d.ts.map +1 -1
  162. package/out/ui-logic/ui-logic-link/ui-logic-link-cond/ui-logic-link-cond.d.ts +16 -5
  163. package/out/ui-logic/ui-logic-link/ui-logic-link-cond/ui-logic-link-cond.d.ts.map +1 -1
  164. package/out/ui-logic/ui-logic-link/ui-logic-link-cond/ui-logic-link-cond.js +3 -4
  165. package/out/ui-logic/ui-logic-link/ui-logic-link-group-cond/ui-logic-link-group-cond.d.ts +2 -1
  166. package/out/ui-logic/ui-logic-link/ui-logic-link-group-cond/ui-logic-link-group-cond.d.ts.map +1 -1
  167. package/out/ui-logic/ui-logic-link/ui-logic-link-single-cond/ui-logic-link-single-cond.d.ts +2 -1
  168. package/out/ui-logic/ui-logic-link/ui-logic-link-single-cond/ui-logic-link-single-cond.d.ts.map +1 -1
  169. package/out/ui-logic/ui-logic-link/ui-logic-link.d.ts +6 -8
  170. package/out/ui-logic/ui-logic-link/ui-logic-link.d.ts.map +1 -1
  171. package/out/ui-logic/ui-logic-link/ui-logic-link.js +3 -5
  172. package/out/ui-logic/ui-logic-node/pf-plugin-node/pf-plugin-node.js +3 -3
  173. package/out/ui-logic/ui-logic-node/ui-logic-node.d.ts +9 -14
  174. package/out/ui-logic/ui-logic-node/ui-logic-node.d.ts.map +1 -1
  175. package/out/ui-logic/ui-logic-node/ui-logic-node.js +2 -4
  176. package/out/ui-logic/ui-logic.d.ts +27 -36
  177. package/out/ui-logic/ui-logic.d.ts.map +1 -1
  178. package/out/ui-logic/ui-logic.js +35 -108
  179. package/out/utils/dr-ctrl-util/index.d.ts.map +1 -1
  180. package/out/utils/dr-ctrl-util/index.js +1 -1
  181. package/package.json +2 -2
  182. package/src/controller/control/app-menu/app-menu.controller.ts +1 -1
  183. package/src/controller/control/toolbar/toolbar.controller.ts +1 -1
  184. package/src/controller/control/tree/tree.service.ts +1 -0
  185. package/src/controller/utils/view-msg/view-msg-controller.ts +7 -1
  186. package/src/de-logic/de-logic-context.ts +4 -16
  187. package/src/de-logic/de-logic-link/de-logic-link-cond/de-logic-link-cond.ts +17 -5
  188. package/src/de-logic/de-logic-link/de-logic-link-group-cond/de-logic-link-group-cond.ts +5 -1
  189. package/src/de-logic/de-logic-link/de-logic-link-single-cond/de-logic-link-single-cond.ts +5 -1
  190. package/src/de-logic/de-logic-link/de-logic-link.ts +6 -6
  191. package/src/de-logic/de-logic-node/de-logic-node.ts +2 -1
  192. package/src/de-logic/de-logic-node/index.ts +1 -0
  193. package/src/de-logic/de-logic.ts +60 -123
  194. package/src/de-logic/index.ts +66 -85
  195. package/src/de-logic/provider.ts +83 -0
  196. package/src/install.ts +6 -0
  197. package/src/interface/api/common/i-api-de-logic-params.ts +8 -0
  198. package/src/interface/api/common/i-api-logic-context.ts +83 -0
  199. package/src/interface/api/common/i-api-logic-params.ts +29 -0
  200. package/src/interface/api/common/i-api-ui-logic-params.ts +3 -24
  201. package/src/interface/api/common/index.ts +2 -0
  202. package/src/interface/api/controller/control/form-detail/i-api-form-detail.controller.ts +1 -1
  203. package/src/interface/common/i-logic-context/i-logic-context.ts +27 -0
  204. package/src/interface/common/i-logic-link-cond/i-logic-link-cond.ts +18 -0
  205. package/src/interface/common/index.ts +2 -1
  206. package/src/interface/de-logic/i-de-logic-context.ts +9 -0
  207. package/src/interface/de-logic/i-de-logic-link-cond.ts +33 -0
  208. package/src/interface/de-logic/i-de-logic-link.ts +47 -0
  209. package/src/interface/de-logic/i-de-logic-node.ts +9 -0
  210. package/src/interface/de-logic/i-de-logic-params.ts +9 -0
  211. package/src/interface/de-logic/i-de-logic.ts +23 -0
  212. package/src/interface/de-logic/index.ts +10 -0
  213. package/src/interface/index.ts +1 -0
  214. package/src/interface/provider/i-de-logic-node.provider.ts +29 -0
  215. package/src/interface/provider/i-de-logic.provider.ts +22 -0
  216. package/src/interface/provider/i-ui-action.provider.ts +2 -1
  217. package/src/interface/provider/i-ui-logic-node.provider.ts +20 -14
  218. package/src/interface/provider/i-ui-logic.provider.ts +22 -0
  219. package/src/interface/provider/index.ts +3 -0
  220. package/src/interface/register/i-register-params.ts +31 -7
  221. package/src/interface/ui-logic/i-ui-logic-context.ts +9 -95
  222. package/src/interface/ui-logic/i-ui-logic-link-cond.ts +33 -0
  223. package/src/interface/ui-logic/i-ui-logic-link.ts +47 -0
  224. package/src/interface/ui-logic/i-ui-logic-node.ts +9 -0
  225. package/src/interface/{common/i-ui-logic-params → ui-logic}/i-ui-logic-params.ts +3 -5
  226. package/src/interface/ui-logic/i-ui-logic.ts +23 -0
  227. package/src/interface/ui-logic/index.ts +9 -0
  228. package/src/locale/en/index.ts +18 -0
  229. package/src/locale/zh-CN/index.ts +17 -0
  230. package/src/register/custom-register.ts +69 -12
  231. package/src/register/helper/app-menu-item-register.ts +26 -13
  232. package/src/register/helper/de-logic-node-register.ts +76 -0
  233. package/src/register/helper/de-logic-register.ts +63 -0
  234. package/src/register/helper/index.ts +3 -0
  235. package/src/register/helper/portlet-register.ts +23 -22
  236. package/src/register/helper/toolbar-item-register.ts +32 -19
  237. package/src/register/helper/ui-logic-node-register.ts +79 -25
  238. package/src/register/helper/ui-logic-register.ts +63 -0
  239. package/src/service/service/entity/method/de-action.ts +7 -1
  240. package/src/ui-logic/index.ts +17 -16
  241. package/src/ui-logic/provider.ts +122 -0
  242. package/src/ui-logic/ui-logic-context.ts +1 -1
  243. package/src/ui-logic/ui-logic-link/ui-logic-link-cond/ui-logic-link-cond.ts +18 -5
  244. package/src/ui-logic/ui-logic-link/ui-logic-link-group-cond/ui-logic-link-group-cond.ts +5 -1
  245. package/src/ui-logic/ui-logic-link/ui-logic-link-single-cond/ui-logic-link-single-cond.ts +5 -1
  246. package/src/ui-logic/ui-logic-link/ui-logic-link.ts +6 -7
  247. package/src/ui-logic/ui-logic-node/pf-plugin-node/pf-plugin-node.ts +3 -3
  248. package/src/ui-logic/ui-logic-node/ui-logic-node.ts +9 -14
  249. package/src/ui-logic/ui-logic.ts +46 -141
  250. package/src/utils/dr-ctrl-util/index.ts +7 -1
  251. package/out/interface/common/i-ui-logic-params/i-ui-logic-params.d.ts.map +0 -1
  252. /package/out/interface/{common/i-ui-logic-params/i-ui-logic-params.js → api/common/i-api-de-logic-params.js} +0 -0
@@ -1,44 +1,29 @@
1
1
  /* eslint-disable no-await-in-loop */
2
- import { ModelError, RuntimeModelError } from '@ibiz-template/core';
3
- import { IAppDELogic } from '@ibiz/model-core';
2
+ import { IBizContext, RuntimeModelError } from '@ibiz-template/core';
3
+ import { clone } from 'ramda';
4
+ import { IAppDELogic, IAppDataEntity } from '@ibiz/model-core';
4
5
  import { ScriptFactory, ScriptFunction } from '../utils';
5
6
  import { DELogicContext } from './de-logic-context';
6
- import {
7
- AppendParamNode,
8
- BindParamNode,
9
- CopyParamNode,
10
- DataSetNode,
11
- DEActionNode,
12
- DebugParamNode,
13
- DELogicNode,
14
- EndNode,
15
- PrepareParamNode,
16
- RenewParamNode,
17
- ResetParamNode,
18
- SortParamNode,
19
- StartNode,
20
- } from './de-logic-node';
21
- import { ThrowExceptionNode } from './de-logic-node/throw-exception-node/throw-exception-node';
22
7
  import { DELogicParam } from './de-logic-param/de-logic-param';
8
+ import { IDeLogic, IDeLogicNode, IDeLogicParams } from '../interface';
9
+ import { getDELogicNodeProvider } from '../register';
23
10
 
24
11
  /**
25
- * 界面逻辑
26
- *
27
- * @author lxm
28
- * @date 2023-02-07 16:02:48
12
+ * @description 实体逻辑
29
13
  * @export
30
14
  * @class DELogic
15
+ * @implements {IDELogic}
31
16
  */
32
- export class DELogic {
17
+ export class DELogic implements IDeLogic {
33
18
  /**
34
19
  * 所有节点实例
35
20
  *
36
21
  * @author lxm
37
22
  * @date 2023-02-08 21:02:38
38
23
  * @protected
39
- * @type {Map<string, DELogicNode>}
24
+ * @type {Map<string, IDeLogicNode>}
40
25
  */
41
- protected nodes: Map<string, DELogicNode> = new Map();
26
+ protected nodes: Map<string, IDeLogicNode> = new Map();
42
27
 
43
28
  /**
44
29
  * 所有参数实例
@@ -61,87 +46,48 @@ export class DELogic {
61
46
 
62
47
  /**
63
48
  * Creates an instance of DELogic.
64
- * @author lxm
65
- * @date 2023-02-08 17:02:26
66
49
  * @param {IAppDELogic} model
50
+ * @param {IAppDataEntity} entity
51
+ * @memberof DELogic
67
52
  */
68
- constructor(protected model: IAppDELogic) {
69
- // 脚本代码模式
70
- if (model.customCode) {
71
- if (!model.scriptCode) {
53
+ constructor(
54
+ public model: IAppDELogic,
55
+ public entity: IAppDataEntity,
56
+ ) {}
57
+
58
+ /**
59
+ * @description 初始化
60
+ * @returns {*} {Promise<void>}
61
+ * @memberof DELogic
62
+ */
63
+ async init(): Promise<void> {
64
+ if (this.model.customCode) {
65
+ if (!this.model.scriptCode)
72
66
  throw new RuntimeModelError(
73
- model,
67
+ this.model,
74
68
  ibiz.i18n.t('runtime.deLogic.deLogicNode.noScriptCode'),
75
69
  );
76
- }
77
- this.scriptFn = ScriptFactory.createScriptFn([], model.scriptCode, {
70
+ this.scriptFn = ScriptFactory.createScriptFn([], this.model.scriptCode, {
78
71
  isAsync: true,
79
72
  });
80
73
  return;
81
74
  }
82
-
83
- if (!model.delogicNodes?.length) {
75
+ if (!this.model.delogicNodes?.length) {
84
76
  throw new RuntimeModelError(
85
- model,
77
+ this.model,
86
78
  ibiz.i18n.t('runtime.deLogic.deLogicNode.noConfigurationLogicNode'),
87
79
  );
88
80
  }
89
- model.delogicNodes.forEach(node => {
90
- const { logicNodeType } = node;
91
- let logicNode;
92
- switch (logicNodeType) {
93
- case 'BEGIN': // 开始
94
- logicNode = new StartNode(node);
95
- break;
96
- case 'END': // 结束
97
- logicNode = new EndNode(node);
98
- break;
99
- case 'DEACTION': // 实体行为
100
- logicNode = new DEActionNode(node);
101
- break;
102
- case 'PREPAREPARAM': // 准备参数
103
- logicNode = new PrepareParamNode(node);
104
- break;
105
- case 'DEDATASET': // 实体数据集
106
- logicNode = new DataSetNode(node);
107
- break;
108
- case 'THROWEXCEPTION': // 抛出异常
109
- logicNode = new ThrowExceptionNode(node);
110
- break;
111
- case 'BINDPARAM': // 绑定参数
112
- logicNode = new BindParamNode(node);
113
- break;
114
- case 'RESETPARAM': // 重置参数
115
- logicNode = new ResetParamNode(node);
116
- break;
117
- case 'COPYPARAM': // 拷贝参数
118
- logicNode = new CopyParamNode(node);
119
- break;
120
- case 'RENEWPARAM': // 重新建立参数
121
- logicNode = new RenewParamNode(node);
122
- break;
123
- case 'APPENDPARAM': // 附加到数组参数
124
- logicNode = new AppendParamNode(node);
125
- break;
126
- case 'SORTPARAM': // 排序数组参数
127
- logicNode = new SortParamNode(node);
128
- break;
129
- case 'DEBUGPARAM': // 调试逻辑参数
130
- logicNode = new DebugParamNode(node);
131
- break;
132
- default:
133
- throw new ModelError(
134
- node,
135
- ibiz.i18n.t('runtime.deLogic.deLogicNode.unsupportedLogical', {
136
- logicNodeType,
137
- }),
138
- );
139
- }
140
- this.nodes.set(node.id!, logicNode);
141
- });
142
- model.delogicParams?.forEach(param => {
143
- this.params.set(param.id!, new DELogicParam(param));
144
- });
81
+ await Promise.all(
82
+ this.model.delogicNodes.map(async node => {
83
+ const provider = await getDELogicNodeProvider(
84
+ node,
85
+ this.model,
86
+ this.entity,
87
+ );
88
+ if (provider) this.nodes.set(node.id!, provider);
89
+ }),
90
+ );
145
91
  // 将已经实例化的逻辑节点挂载到逻辑连接上
146
92
  this.nodes.forEach(node => {
147
93
  node.links.forEach(link => {
@@ -151,18 +97,16 @@ export class DELogic {
151
97
  }
152
98
  });
153
99
  });
100
+ this.model.delogicParams?.forEach(param => {
101
+ this.params.set(param.id!, new DELogicParam(param));
102
+ });
154
103
  }
155
104
 
156
105
  /**
157
- * 初始化当前环境的逻辑参数的实例
158
- *
159
- * @author lxm
160
- * @date 2023-02-08 21:02:58
106
+ * @description 初始化当前环境的逻辑参数的实例
161
107
  * @protected
162
108
  * @param {DELogicContext} ctx
163
- * @param {IContext} context
164
- * @param {IData} data
165
- * @param {IParams} [opt]
109
+ * @memberof DELogic
166
110
  */
167
111
  protected initLogicParams(ctx: DELogicContext): void {
168
112
  this.params.forEach(param => {
@@ -174,24 +118,19 @@ export class DELogic {
174
118
  }
175
119
 
176
120
  /**
177
- * 执行逻辑
178
- *
179
- * @author lxm
180
- * @date 2023-02-08 21:02:09
181
- * @param {IContext} context
182
- * @param {IData} data
183
- * @param {IParams} [opt]
184
- * @return {*} {Promise<IData>}
121
+ * @description 执行逻辑
122
+ * @param {IDeLogicParams} parameters 逻辑参数
123
+ * @returns {*} {Promise<unknown>}
124
+ * @memberof DELogic
185
125
  */
186
- async exec(
187
- context: IContext,
188
- data: IData | IData[],
189
- params: IParams,
190
- ): Promise<unknown> {
126
+ async exec(parameters: IDeLogicParams): Promise<unknown> {
127
+ // 克隆传入应用上下文参数和视图参数
128
+ parameters.context = IBizContext.create(parameters.context);
129
+ parameters.params = clone(parameters.params || {});
191
130
  if (this.scriptFn) {
192
- return this.scriptFn.exec({ context, data, params });
131
+ return this.scriptFn.exec({ ...parameters });
193
132
  }
194
- const ctx = new DELogicContext(this.params, context, data, params);
133
+ const ctx = new DELogicContext(this.params, parameters);
195
134
  this.initLogicParams(ctx);
196
135
  const { startDELogicNodeId } = this.model;
197
136
  if (startDELogicNodeId && this.nodes.has(startDELogicNodeId)) {
@@ -213,17 +152,15 @@ export class DELogic {
213
152
  }
214
153
 
215
154
  /**
216
- * 开始根据连线递归执行逻辑
217
- *
218
- * @author lxm
219
- * @date 2023-06-13 08:29:36
155
+ * @description 开始根据连线递归执行逻辑
220
156
  * @protected
221
- * @param {DELogicNode} node 逻辑节点
222
- * @param {DELogicContext} ctx 逻辑上下文
223
- * @return {*} {Promise<void>}
157
+ * @param {IDeLogicNode} node
158
+ * @param {DELogicContext} ctx
159
+ * @returns {*} {Promise<void>}
160
+ * @memberof DELogic
224
161
  */
225
162
  protected async deepExec(
226
- node: DELogicNode,
163
+ node: IDeLogicNode,
227
164
  ctx: DELogicContext,
228
165
  ): Promise<void> {
229
166
  // 执行逻辑节点
@@ -1,54 +1,37 @@
1
- import { HttpError, HttpResponse, RuntimeError } from '@ibiz-template/core';
2
- import { IAppDataEntity, IAppDELogic } from '@ibiz/model-core';
3
- import { isArray } from 'lodash-es';
4
1
  import { clone } from 'ramda';
2
+ import { isArray } from 'lodash-es';
3
+ import { IAppDataEntity, IAppDELogic } from '@ibiz/model-core';
4
+ import { HttpError, HttpResponse, RuntimeError } from '@ibiz-template/core';
5
+ import { IDELogicProvider } from '../interface';
6
+ import { getDELogicProvider } from '../register';
5
7
  import { filterFieldLogics, findDELogic } from '../model';
6
- import { DELogic } from './de-logic';
7
8
 
8
9
  /**
9
10
  * 实体处理逻辑实例缓存
10
11
  */
11
- const deLogicMap: WeakMap<IAppDELogic, DELogic> = new Map();
12
-
13
- /**
14
- * 找到实体逻辑模型
15
- * @author lxm
16
- * @date 2023-08-04 02:47:16
17
- * @param {string} deDELogicId
18
- * @param {string} dataEntityId
19
- * @param {string} [appId]
20
- * @return {*} {(Promise<IAppDELogic | undefined>)}
21
- */
22
- async function findDeLogic(
23
- deDELogicId: string,
24
- dataEntityId: string,
25
- appId: string,
26
- ): Promise<IAppDELogic | undefined> {
27
- const appDataEntity = await ibiz.hub.getAppDataEntity(dataEntityId, appId);
28
- return findDELogic(deDELogicId, appDataEntity);
29
- }
12
+ const deLogicMap: WeakMap<IAppDELogic, IDELogicProvider> = new Map();
30
13
 
31
14
  /**
32
- * 执行实体处理逻辑
33
- *
34
- * @author lxm
35
- * @date 2023-02-09 11:02:23
15
+ * @description 执行实体逻辑
36
16
  * @export
37
- * @param {IAppDELogic} deDELogic
38
- * @param {IContext} context
39
- * @param {(IData)} data
40
- * @param {IParams} params
41
- * @param {IParams} [opt]
42
- * @return {*} {Promise<HttpResponse<IData>>}
17
+ * @param {IAppDELogic} deDELogic 实体逻辑
18
+ * @param {IAppDataEntity} appDataEntity 应用实体
19
+ * @param {IContext} context 上下文
20
+ * @param {(IData | IData[])} [data={}] 数据
21
+ * @param {IParams} [params={}] 视图参数
22
+ * @returns {*} {Promise<unknown>}
43
23
  */
44
24
  export async function execDELogic(
45
25
  deDELogic: IAppDELogic,
26
+ appDataEntity: IAppDataEntity,
46
27
  context: IContext,
47
28
  data: IData | IData[] = {},
48
29
  params: IParams = {},
49
30
  ): Promise<unknown> {
50
31
  if (!deLogicMap.has(deDELogic)) {
51
- deLogicMap.set(deDELogic, new DELogic(deDELogic));
32
+ const provider = getDELogicProvider(deDELogic, appDataEntity);
33
+ await provider.init();
34
+ deLogicMap.set(deDELogic, provider);
52
35
  }
53
36
  ibiz.log.debug(
54
37
  ibiz.i18n.t('runtime.deLogic.deLogicNode.startExecuting', {
@@ -57,7 +40,11 @@ export async function execDELogic(
57
40
  }),
58
41
  );
59
42
  const deLogic = deLogicMap.get(deDELogic)!;
60
- const result = await deLogic.exec(context, data, params);
43
+ const result = await deLogic.exec({
44
+ context,
45
+ data: Array.isArray(data) ? data : [data],
46
+ params,
47
+ });
61
48
  ibiz.log.debug(
62
49
  ibiz.i18n.t('runtime.deLogic.deLogicNode.endExecution', {
63
50
  id: deDELogic.id,
@@ -68,16 +55,14 @@ export async function execDELogic(
68
55
  }
69
56
 
70
57
  /**
71
- * 通过id执行实体逻辑
72
- * @author lxm
73
- * @date 2023-08-04 02:49:44
58
+ * @description 通过ID执行实体逻辑
74
59
  * @export
75
- * @param {string} deDELogicId
76
- * @param {string} dataEntityId
77
- * @param {IContext} context
78
- * @param {IData} data
79
- * @param {IParams} params
80
- * @return {*} {Promise<unknown>}
60
+ * @param {string} deDELogicId 实体逻辑标识
61
+ * @param {string} dataEntityId 应用实体标识
62
+ * @param {IContext} context 上下文
63
+ * @param {IData} data 数据
64
+ * @param {IParams} params 视图参数
65
+ * @returns {*} {Promise<unknown>}
81
66
  */
82
67
  export async function execDELogicById(
83
68
  deDELogicId: string,
@@ -86,11 +71,11 @@ export async function execDELogicById(
86
71
  data: IData,
87
72
  params: IParams,
88
73
  ): Promise<unknown> {
89
- const deLogic = await findDeLogic(
90
- deDELogicId,
74
+ const appDataEntity = await ibiz.hub.getAppDataEntity(
91
75
  dataEntityId,
92
76
  context.srfappid,
93
77
  );
78
+ const deLogic = findDELogic(deDELogicId, appDataEntity);
94
79
  if (!deLogic) {
95
80
  throw new RuntimeError(
96
81
  ibiz.i18n.t('runtime.deLogic.deLogicNode.noFoundEntityLogic', {
@@ -99,33 +84,37 @@ export async function execDELogicById(
99
84
  }),
100
85
  );
101
86
  }
102
- return execDELogic(deLogic, context, data, params);
87
+ return execDELogic(deLogic, appDataEntity, context, data, params);
103
88
  }
104
89
 
105
90
  /**
106
- * 执行实体方法的实体逻辑并返回对应的response
107
- * @author lxm
108
- * @date 2023-03-16 12:44:43
91
+ * @description 执行实体逻辑行为并返回响应
109
92
  * @export
110
- * @param {IAppDELogic} deDELogic
111
- * @param {IContext} context
112
- * @param {(IData)} data
113
- * @param {IParams} params
114
- * @param {IParams} [opt]
115
- * @return {*} {Promise<HttpResponse<IData>>}
93
+ * @param {IAppDELogic} deDELogic 实体逻辑
94
+ * @param {IAppDataEntity} appDataEntity 应用实体
95
+ * @param {IContext} context 上下文
96
+ * @param {(IData | IData[])} [data] 数据
97
+ * @param {IParams} [params] 视图参数
98
+ * @returns {*} {Promise<HttpResponse<IData>>}
116
99
  */
117
100
  export async function execDELogicAction(
118
101
  deDELogic: IAppDELogic,
102
+ appDataEntity: IAppDataEntity,
119
103
  context: IContext,
120
104
  data?: IData | IData[],
121
105
  params?: IParams,
122
106
  ): Promise<HttpResponse<IData>> {
123
- const _context = clone(context);
124
- const _data = data ? clone(data) : data;
125
- const _params = params ? clone(params) : params;
126
-
127
107
  try {
128
- const result = await execDELogic(deDELogic, _context, _data, _params);
108
+ const _context = clone(context);
109
+ const _data = data ? clone(data) : data;
110
+ const _params = params ? clone(params) : params;
111
+ const result = await execDELogic(
112
+ deDELogic,
113
+ appDataEntity,
114
+ _context,
115
+ _data,
116
+ _params,
117
+ );
129
118
  return new HttpResponse(result);
130
119
  } catch (err) {
131
120
  if (err instanceof HttpError) {
@@ -136,16 +125,13 @@ export async function execDELogicAction(
136
125
  }
137
126
 
138
127
  /**
139
- * 执行属性实体逻辑(单条数据)
140
- * @author lxm
141
- * @date 2023-10-19 04:00:15
142
- * @export
143
- * @param {IAppDataEntity} entity
144
- * @param {('compute' | 'change' | 'default')} type
145
- * @param {IContext} context
146
- * @param {IData} data
147
- * @param {IParams} params
148
- * @return {*} {Promise<void>}
128
+ * @description 执行属性实体逻辑(单条数据)
129
+ * @param {IAppDataEntity} entity 实体
130
+ * @param {('compute' | 'change' | 'default')} type 逻辑类型
131
+ * @param {IContext} context 上下文
132
+ * @param {IData} data 实体数据
133
+ * @param {IParams} params 视图参数
134
+ * @returns {*} {Promise<void>}
149
135
  */
150
136
  async function execSingleFieldLogics(
151
137
  entity: IAppDataEntity,
@@ -158,7 +144,7 @@ async function execSingleFieldLogics(
158
144
  if (fieldLogics.length) {
159
145
  const promiseResult = await Promise.all(
160
146
  fieldLogics.map(logic => {
161
- return execDELogic(logic, context, data, params);
147
+ return execDELogic(logic, entity, context, data, params);
162
148
  }),
163
149
  );
164
150
  promiseResult.forEach(value => {
@@ -168,16 +154,14 @@ async function execSingleFieldLogics(
168
154
  }
169
155
 
170
156
  /**
171
- * 执行属性实体逻辑(单条或者多条)
172
- * @author lxm
173
- * @date 2023-06-14 12:29:56
157
+ * @description 执行属性实体逻辑(单条或者多条)
174
158
  * @export
175
- * @param {IAppDataEntity} entity
176
- * @param {('compute' | 'change' | 'default')} type
177
- * @param {IContext} context
178
- * @param {IData | IData[]} data 单条或多条数据
179
- * @param {IParams} params
180
- * @return {*} {Promise<void>}
159
+ * @param {IAppDataEntity} entity 实体
160
+ * @param {('compute' | 'change' | 'default')} type 逻辑类型
161
+ * @param {IContext} context 上下文
162
+ * @param {(IData | IData[])} data 实体数据
163
+ * @param {IParams} [params={}] 视图参数
164
+ * @returns {*} {Promise<void>}
181
165
  */
182
166
  export async function execFieldLogics(
183
167
  entity: IAppDataEntity,
@@ -186,10 +170,7 @@ export async function execFieldLogics(
186
170
  data: IData | IData[],
187
171
  params: IParams = {},
188
172
  ): Promise<void> {
189
- if (!data) {
190
- return;
191
- }
192
-
173
+ if (!data) return;
193
174
  if (isArray(data)) {
194
175
  await Promise.all(
195
176
  data.map(item =>
@@ -0,0 +1,83 @@
1
+ import { IAppDELogic, IDELogicNode, IAppDataEntity } from '@ibiz/model-core';
2
+ import {
3
+ registerDELogicProvider,
4
+ registerDELogicNodeProvider,
5
+ } from '../register';
6
+ import { DELogic } from './de-logic';
7
+ import {
8
+ EndNode,
9
+ StartNode,
10
+ DataSetNode,
11
+ DEActionNode,
12
+ SortParamNode,
13
+ BindParamNode,
14
+ CopyParamNode,
15
+ RenewParamNode,
16
+ ResetParamNode,
17
+ DebugParamNode,
18
+ AppendParamNode,
19
+ PrepareParamNode,
20
+ ThrowExceptionNode,
21
+ } from './de-logic-node';
22
+
23
+ /**
24
+ * @description 注册实体逻辑适配器
25
+ * @export
26
+ */
27
+ export function presetDELogicProvider(): void {
28
+ // 注册默认界面逻辑
29
+ registerDELogicProvider(
30
+ 'DEFAULT',
31
+ (logic: IAppDELogic, entity: IAppDataEntity) => new DELogic(logic, entity),
32
+ );
33
+ // 注册界面逻辑节点
34
+ registerDELogicNodeProvider(
35
+ 'BEGIN',
36
+ (node: IDELogicNode) => new StartNode(node),
37
+ );
38
+ registerDELogicNodeProvider('END', (node: IDELogicNode) => new EndNode(node));
39
+ registerDELogicNodeProvider(
40
+ 'DEACTION',
41
+ (node: IDELogicNode) => new DEActionNode(node),
42
+ );
43
+ registerDELogicNodeProvider(
44
+ 'PREPAREPARAM',
45
+ (node: IDELogicNode) => new PrepareParamNode(node),
46
+ );
47
+ registerDELogicNodeProvider(
48
+ 'RESETPARAM',
49
+ (node: IDELogicNode) => new ResetParamNode(node),
50
+ );
51
+ registerDELogicNodeProvider(
52
+ 'COPYPARAM',
53
+ (node: IDELogicNode) => new CopyParamNode(node),
54
+ );
55
+ registerDELogicNodeProvider(
56
+ 'BINDPARAM',
57
+ (node: IDELogicNode) => new BindParamNode(node),
58
+ );
59
+ registerDELogicNodeProvider(
60
+ 'DEBUGPARAM',
61
+ (node: IDELogicNode) => new DebugParamNode(node),
62
+ );
63
+ registerDELogicNodeProvider(
64
+ 'APPENDPARAM',
65
+ (node: IDELogicNode) => new AppendParamNode(node),
66
+ );
67
+ registerDELogicNodeProvider(
68
+ 'SORTPARAM',
69
+ (node: IDELogicNode) => new SortParamNode(node),
70
+ );
71
+ registerDELogicNodeProvider(
72
+ 'RENEWPARAM',
73
+ (node: IDELogicNode) => new RenewParamNode(node),
74
+ );
75
+ registerDELogicNodeProvider(
76
+ 'DEDATASET',
77
+ (node: IDELogicNode) => new DataSetNode(node),
78
+ );
79
+ registerDELogicNodeProvider(
80
+ 'THROWEXCEPTION',
81
+ (node: IDELogicNode) => new ThrowExceptionNode(node),
82
+ );
83
+ }
package/src/install.ts CHANGED
@@ -13,9 +13,11 @@ import { EngineFactory, installCtrlEngine } from './engine';
13
13
  import { GlobalUtil } from './global';
14
14
  import { presetUIActionProvider } from './ui-action';
15
15
  import { installLogicSchedule } from './logic-scheduler';
16
+ import { presetUILogicProvider } from './ui-logic/provider';
16
17
  import { install as installPlatformProvider } from './platform/provider';
17
18
  import { getPlatformProvider } from './register';
18
19
  import { CollaborateManager, UIDomainManager } from './utils';
20
+ import { presetDELogicProvider } from './de-logic/provider';
19
21
 
20
22
  /**
21
23
  * 安装运行时
@@ -50,6 +52,10 @@ export function install(): void {
50
52
  presetUIActionProvider();
51
53
  // 注册界面行为适配器
52
54
  presetDEMethodProvider();
55
+ // 注册界面逻辑适配器
56
+ presetUILogicProvider();
57
+ // 注册实体逻辑适配器
58
+ presetDELogicProvider();
53
59
  // 注册应用计数器适配器
54
60
  presetAppCounterProvider();
55
61
  // 安装逻辑调度器
@@ -0,0 +1,8 @@
1
+ import { IApiLogicParams } from './i-api-logic-params';
2
+
3
+ /**
4
+ * @description 实体逻辑通用参数接口
5
+ * @export
6
+ * @interface IApiDELogicParams
7
+ */
8
+ export interface IApiDeLogicParams extends IApiLogicParams {}
@@ -0,0 +1,83 @@
1
+ import { IApiContext, IApiData, IApiParams } from '@ibiz-template/core';
2
+
3
+ /**
4
+ * @description 逻辑执行上下文接口
5
+ * @export
6
+ * @interface IApiLogicContext
7
+ */
8
+ export interface IApiLogicContext {
9
+ /**
10
+ * @description 上下文
11
+ * @type {IApiContext}
12
+ * @memberof IApiLogicContext
13
+ */
14
+ readonly context: IApiContext;
15
+ /**
16
+ * @description 数据
17
+ * @type {IApiData[]}
18
+ * @memberof IApiLogicContext
19
+ */
20
+ readonly data: IApiData[];
21
+ /**
22
+ * @description 视图参数
23
+ * @type {IApiParams}
24
+ * @memberof IApiLogicContext
25
+ */
26
+ readonly viewParam: IApiParams;
27
+ /**
28
+ * @description 界面逻辑参数
29
+ * @type {Record<string, unknown>}
30
+ * @memberof IApiLogicContext
31
+ */
32
+ readonly params: Record<string, unknown>;
33
+ /**
34
+ * @description 上一次返回值
35
+ * @type {unknown}
36
+ * @memberof IApiLogicContext
37
+ */
38
+ lastReturn: unknown;
39
+ /**
40
+ * @description 逻辑执行返回值
41
+ * @type {unknown}
42
+ * @memberof IApiLogicContext
43
+ */
44
+ result: unknown;
45
+ /**
46
+ * @description 是否存在结束节点
47
+ * @type {boolean}
48
+ * @memberof IApiLogicContext
49
+ */
50
+ isEndNode: boolean;
51
+ /**
52
+ * @description 默认参数节点名称
53
+ * @default 'Default'
54
+ * @type {string}
55
+ * @memberof IApiLogicContext
56
+ */
57
+ defaultParamName: string;
58
+ /**
59
+ * @description 重置实体逻辑参数
60
+ * @param {string} name
61
+ * @memberof IApiLogicContext
62
+ */
63
+ resetParam(name: string): void;
64
+ /**
65
+ * @description 重新建立变量
66
+ * @param {string} name
67
+ * @memberof IApiLogicContext
68
+ */
69
+ renewParam(name: string): void;
70
+ /**
71
+ * @description 设置上一次返回值
72
+ * @param {unknown} value
73
+ * @memberof IApiLogicContext
74
+ */
75
+ setLastReturn(value: unknown): void;
76
+ /**
77
+ * @description 是否是实体参数变量(即后台数据对象)
78
+ * @param {string} paramId
79
+ * @returns {*} {boolean}
80
+ * @memberof IApiLogicContext
81
+ */
82
+ isEntityParam(paramId: string): boolean;
83
+ }