zero-ai 0.3.25

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 (276) hide show
  1. package/CNAME +1 -0
  2. package/README.md +54 -0
  3. package/SUMMARY.md +15 -0
  4. package/_config.yml +1 -0
  5. package/_layouts/default.html +60 -0
  6. package/_sass/jekyll-theme-dinky.scss +440 -0
  7. package/_sass/rouge-github.scss +209 -0
  8. package/assets/css/style.scss +4 -0
  9. package/assets/images/arrow-down.png +0 -0
  10. package/assets/images/octocat-small.png +0 -0
  11. package/assets/js/scale.fix.js +20 -0
  12. package/configs/sorts.json +38 -0
  13. package/document/doc-config/jsdoc.json +89 -0
  14. package/document/doc-config/third-part/esdoc.json +9 -0
  15. package/document/doc-config/third-part/yuidoc-example.json +23 -0
  16. package/document/doc-config/third-part/yuidoc.json +11 -0
  17. package/document/doc-config/tpl/publish.js +778 -0
  18. package/document/doc-config/tpl/static/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  19. package/document/doc-config/tpl/static/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  20. package/document/doc-config/tpl/static/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  21. package/document/doc-config/tpl/static/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  22. package/document/doc-config/tpl/static/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  23. package/document/doc-config/tpl/static/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  24. package/document/doc-config/tpl/static/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  25. package/document/doc-config/tpl/static/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  26. package/document/doc-config/tpl/static/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  27. package/document/doc-config/tpl/static/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +978 -0
  28. package/document/doc-config/tpl/static/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  29. package/document/doc-config/tpl/static/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  30. package/document/doc-config/tpl/static/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  31. package/document/doc-config/tpl/static/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  32. package/document/doc-config/tpl/static/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1049 -0
  33. package/document/doc-config/tpl/static/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  34. package/document/doc-config/tpl/static/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  35. package/document/doc-config/tpl/static/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  36. package/document/doc-config/tpl/static/scripts/collapse.js +20 -0
  37. package/document/doc-config/tpl/static/scripts/linenumber.js +25 -0
  38. package/document/doc-config/tpl/static/scripts/nav.js +12 -0
  39. package/document/doc-config/tpl/static/scripts/polyfill.js +4 -0
  40. package/document/doc-config/tpl/static/scripts/prettify/Apache-License-2.0.txt +202 -0
  41. package/document/doc-config/tpl/static/scripts/prettify/lang-css.js +2 -0
  42. package/document/doc-config/tpl/static/scripts/prettify/prettify.js +28 -0
  43. package/document/doc-config/tpl/static/scripts/search.js +83 -0
  44. package/document/doc-config/tpl/static/styles/jsdoc.css +765 -0
  45. package/document/doc-config/tpl/static/styles/prettify.css +79 -0
  46. package/document/doc-config/tpl/static/styles/zero.css +50 -0
  47. package/document/doc-config/tpl/tmpl/augments.tmpl +10 -0
  48. package/document/doc-config/tpl/tmpl/container.tmpl +197 -0
  49. package/document/doc-config/tpl/tmpl/details.tmpl +148 -0
  50. package/document/doc-config/tpl/tmpl/example.tmpl +2 -0
  51. package/document/doc-config/tpl/tmpl/examples.tmpl +13 -0
  52. package/document/doc-config/tpl/tmpl/exceptions.tmpl +32 -0
  53. package/document/doc-config/tpl/tmpl/layout.tmpl +98 -0
  54. package/document/doc-config/tpl/tmpl/mainpage.tmpl +15 -0
  55. package/document/doc-config/tpl/tmpl/members.tmpl +38 -0
  56. package/document/doc-config/tpl/tmpl/method.tmpl +138 -0
  57. package/document/doc-config/tpl/tmpl/modifies.tmpl +14 -0
  58. package/document/doc-config/tpl/tmpl/params.tmpl +132 -0
  59. package/document/doc-config/tpl/tmpl/properties.tmpl +107 -0
  60. package/document/doc-config/tpl/tmpl/returns.tmpl +19 -0
  61. package/document/doc-config/tpl/tmpl/source.tmpl +8 -0
  62. package/document/doc-config/tpl/tmpl/tutorial.tmpl +19 -0
  63. package/document/doc-config/tpl/tmpl/type.tmpl +7 -0
  64. package/document/doc-config/tpl/zero.css +0 -0
  65. package/document/doc-web/E.html +395 -0
  66. package/document/doc-web/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  67. package/document/doc-web/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  68. package/document/doc-web/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  69. package/document/doc-web/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  70. package/document/doc-web/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  71. package/document/doc-web/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  72. package/document/doc-web/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  73. package/document/doc-web/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  74. package/document/doc-web/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  75. package/document/doc-web/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +978 -0
  76. package/document/doc-web/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  77. package/document/doc-web/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  78. package/document/doc-web/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  79. package/document/doc-web/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  80. package/document/doc-web/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1049 -0
  81. package/document/doc-web/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  82. package/document/doc-web/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  83. package/document/doc-web/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  84. package/document/doc-web/index.html +262 -0
  85. package/document/doc-web/module-_debug.html +1104 -0
  86. package/document/doc-web/module-_epic.html +1631 -0
  87. package/document/doc-web/module-ai.html +1701 -0
  88. package/document/doc-web/module-aj.html +1081 -0
  89. package/document/doc-web/scripts/collapse.js +20 -0
  90. package/document/doc-web/scripts/linenumber.js +25 -0
  91. package/document/doc-web/scripts/nav.js +12 -0
  92. package/document/doc-web/scripts/polyfill.js +4 -0
  93. package/document/doc-web/scripts/prettify/Apache-License-2.0.txt +202 -0
  94. package/document/doc-web/scripts/prettify/lang-css.js +2 -0
  95. package/document/doc-web/scripts/prettify/prettify.js +28 -0
  96. package/document/doc-web/scripts/search.js +83 -0
  97. package/document/doc-web/styles/jsdoc.css +765 -0
  98. package/document/doc-web/styles/prettify.css +79 -0
  99. package/document/doc-web/styles/zero.css +50 -0
  100. package/document/markdown/README.md +0 -0
  101. package/document/markdown/gong-cheng-chu-shi-hua.md +79 -0
  102. package/document/markdown/t0002-uuidsheng-cheng-qi.md +142 -0
  103. package/document/markdown/t0003-shu-ju-mo-ni-qi.md +135 -0
  104. package/document/markdown/t0004-zerode-fu-wu-tong-xun-fen-xi-qi.md +64 -0
  105. package/document/markdown/t0005-liquibaseshu-ju-zhuan-huan-qi.md +68 -0
  106. package/document/markdown/zt0001-pagecardchuang-jian.md +71 -0
  107. package/document/markdown/zt0002-formchuang-jian.md +81 -0
  108. package/document/markdown/zt0003-tian-jia-card-an-niu.md +115 -0
  109. package/document/markdown/zt0004-chu-li-modal-zhe-zhao-xiao-guo.md +105 -0
  110. package/document/markdown/ztgong-ju.md +0 -0
  111. package/install-local.sh +3 -0
  112. package/package.json +53 -0
  113. package/run-authorize.sh +32 -0
  114. package/run-doc.sh +16 -0
  115. package/run-update.sh +6 -0
  116. package/script/bootstrap +6 -0
  117. package/script/cibuild +9 -0
  118. package/script/release +42 -0
  119. package/script/validate-html +28 -0
  120. package/script/zrun-doc-generate.sh +18 -0
  121. package/script/zrun-doc-server.sh +13 -0
  122. package/src/ai.js +11 -0
  123. package/src/aj.js +11 -0
  124. package/src/art.js +11 -0
  125. package/src/cab/form/UI.js.tpl +50 -0
  126. package/src/cab/form/UI.json.tpl +38 -0
  127. package/src/cab/list/Op.js.tpl +42 -0
  128. package/src/cab/list/UI.Add.json.tpl +32 -0
  129. package/src/cab/list/UI.Edit.json.tpl +34 -0
  130. package/src/cab/list/UI.Filter.json.tpl +29 -0
  131. package/src/cab/list/UI.Form.js.tpl +64 -0
  132. package/src/cab/list/UI.js.tpl +49 -0
  133. package/src/cab/list/UI.json.tpl +208 -0
  134. package/src/cab/perm/falcon.app.xlsx +0 -0
  135. package/src/cab/perm/falcon.authority.resource.perm.xlsx +0 -0
  136. package/src/cab/perm/falcon.authority.resource.resource.xlsx +0 -0
  137. package/src/cab/perm/falcon.authority.role.action.xlsx +0 -0
  138. package/src/cab/perm/falcon.authority.view.xlsx +0 -0
  139. package/src/cab/perm/falcon.battery.module.xlsx +0 -0
  140. package/src/cab/perm/falcon.epic.form.xlsx +0 -0
  141. package/src/cab/perm/falcon.epic.integration.xlsx +0 -0
  142. package/src/cab/perm/falcon.epic.modeling.entity.xlsx +0 -0
  143. package/src/cab/perm/falcon.epic.modeling.field.xlsx +0 -0
  144. package/src/cab/perm/falcon.epic.modeling.global.xlsx +0 -0
  145. package/src/cab/perm/falcon.epic.modeling.model.xlsx +0 -0
  146. package/src/cab/perm/falcon.epic.page.xlsx +0 -0
  147. package/src/cab/perm/falcon.epic.topology.xlsx +0 -0
  148. package/src/cab/perm/falcon.fm.bank.xlsx +0 -0
  149. package/src/cab/perm/falcon.fm.bill.process.xlsx +0 -0
  150. package/src/cab/perm/falcon.fm.book.xlsx +0 -0
  151. package/src/cab/perm/falcon.fm.currency.xlsx +0 -0
  152. package/src/cab/perm/falcon.fm.debt.xlsx +0 -0
  153. package/src/cab/perm/falcon.fm.settlement.xlsx +0 -0
  154. package/src/cab/perm/falcon.fm.subject.xlsx +0 -0
  155. package/src/cab/perm/falcon.fm.term.xlsx +0 -0
  156. package/src/cab/perm/falcon.i.directory.xlsx +0 -0
  157. package/src/cab/perm/falcon.i.integration.xlsx +0 -0
  158. package/src/cab/perm/falcon.lbs.city.xlsx +0 -0
  159. package/src/cab/perm/falcon.lbs.floor.xlsx +0 -0
  160. package/src/cab/perm/falcon.lbs.query.xlsx +0 -0
  161. package/src/cab/perm/falcon.lbs.state.xlsx +0 -0
  162. package/src/cab/perm/falcon.lbs.tent.xlsx +0 -0
  163. package/src/cab/perm/falcon.login.index.xlsx +0 -0
  164. package/src/cab/perm/falcon.my.menu.xlsx +0 -0
  165. package/src/cab/perm/falcon.organization.brand.xlsx +0 -0
  166. package/src/cab/perm/falcon.organization.company.xlsx +0 -0
  167. package/src/cab/perm/falcon.organization.contract.xlsx +0 -0
  168. package/src/cab/perm/falcon.organization.customer.xlsx +0 -0
  169. package/src/cab/perm/falcon.organization.dept.team.xlsx +0 -0
  170. package/src/cab/perm/falcon.organization.dept.xlsx +0 -0
  171. package/src/cab/perm/falcon.organization.employee.identity.xlsx +0 -0
  172. package/src/cab/perm/falcon.organization.employee.xlsx +0 -0
  173. package/src/cab/perm/falcon.organization.project.xlsx +0 -0
  174. package/src/cab/perm/falcon.psi.pos.xlsx +0 -0
  175. package/src/cab/perm/falcon.psi.wh.xlsx +0 -0
  176. package/src/cab/perm/falcon.rbac.group.xlsx +0 -0
  177. package/src/cab/perm/falcon.rbac.role.xlsx +0 -0
  178. package/src/cab/perm/falcon.rbac.user.xlsx +0 -0
  179. package/src/cab/perm/falcon.system.document.xlsx +0 -0
  180. package/src/cab/perm/falcon.system.job.xlsx +0 -0
  181. package/src/cab/perm/falcon.system.report.xlsx +0 -0
  182. package/src/cab/perm/falcon.system.sync_log.xlsx +0 -0
  183. package/src/cab/perm/falcon.system.todo.xlsx +0 -0
  184. package/src/cab/perm/falcon.system.workflow.xlsx +0 -0
  185. package/src/cab/perm/falcon.ui.app.xlsx +0 -0
  186. package/src/cab/perm/falcon.view.personal.xlsx +0 -0
  187. package/src/cab/perm/falcon.x.activity.xlsx +0 -0
  188. package/src/cab/perm/falcon.x.attachment.xlsx +0 -0
  189. package/src/cab/perm/falcon.x.category.xlsx +0 -0
  190. package/src/cab/perm/falcon.x.integration.xlsx +0 -0
  191. package/src/cab/perm/falcon.x.linkage.xlsx +0 -0
  192. package/src/cab/perm/falcon.x.menu.xlsx +0 -0
  193. package/src/cab/perm/falcon.x.notice.xlsx +0 -0
  194. package/src/cab/perm/falcon.x.tabular.xlsx +0 -0
  195. package/src/cab/perm/falcon.x.tag.xlsx +0 -0
  196. package/src/cab/plugin/Component.java.tpl +52 -0
  197. package/src/cab/plugin/Cv.java.tpl +21 -0
  198. package/src/cab/plugin/ErrorIo.java.tpl +26 -0
  199. package/src/cab/plugin/In.Abstract.java.tpl +30 -0
  200. package/src/cab/plugin/In.java.tpl +25 -0
  201. package/src/cab/plugin/Io.Abstract.java.tpl +36 -0
  202. package/src/cab/plugin/Io.Impl.java.tpl +21 -0
  203. package/src/cab/plugin/Io.java.tpl +73 -0
  204. package/src/cab/plugin/Plugin.After.java.tpl +22 -0
  205. package/src/cab/plugin/Plugin.Before.java.tpl +22 -0
  206. package/src/cab/plugin/Refine.Log.java.tpl +47 -0
  207. package/src/cab/plugin/Refine.Pin.java.tpl +70 -0
  208. package/src/cab/plugin/Refine.java.tpl +67 -0
  209. package/src/cab/plugin/configuration.json.tpl +3 -0
  210. package/src/cab/plugin/infix.xml.tpl +22 -0
  211. package/src/cab/plugin/integration.json.tpl +20 -0
  212. package/src/cab/resource/falcon.resource.xlsx +0 -0
  213. package/src/cab/resource/resource.json +8 -0
  214. package/src/cab/resource/resource.xlsx +0 -0
  215. package/src/commander/ai.zero +10 -0
  216. package/src/commander/aj.zero +8 -0
  217. package/src/commander/ar.zero +4 -0
  218. package/src/commander/option.zero +21 -0
  219. package/src/commander-ai/fn.csv.js +105 -0
  220. package/src/commander-ai/fn.data.js +404 -0
  221. package/src/commander-ai/fn.init.js +106 -0
  222. package/src/commander-ai/fn.key.js +81 -0
  223. package/src/commander-ai/fn.md5.js +76 -0
  224. package/src/commander-ai/fn.random.js +84 -0
  225. package/src/commander-ai/fn.uk.js +70 -0
  226. package/src/commander-ai/fn.uuid.js +80 -0
  227. package/src/commander-ai/index.js +19 -0
  228. package/src/commander-aj/bundle/specification.txt +49 -0
  229. package/src/commander-aj/fn.i.mod.js +26 -0
  230. package/src/commander-aj/fn.i.resource.js +33 -0
  231. package/src/commander-aj/fn.j.bundle.js +51 -0
  232. package/src/commander-aj/fn.j.init.js +72 -0
  233. package/src/commander-aj/fn.j.permission.js +60 -0
  234. package/src/commander-aj/fn.j.plugin.js +120 -0
  235. package/src/commander-aj/fn.j.row.js +5 -0
  236. package/src/commander-aj/index.js +16 -0
  237. package/src/commander-ar/fn.i.complex.js +112 -0
  238. package/src/commander-ar/fn.i.form.js +91 -0
  239. package/src/commander-ar/index.js +7 -0
  240. package/src/epic/ai.economy.impl.fn.excel.js +128 -0
  241. package/src/epic/ai.economy.impl.fn.execute.js +162 -0
  242. package/src/epic/ai.economy.impl.fn.java.js +140 -0
  243. package/src/epic/ai.economy.impl.fn.json.js +23 -0
  244. package/src/epic/ai.economy.impl.fn.plugin.js +160 -0
  245. package/src/epic/ai.economy.impl.fn.react.js +219 -0
  246. package/src/epic/ai.export.impl.fn.parse.js +345 -0
  247. package/src/epic/ai.export.impl.fn.seek.js +42 -0
  248. package/src/epic/ai.export.interface.fn.string.js +5 -0
  249. package/src/epic/ai.export.interface.io.js +69 -0
  250. package/src/epic/ai.export.interface.util.js +17 -0
  251. package/src/epic/ai.path.fn.dir.operation.js +87 -0
  252. package/src/epic/ai.path.fn.io.command.js +43 -0
  253. package/src/epic/ai.path.fn.io.specification.js +59 -0
  254. package/src/epic/ai.path.fn.io.typed.js +63 -0
  255. package/src/epic/ai.path.fn.out.content.js +47 -0
  256. package/src/epic/ai.string.fn.str.util.js +56 -0
  257. package/src/epic/ai.uncork.fn.element.feature.js +52 -0
  258. package/src/epic/ai.uncork.fn.it.feature.js +118 -0
  259. package/src/epic/ai.uncork.fn.to.typed.js +74 -0
  260. package/src/epic/ai.under.fn.cx.evaluate.js +81 -0
  261. package/src/epic/ai.under.fn.fx.terminal.js +143 -0
  262. package/src/epic/ai.unified.fn._.logging.js +45 -0
  263. package/src/epic/ai.unified.fn.fn.error.code.js +114 -0
  264. package/src/epic/ai.unified.fn.is.decision.js +20 -0
  265. package/src/epic/ai.unified.fn.sorter.element.js +26 -0
  266. package/src/epic/index.js +216 -0
  267. package/src/epic/zero.__.fn.find.util.js +37 -0
  268. package/src/epic/zero.__.v.constant.js +5 -0
  269. package/test/csv.json +12 -0
  270. package/test/csv.zero +2 -0
  271. package/test/data.zero +56 -0
  272. package/test/key/key1.json +15 -0
  273. package/test/key/key2.json +12 -0
  274. package/test/key/key3.json +5 -0
  275. package/test/key.json +12 -0
  276. package/test/uk.json +19 -0
@@ -0,0 +1,52 @@
1
+ package #PACKAGE#.component;
2
+
3
+ import cn.originx.optic.advanced.AbstractHBatch;
4
+ import #PACKAGE#.input.#ALIAS#In;
5
+ import io.vertx.up.commune.config.Database;
6
+ import io.vertx.up.commune.config.Integration;
7
+ import io.vertx.up.commune.exchange.DictFabric;
8
+ import io.vertx.up.util.Ut;
9
+
10
+ public abstract class Abstract#ALIAS#Component extends AbstractHBatch {
11
+
12
+ protected #ALIAS#In input() {
13
+ final #ALIAS#In in = null; // 创建 input 组件专用
14
+ Ut.contract(in, Database.class, this.database());
15
+ Ut.contract(in, Integration.class, this.integration());
16
+ final DictFabric fabric = this.fabric.createCopy(this.mapping().child());
17
+ Ut.contract(in, DictFabric.class, fabric);
18
+ return in;
19
+ }
20
+ /*
21
+ * 构造 Atomy 对象
22
+ * @Override
23
+ * public Future<Atomy> transferIn(final ActIn request) {
24
+ * final JsonObject criteria = new JsonObject();
25
+ * // 构造查询条件
26
+ * return this.dao().fetchAsync(criteria).compose(Ux::futureA)
27
+ * // 构造新旧数据
28
+ * // original - 旧数据
29
+ * // normalized - 新数据
30
+ * // ADD -> Atomy.create(new JsonArray(), original); 旧 Empty, 新 Data
31
+ * // UPDATE -> Atomy.create(original, normalized); 旧 Data, 新 Data
32
+ * // DELETE -> Atomy.create(original, new JsonArray()); 旧 Data, 新 Empty
33
+ * .compose(original -> Ux.future(Atomy.create(new JsonArray(), original)))
34
+ * }
35
+ *
36
+ * @Override
37
+ * public Future<JsonArray> transferAsync(final Atomy atomy, final ActIn request,
38
+ * final DataAtom atom) {
39
+ * // Atomy.create(旧,新)
40
+ * // atomy.add(), 对比后新增数据
41
+ * // atomy.update(), 对比后更新数据
42
+ * // atomy.current(), 对比前新数据
43
+ * // atomy.original(), 对比前旧数据
44
+ * //
45
+ * // 更新 - #ALIAS#Io.ci(ChangeFlag.UPDATE, atom)::pushAsync)
46
+ * // 添加 - #ALIAS#Io.ci(ChangeFlag.ADD, atom)::pushAsync)
47
+ * // 删除 - #ALIAS#Io.ci(ChangeFlag.DELETE, atom)::pushAsync)
48
+ * return ....;
49
+ * }
50
+ *
51
+ */
52
+ }
@@ -0,0 +1,21 @@
1
+ package #PACKAGE#.cv;
2
+
3
+ public interface #ALIAS#Cv {
4
+
5
+ String CONFIG_FOLDER = "plugin/#MODULE#/";
6
+
7
+ String INTEGRATION_FILE = CONFIG_FOLDER + "integration.json";
8
+
9
+ String CONFIGURATION_FILE = CONFIG_FOLDER + "configuration.json";
10
+
11
+ // CMDB 专用数据文件
12
+ // String MAPPING_FILE = CONFIG_FOLDER + "cmdb-v2/mapping/ci.device.json";
13
+
14
+ interface Web {
15
+ }
16
+
17
+ interface Mock {
18
+ // mock数据文件目录
19
+ // data/mock/demo.json
20
+ }
21
+ }
@@ -0,0 +1,26 @@
1
+ package #PACKAGE#.error;
2
+
3
+ import io.vertx.core.http.HttpStatusCode;
4
+ import io.vertx.up.exception.WebException;
5
+
6
+ public class _501#ALIAS#IoNullException extends WebException {
7
+ public _501#ALIAS#IoNullException(final Class<?> clazz,
8
+ final String type) {
9
+ super(clazz, type);
10
+ }
11
+
12
+ @Override
13
+ public int getCode() {
14
+ /*
15
+ * 必须在 vertx-error.yml 文件中定义该值
16
+ * 1)值小于0
17
+ * 2)必须是小于 -100000 的值
18
+ */
19
+ return -1;
20
+ }
21
+
22
+ @Override
23
+ public HttpStatusCode getStatus() {
24
+ return HttpStatusCode.NOT_IMPLEMENTED;
25
+ }
26
+ }
@@ -0,0 +1,30 @@
1
+ package #PACKAGE#.input;
2
+
3
+ import io.vertx.core.Future;
4
+ import io.vertx.core.json.JsonArray;
5
+ import io.vertx.up.commune.config.Integration;
6
+ import io.vertx.up.uca.cosmic.AbstractWebClient;
7
+ import io.vertx.up.uca.cosmic.security.WebToken;
8
+ import io.vertx.up.unity.Ux;
9
+
10
+ public abstract class Abstract#ALIAS#In extends AbstractWebClient implements #ALIAS#In {
11
+
12
+ public Abstract#ALIAS#In(final Integration integration) {
13
+ super(integration);
14
+ }
15
+
16
+ @Override
17
+ public WebToken token() {
18
+ return null;
19
+ }
20
+
21
+ @Override
22
+ public Future<JsonArray> readyAsync(final JsonArray input) {
23
+ return Ux.future(input);
24
+ }
25
+
26
+ @Override
27
+ public Future<JsonArray> fetchAsync() {
28
+ return this.fetchAsync(null);
29
+ }
30
+ }
@@ -0,0 +1,25 @@
1
+ package #PACKAGE#.input;
2
+
3
+ import io.vertx.core.Future;
4
+ import io.vertx.core.json.JsonArray;
5
+ import io.vertx.core.json.JsonObject;
6
+
7
+ /*
8
+ * 数据读取专用接口
9
+ */
10
+ public interface #ALIAS#In {
11
+
12
+ /*
13
+ * 预处理数据专用接口
14
+ */
15
+ Future<JsonArray> readyAsync(JsonArray input);
16
+
17
+ /*
18
+ * 读取所有信息
19
+ */
20
+ Future<JsonArray> fetchAsync();
21
+
22
+ Future<JsonArray> fetchAsync(JsonObject params);
23
+
24
+ Future<JsonObject> oneAsync(JsonObject params);
25
+ }
@@ -0,0 +1,36 @@
1
+ package #PACKAGE#.output;
2
+
3
+ import #PACKAGE#.refine.#ALIAS#;
4
+ import io.vertx.core.Future;
5
+ import io.vertx.core.json.JsonArray;
6
+ import io.vertx.tp.atom.modeling.data.DataAtom;
7
+ import io.vertx.up.uca.cosmic.AbstractWebClient;
8
+ import io.vertx.up.uca.cosmic.security.WebToken;
9
+ import io.vertx.up.unity.Ux;
10
+
11
+ public abstract class Abstract#ALIAS#Io extends AbstractWebClient implements #ALIAS#Io {
12
+ protected final transient DataAtom atom;
13
+
14
+ public Abstract#ALIAS#Io(final DataAtom atom) {
15
+ super(#ALIAS#.integration());
16
+ this.atom = atom;
17
+ }
18
+
19
+ @Override
20
+ public WebToken token() {
21
+ /*
22
+ * BasicToken 专用
23
+ * 头部执行:
24
+ * import io.vertx.up.uca.cosmic.security.BasicToken;
25
+ *
26
+ * 实现部分:
27
+ * return new BasicToken(this.integration);
28
+ */
29
+ return null;
30
+ }
31
+
32
+ @Override
33
+ public Future<JsonArray> pushAsync(final JsonArray input) {
34
+ return Ux.thenCombine(input, this::pushAsync);
35
+ }
36
+ }
@@ -0,0 +1,21 @@
1
+ package #PACKAGE#.output;
2
+
3
+ import io.vertx.core.Future;
4
+ import io.vertx.core.json.JsonObject;
5
+ import io.vertx.tp.atom.modeling.data.DataAtom;
6
+ import io.vertx.up.unity.Ux;
7
+
8
+ /*
9
+ * 添加推送
10
+ */
11
+ class #ALIAS#Io#OP# extends Abstract#ALIAS#Io {
12
+
13
+ public #ALIAS#Io#OP#(final DataAtom atom) {
14
+ super(atom);
15
+ }
16
+
17
+ @Override
18
+ public Future<JsonObject> pushAsync(final JsonObject input) {
19
+ return Ux.futureJ();
20
+ }
21
+ }
@@ -0,0 +1,73 @@
1
+ package #PACKAGE#.output;
2
+
3
+ import #PACKAGE#.error._501#ALIAS#IoNullException;
4
+ import io.vertx.core.Future;
5
+ import io.vertx.core.json.JsonArray;
6
+ import io.vertx.core.json.JsonObject;
7
+ import io.vertx.tp.atom.modeling.data.DataAtom;
8
+ import io.vertx.up.eon.em.ChangeFlag;
9
+ import io.vertx.up.fn.Fn;
10
+
11
+ import java.util.Objects;
12
+ import java.util.concurrent.ConcurrentHashMap;
13
+ import java.util.concurrent.ConcurrentMap;
14
+ import java.util.function.Function;
15
+
16
+ /*
17
+ * 推送专用接口,执行推送的
18
+ * ADD:添加
19
+ * UPDATE:更新
20
+ * DELETE:删除
21
+ */
22
+ public interface #ALIAS#Io {
23
+
24
+ /*
25
+ * 专用实例化 #ALIAS#Io 专用方法,其他实现类是包域
26
+ * 执行双重检查
27
+ * 1. 第一个池是:ChangeFlag = Supplier
28
+ * 2. 第二个池是:identifier = #ALIAS#Io(每种模型一个)
29
+ */
30
+ @SuppressWarnings("all")
31
+ static #ALIAS#Io io(final ChangeFlag type, final DataAtom atom) {
32
+ final Function<DataAtom, #ALIAS#Io> executor = Pool.IO_POOL_SUPPLIER.get(type);
33
+ Fn.out(Objects.isNull(executor), _501#ALIAS#IoNullException.class, #ALIAS#Io.class, "Io");
34
+ final ConcurrentMap<String, #ALIAS#Io> pool = Pool.IO_POOL.get(type);
35
+ if (Objects.isNull(pool)) {
36
+ return executor.apply(atom);
37
+ } else {
38
+ final String identifier = atom.identifier();
39
+ return Fn.pool(pool, identifier, () -> executor.apply(atom));
40
+ }
41
+ }
42
+
43
+ /*
44
+ * 单量推送主逻辑
45
+ */
46
+ Future<JsonObject> pushAsync(JsonObject input);
47
+
48
+ /**
49
+ * 批量推送主逻辑
50
+ * 内部调用单量执行专用接口
51
+ */
52
+ Future<JsonArray> pushAsync(JsonArray input);
53
+ }
54
+
55
+
56
+ interface Pool {
57
+
58
+ ConcurrentMap<ChangeFlag, ConcurrentHashMap<String, #ALIAS#Io>> IO_POOL = new ConcurrentHashMap<ChangeFlag, ConcurrentHashMap<String, #ALIAS#Io>>() {
59
+ {
60
+ this.put(ChangeFlag.ADD, new ConcurrentHashMap<>());
61
+ this.put(ChangeFlag.UPDATE, new ConcurrentHashMap<>());
62
+ this.put(ChangeFlag.DELETE, new ConcurrentHashMap<>());
63
+ }
64
+ };
65
+
66
+ ConcurrentMap<ChangeFlag, Function<DataAtom, #ALIAS#Io>> IO_POOL_SUPPLIER = new ConcurrentHashMap<ChangeFlag, Function<DataAtom, #ALIAS#Io>>() {
67
+ {
68
+ this.put(ChangeFlag.ADD, #ALIAS#IoAdd::new);
69
+ this.put(ChangeFlag.UPDATE, #ALIAS#IoUpdate::new);
70
+ this.put(ChangeFlag.DELETE, #ALIAS#IoDelete::new);
71
+ }
72
+ };
73
+ }
@@ -0,0 +1,22 @@
1
+ package #PACKAGE#.plugin;
2
+
3
+ import cn.originx.scaffold.plugin.AbstractAfter;
4
+
5
+ public abstract class Abstract#ALIAS#After extends AbstractAfter {
6
+ /*
7
+ * this.atom: 和当前模型相关的 DataAtom 对象
8
+ * this.fabric:和当前通道直接绑定的字典翻译器
9
+ * this.logger(): 当前日志器
10
+ *
11
+ * public Future<JsonObject> afterAsync(JsonObject record, JsonObject options){
12
+ * // Before 后置插件(单记录)
13
+ * // options 对应 ServiceConfig 中配置的Json配置数据
14
+ * }
15
+ *
16
+ *
17
+ * public Future<JsonArray> afterAsync(JsonArray records, JsonObject options){
18
+ * // Before 后置插件(批量记录)
19
+ * // options 对应 ServiceConfig 中配置的Json配置数据
20
+ * }
21
+ */
22
+ }
@@ -0,0 +1,22 @@
1
+ package #PACKAGE#.plugin;
2
+
3
+ import cn.originx.scaffold.plugin.AbstractBefore;
4
+
5
+ public abstract class Abstract#ALIAS#Before extends AbstractBefore {
6
+ /*
7
+ * this.atom: 和当前模型相关的 DataAtom 对象
8
+ * this.fabric:和当前通道直接绑定的字典翻译器
9
+ * this.logger(): 当前日志器
10
+ *
11
+ * public Future<JsonObject> beforeAsync(JsonObject record, JsonObject options){
12
+ * // Before 前置插件(单记录)
13
+ * // options 对应 ServiceConfig 中配置的Json配置数据
14
+ * }
15
+ *
16
+ *
17
+ * public Future<JsonArray> beforeAsync(JsonArray records, JsonObject options){
18
+ * // Before 前置插件(批量记录)
19
+ * // options 对应 ServiceConfig 中配置的Json配置数据
20
+ * }
21
+ */
22
+ }
@@ -0,0 +1,47 @@
1
+ package #PACKAGE#.refine;
2
+
3
+ import io.vertx.up.log.Annal;
4
+
5
+ class #ALIAS#Log {
6
+ private static void info(final Annal logger,
7
+ final String flag, final String pattern, final Object... args) {
8
+ logger.info("[ #LOG_UP# ] ( " + flag + " ) " + pattern, args);
9
+ }
10
+
11
+ private static void warn(final Annal logger,
12
+ final String flag, final String pattern, final Object... args) {
13
+ logger.warn("[ #LOG_UP# ] ( " + flag + " ) " + pattern, args);
14
+ }
15
+
16
+ static void infoInit(final Annal logger, final String pattern, final Object... args) {
17
+ info(logger, "初始化", pattern, args);
18
+ }
19
+
20
+ static void infoCode(final Annal logger, final String pattern, final Object... args) {
21
+ info(logger, "执行", pattern, args);
22
+ }
23
+
24
+ static void infoApi(final Annal logger, final String pattern, final Object... args) {
25
+ info(logger, "Api访问", pattern, args);
26
+ }
27
+
28
+ static void infoJob(final Annal logger, final String pattern, final Object... args) {
29
+ info(logger, "任务执行", pattern, args);
30
+ }
31
+
32
+ static void warnInit(final Annal logger, final String pattern, final Object... args) {
33
+ warn(logger, "初始化", pattern, args);
34
+ }
35
+
36
+ static void warnCode(final Annal logger, final String pattern, final Object... args) {
37
+ warn(logger, "执行", pattern, args);
38
+ }
39
+
40
+ static void warnApi(final Annal logger, final String pattern, final Object... args) {
41
+ warn(logger, "Api访问", pattern, args);
42
+ }
43
+
44
+ static void warnJob(final Annal logger, final String pattern, final Object... args) {
45
+ warn(logger, "任务执行", pattern, args);
46
+ }
47
+ }
@@ -0,0 +1,70 @@
1
+ package #PACKAGE#.refine;
2
+
3
+ import #PACKAGE#.cv.PbCv;
4
+ import io.vertx.core.json.JsonObject;
5
+ import io.vertx.up.commune.config.Integration;
6
+ import io.vertx.up.log.Annal;
7
+ import io.vertx.up.util.Ut;
8
+
9
+ import java.util.Objects;
10
+
11
+ class #ALIAS#Pin {
12
+
13
+ private static final Annal LOGGER = Annal.get(#ALIAS#Pin.class);
14
+ private static final JsonObject CONFIGURATION = new JsonObject();
15
+ private static Integration INTEGRATION;
16
+
17
+ static {
18
+ /*
19
+ * 默认:resources/plugin/#MODULE#/integration.json
20
+ * 开发:resources/plugin/#MODULE#/integration-dev.json
21
+ * 生产:resources/plugin/#MODULE#/integration-home.json
22
+ */
23
+ final JsonObject config = Ut.ioJObject(#ALIAS#Cv.INTEGRATION_FILE);
24
+ if (Objects.nonNull(config)) {
25
+ #ALIAS#Log.infoInit(LOGGER, "读取 #LOG_UP# 集成配置:\n{0}", config.encodePrettily());
26
+ INTEGRATION = new Integration();
27
+ INTEGRATION.fromJson(config);
28
+ }
29
+
30
+ /*
31
+ * resources/plugin/#MODULE#/configuration.json
32
+ */
33
+ final JsonObject configuration = Ut.ioJObject(#ALIAS#Cv.CONFIGURATION_FILE);
34
+ if (Ut.notNil(configuration)) {
35
+ CONFIGURATION.mergeIn(configuration, true);
36
+ #ALIAS#Log.infoInit(LOGGER, "读取 #LOG_UP# 核心配置:\n{0}", configuration.encodePrettily());
37
+ }
38
+ }
39
+
40
+ /*
41
+ * 数据结构
42
+ {
43
+ "endpoint": "集成专用 EndPoint",
44
+ "port": "数值,端口号",
45
+ "hostname": "主机地址,或IP",
46
+ "username": "账号",
47
+ "password": "密码",
48
+ "apis": {
49
+ "接口1-键": {
50
+ "path": "接口1-路径",
51
+ "method": "HTTP方法"
52
+ },
53
+ "接口2-键": {
54
+ "path": "接口2-路径",
55
+ "method": "HTTP方法"
56
+ }
57
+ },
58
+ "options": {
59
+ "debug": "布尔值,是否打开调试模式"
60
+ }
61
+ }
62
+ */
63
+ static Integration integration() {
64
+ return INTEGRATION;
65
+ }
66
+
67
+ static JsonObject configuration() {
68
+ return CONFIGURATION;
69
+ }
70
+ }
@@ -0,0 +1,67 @@
1
+ package #PACKAGE#.refine;
2
+
3
+ import io.vertx.core.json.JsonObject;
4
+ import io.vertx.up.commune.config.Integration;
5
+ import io.vertx.up.log.Annal;
6
+
7
+ public class #ALIAS# {
8
+ /*
9
+ * 当前插件使用的日志器
10
+ * Api:Api组件专用日志
11
+ * Job:任务组件专用日志
12
+ * Code:普通代码执行专用日志
13
+ * Init:初始化流程专用日志
14
+ */
15
+ public static class Log {
16
+ // Level = INFO级
17
+ public static void infoApi(final Class<?> clazz, final String pattern, final Object... args) {
18
+ final Annal logger = Annal.get(clazz);
19
+ #ALIAS#Log.infoApi(logger, pattern, args);
20
+ }
21
+
22
+ public static void infoJob(final Class<?> clazz, final String pattern, final Object... args) {
23
+ final Annal logger = Annal.get(clazz);
24
+ #ALIAS#Log.infoJob(logger, pattern, args);
25
+ }
26
+
27
+ public static void infoCode(final Class<?> clazz, final String pattern, final Object... args) {
28
+ final Annal logger = Annal.get(clazz);
29
+ #ALIAS#Log.infoCode(logger, pattern, args);
30
+ }
31
+
32
+ public static void infoInit(final Class<?> clazz, final String pattern, final Object... args) {
33
+ final Annal logger = Annal.get(clazz);
34
+ #ALIAS#Log.infoInit(logger, pattern, args);
35
+ }
36
+ // Level = WARN级
37
+ public static void warnApi(final Class<?> clazz, final String pattern, final Object... args) {
38
+ final Annal logger = Annal.get(clazz);
39
+ #ALIAS#Log.warnApi(logger, pattern, args);
40
+ }
41
+
42
+ public static void warnJob(final Class<?> clazz, final String pattern, final Object... args) {
43
+ final Annal logger = Annal.get(clazz);
44
+ #ALIAS#Log.warnJob(logger, pattern, args);
45
+ }
46
+
47
+ public static void warnCode(final Class<?> clazz, final String pattern, final Object... args) {
48
+ final Annal logger = Annal.get(clazz);
49
+ #ALIAS#Log.warnCode(logger, pattern, args);
50
+ }
51
+
52
+ public static void warnInit(final Class<?> clazz, final String pattern, final Object... args) {
53
+ final Annal logger = Annal.get(clazz);
54
+ #ALIAS#Log.warnInit(logger, pattern, args);
55
+ }
56
+ }
57
+
58
+ // 集成信息
59
+ public static Integration integration() {
60
+ return #ALIAS#Pin.integration();
61
+ }
62
+
63
+ // 配置信息
64
+ public static JsonObject configuration() {
65
+ return #ALIAS#Pin.configuration();
66
+ }
67
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+
3
+ }
@@ -0,0 +1,22 @@
1
+ <included>
2
+ <appender name="#LOG_UP#" class="ch.qos.logback.core.rolling.RollingFileAppender">
3
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
4
+ <fileNamePattern>${LOG_FOLDER}/ox-plugin/plugin-#LOG_L#.log</fileNamePattern>
5
+ <maxHistory>${LOG_MAX_HISTORY}</maxHistory>
6
+ </rollingPolicy>
7
+ <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
8
+ <Pattern>${LOG_PATTERN}</Pattern>
9
+ </encoder>
10
+ <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
11
+ <MaxFileSize>${LOG_MAX_FILE_SIZE}</MaxFileSize>
12
+ </triggeringPolicy>
13
+ </appender>
14
+ <appender name="ASYNC_#LOG_UP#" class="ch.qos.logback.classic.AsyncAppender">
15
+ <discardingThreshold>0</discardingThreshold>
16
+ <queueSize>512</queueSize>
17
+ <appender-ref ref="#LOG_UP#"/>
18
+ </appender>
19
+ <logger name="cn.originx.#LOG_L#" level="INFO">
20
+ <appender-ref ref="ASYNC_#LOG_UP#"/>
21
+ </logger>
22
+ </included>
@@ -0,0 +1,20 @@
1
+ {
2
+ "endpoint": "",
3
+ "port": 0,
4
+ "hostname": "",
5
+ "username": "",
6
+ "password": "",
7
+ "apis": {
8
+ "apiGet": {
9
+ "path": "/api/path",
10
+ "method": "GET"
11
+ },
12
+ "apiPost": {
13
+ "path": "/api/path",
14
+ "method": "POST"
15
+ }
16
+ },
17
+ "options": {
18
+ "debug": true
19
+ }
20
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "phase": "AFTER",
3
+ "data": {
4
+ "type": "RECORD",
5
+ "viewId": "`${viewId}`",
6
+ "identifier": "x.integration"
7
+ }
8
+ }
Binary file
@@ -0,0 +1,10 @@
1
+ A;
2
+ command, executor, description, option1,option2, option3, option4
3
+ uuid, executeUuid, 生成UUID的值,可直接拷贝, n=「20」生成的数量
4
+ csv, executeCsv, 将JsonArray数据转换成csv, p=输入数据文件路径, c=配置文件路径, s=分割符
5
+ uk, executeUk, 检查数据文件中的Data数据是否符合唯一值规范, p=输入数据文件路径, f=需要检查的字段名
6
+ data, executeData, 根据配置文件生成数据, c=配置文件路径, o=「.」输出文件基本路径, j=「false」是否Array, n=「23」如果是Array则生效
7
+ key, executeKey, 为数据模板添加key属性(UUID格式), p=输入数据文件路径, f=「key」标识key的字段名
8
+ init, executeInit, 初始化Zero Ui工程, n=项目名称(必须填写,最终写入package.json)
9
+ str, executeString, 生成随机字符串,可直接拷贝, n=「1」生成的数量, l=「64」长度信息(默认64)
10
+ md5, executeMD5, 加密字符串,可直接拷贝, i=输入字符串
@@ -0,0 +1,8 @@
1
+ A;
2
+ command, executor, description, option1,option2, option3, option4
3
+ perm, javaPermission, 用于生成Excel的权限数据, r=角色ID,i=输入的额外目录,o=输出路径
4
+ rs, javaResource, 用于生成Excel的资源定义和默认权限, c=配置文件路径,o=输出路径
5
+ plugin, javaPlugin, 用于初始化第三方集成模块专用, c=配置文件路径,m=模块名称,p=工作路径
6
+ mod, javaMod, 执行模块化专用初始化命令, p=输入路径(initialize.json)路径,e=扩展名过滤,w=替换模式
7
+ init, javaInit, 初始化Zero Api工程, n=项目名称(必须填写,最终写入pom.xml)
8
+ bundle, javaBundle, 初始化OSGI Bundle工程, p=输入路径,若无则取当前路径
@@ -0,0 +1,4 @@
1
+ A;
2
+ command, executor, description, option1,option2, option3, option4
3
+ complex, reactComplex, 完整模块生成`ExListXxx`模块, c=配置文件路径
4
+ form, reactForm, 完整生成表单`ExForm`专用, c=配置文件路径,u=表单文件名
@@ -0,0 +1,21 @@
1
+ P;
2
+ f=field
3
+ d=data
4
+ p=path
5
+ c=config
6
+ j=json
7
+ n=number
8
+ o=out
9
+ k=key
10
+ u=ui
11
+ t=target
12
+ s=separator
13
+ m=module
14
+ a=all
15
+ y=yes
16
+ v=value
17
+ r=role
18
+ i=input
19
+ l=length
20
+ e=extension
21
+ w=write