@things-factory/integration-base 8.0.40 → 9.0.0-9.0.0-beta.59.0

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 (169) hide show
  1. package/dist-server/engine/connector/headless-connector.d.ts +23 -0
  2. package/dist-server/engine/connector/headless-connector.js +357 -0
  3. package/dist-server/engine/connector/headless-connector.js.map +1 -0
  4. package/dist-server/engine/connector/http-connector.js +1 -1
  5. package/dist-server/engine/connector/http-connector.js.map +1 -1
  6. package/dist-server/engine/connector/index.d.ts +1 -0
  7. package/dist-server/engine/connector/index.js +1 -0
  8. package/dist-server/engine/connector/index.js.map +1 -1
  9. package/dist-server/engine/index.d.ts +3 -2
  10. package/dist-server/engine/index.js +3 -2
  11. package/dist-server/engine/index.js.map +1 -1
  12. package/dist-server/engine/resource-pool/headless-pool.d.ts +1 -0
  13. package/dist-server/engine/resource-pool/headless-pool.js +62 -0
  14. package/dist-server/engine/resource-pool/headless-pool.js.map +1 -0
  15. package/dist-server/engine/resource-pool/index.d.ts +1 -0
  16. package/dist-server/engine/resource-pool/index.js +5 -0
  17. package/dist-server/engine/resource-pool/index.js.map +1 -0
  18. package/dist-server/engine/task/headless-post.js +19 -33
  19. package/dist-server/engine/task/headless-post.js.map +1 -1
  20. package/dist-server/engine/task/headless-scrap.js +20 -13
  21. package/dist-server/engine/task/headless-scrap.js.map +1 -1
  22. package/dist-server/index.d.ts +6 -6
  23. package/dist-server/index.js +10 -10
  24. package/dist-server/index.js.map +1 -1
  25. package/dist-server/routes.js +6 -6
  26. package/dist-server/routes.js.map +1 -1
  27. package/dist-server/service/connection/connection-mutation.js +17 -5
  28. package/dist-server/service/connection/connection-mutation.js.map +1 -1
  29. package/dist-server/service/connection/connection-query.js +3 -0
  30. package/dist-server/service/connection/connection-query.js.map +1 -1
  31. package/dist-server/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +12 -11
  33. package/translations/en.json +12 -4
  34. package/translations/ja.json +12 -4
  35. package/translations/ko.json +12 -4
  36. package/translations/ms.json +12 -4
  37. package/translations/zh.json +12 -4
  38. package/server/controllers/index.ts +0 -2
  39. package/server/controllers/publish-data.ts +0 -29
  40. package/server/controllers/scenario-controller.ts +0 -154
  41. package/server/engine/analyzer/analyze-integration.ts +0 -115
  42. package/server/engine/connection-manager.ts +0 -232
  43. package/server/engine/connector/echo-back-connector.ts +0 -51
  44. package/server/engine/connector/echo-back-server.ts +0 -72
  45. package/server/engine/connector/graphql-connector.ts +0 -126
  46. package/server/engine/connector/http-connector.ts +0 -65
  47. package/server/engine/connector/index.ts +0 -12
  48. package/server/engine/connector/mqtt-connector.ts +0 -78
  49. package/server/engine/connector/mssql-connector.ts +0 -152
  50. package/server/engine/connector/mysql-connector.ts +0 -94
  51. package/server/engine/connector/operato-connector.ts +0 -264
  52. package/server/engine/connector/oracle-connector.ts +0 -218
  53. package/server/engine/connector/postgresql-connector.ts +0 -152
  54. package/server/engine/connector/proxy-connector.ts +0 -53
  55. package/server/engine/connector/socket-server.ts +0 -86
  56. package/server/engine/connector/sqlite-connector.ts +0 -69
  57. package/server/engine/edge-client.ts +0 -45
  58. package/server/engine/index.ts +0 -10
  59. package/server/engine/pending-queue.ts +0 -97
  60. package/server/engine/scenario-engine.ts +0 -106
  61. package/server/engine/task/book-up-scenario.ts +0 -73
  62. package/server/engine/task/csv-readline.ts +0 -127
  63. package/server/engine/task/data-accessor.ts +0 -36
  64. package/server/engine/task/data-mapper.ts +0 -47
  65. package/server/engine/task/database-query.ts +0 -56
  66. package/server/engine/task/echo-receive.ts +0 -21
  67. package/server/engine/task/echo-send.ts +0 -32
  68. package/server/engine/task/empty-check.ts +0 -38
  69. package/server/engine/task/end.ts +0 -18
  70. package/server/engine/task/floating-point.ts +0 -71
  71. package/server/engine/task/goto.ts +0 -27
  72. package/server/engine/task/graphql-mutate.ts +0 -79
  73. package/server/engine/task/graphql-query.ts +0 -78
  74. package/server/engine/task/headless-post.ts +0 -147
  75. package/server/engine/task/headless-scrap.ts +0 -80
  76. package/server/engine/task/http-get.ts +0 -117
  77. package/server/engine/task/http-post.ts +0 -148
  78. package/server/engine/task/index.ts +0 -45
  79. package/server/engine/task/jsonata.ts +0 -45
  80. package/server/engine/task/local-graphql-mutate.ts +0 -100
  81. package/server/engine/task/local-graphql-query.ts +0 -100
  82. package/server/engine/task/log.ts +0 -78
  83. package/server/engine/task/mqtt-publish.ts +0 -69
  84. package/server/engine/task/mqtt-subscribe.ts +0 -291
  85. package/server/engine/task/mssql-procedure.ts +0 -128
  86. package/server/engine/task/oracle-procedure.ts +0 -124
  87. package/server/engine/task/pick-pending-scenario.ts +0 -80
  88. package/server/engine/task/publish.ts +0 -40
  89. package/server/engine/task/random.ts +0 -53
  90. package/server/engine/task/reset-pending-queue.ts +0 -17
  91. package/server/engine/task/script.ts +0 -63
  92. package/server/engine/task/set-domain.ts +0 -37
  93. package/server/engine/task/sleep.ts +0 -34
  94. package/server/engine/task/socket-listener.ts +0 -96
  95. package/server/engine/task/state-group-read.ts +0 -69
  96. package/server/engine/task/state-read.ts +0 -56
  97. package/server/engine/task/state-write.ts +0 -65
  98. package/server/engine/task/stop-scenario.ts +0 -44
  99. package/server/engine/task/sub-scenario.ts +0 -57
  100. package/server/engine/task/switch-goto.ts +0 -43
  101. package/server/engine/task/switch-range-goto.ts +0 -53
  102. package/server/engine/task/switch-range-scenario.ts +0 -79
  103. package/server/engine/task/switch-range-set.ts +0 -48
  104. package/server/engine/task/switch-scenario.ts +0 -67
  105. package/server/engine/task/switch-set.ts +0 -37
  106. package/server/engine/task/throw.ts +0 -27
  107. package/server/engine/task/utils/headless-pool-for-scenario.ts +0 -71
  108. package/server/engine/task/utils/substitute.ts +0 -44
  109. package/server/engine/task/variables.ts +0 -17
  110. package/server/engine/task-registry.ts +0 -23
  111. package/server/engine/types.ts +0 -114
  112. package/server/index.ts +0 -20
  113. package/server/migrations/index.ts +0 -9
  114. package/server/restful/index.ts +0 -1
  115. package/server/restful/unstable/index.ts +0 -7
  116. package/server/restful/unstable/run-scenario.ts +0 -51
  117. package/server/restful/unstable/scenario-instance.ts +0 -52
  118. package/server/restful/unstable/scenario-instances.ts +0 -80
  119. package/server/restful/unstable/scenario.ts +0 -41
  120. package/server/restful/unstable/scenarios.ts +0 -69
  121. package/server/restful/unstable/start-scenario.ts +0 -33
  122. package/server/restful/unstable/stop-scenario.ts +0 -30
  123. package/server/routers/scenario-schedule-callback-router.ts +0 -69
  124. package/server/routers/scenario-view-router.ts +0 -46
  125. package/server/routes.ts +0 -35
  126. package/server/service/analysis/analysis-query.ts +0 -13
  127. package/server/service/analysis/index.ts +0 -3
  128. package/server/service/connection/connection-mutation.ts +0 -190
  129. package/server/service/connection/connection-query.ts +0 -87
  130. package/server/service/connection/connection-subscription.ts +0 -104
  131. package/server/service/connection/connection-type.ts +0 -305
  132. package/server/service/connection/index.ts +0 -7
  133. package/server/service/connector/connector-query.ts +0 -62
  134. package/server/service/connector/connector-type.ts +0 -29
  135. package/server/service/connector/index.ts +0 -4
  136. package/server/service/index.ts +0 -52
  137. package/server/service/payload-log/index.ts +0 -7
  138. package/server/service/payload-log/payload-log-mutation.ts +0 -151
  139. package/server/service/payload-log/payload-log-query.ts +0 -49
  140. package/server/service/payload-log/payload-log-type.ts +0 -36
  141. package/server/service/payload-log/payload-log.ts +0 -100
  142. package/server/service/property-spec.ts +0 -24
  143. package/server/service/scenario/index.ts +0 -6
  144. package/server/service/scenario/scenario-mutation.ts +0 -396
  145. package/server/service/scenario/scenario-query.ts +0 -109
  146. package/server/service/scenario/scenario-type.ts +0 -78
  147. package/server/service/scenario/scenario.ts +0 -124
  148. package/server/service/scenario-flow/scenario-flow.ts +0 -17
  149. package/server/service/scenario-instance/index.ts +0 -6
  150. package/server/service/scenario-instance/scenario-instance-mutation.ts +0 -44
  151. package/server/service/scenario-instance/scenario-instance-query.ts +0 -42
  152. package/server/service/scenario-instance/scenario-instance-subscription.ts +0 -118
  153. package/server/service/scenario-instance/scenario-instance-type.ts +0 -557
  154. package/server/service/scenario-queue/index.ts +0 -4
  155. package/server/service/scenario-queue/scenario-queue-subscription.ts +0 -55
  156. package/server/service/scenario-queue/scenario-queue-type.ts +0 -27
  157. package/server/service/state-register/data-resolver.ts +0 -56
  158. package/server/service/state-register/index.ts +0 -8
  159. package/server/service/state-register/state-register-mutation.ts +0 -166
  160. package/server/service/state-register/state-register-query.ts +0 -80
  161. package/server/service/state-register/state-register-type.ts +0 -80
  162. package/server/service/state-register/state-register.ts +0 -113
  163. package/server/service/step/index.ts +0 -6
  164. package/server/service/step/step-mutation.ts +0 -52
  165. package/server/service/step/step-query.ts +0 -55
  166. package/server/service/step/step-type.ts +0 -238
  167. package/server/service/task-type/index.ts +0 -4
  168. package/server/service/task-type/task-type-query.ts +0 -95
  169. package/server/service/task-type/task-type-type.ts +0 -29
@@ -1,17 +0,0 @@
1
- import { TaskRegistry } from '../task-registry'
2
- import { ScenarioEngine } from '../scenario-engine'
3
- import { InputStep } from '../../service/step/step-type'
4
- import { Context } from '../types'
5
-
6
- async function ResetPendingScenario(step: InputStep, { domain }: Context) {
7
- const pendingQueue = ScenarioEngine.getPendingQueue(domain)
8
- pendingQueue.reset()
9
-
10
- return {}
11
- }
12
-
13
- ResetPendingScenario.parameterSpec = []
14
-
15
- ResetPendingScenario.connectorFree = true
16
-
17
- TaskRegistry.registerTaskHandler('reset-pending-scenario', ResetPendingScenario)
@@ -1,63 +0,0 @@
1
- import { TaskRegistry } from '../task-registry'
2
- import { InputStep } from '../../service/step/step-type'
3
- import { Context } from '../types'
4
- import 'ses'
5
-
6
- async function Script(step: InputStep, context: Context) {
7
- const {
8
- params: { script }
9
- } = step
10
-
11
- const { domain, user, data, variables, lng, logger } = context
12
-
13
- const compartment = new Compartment({
14
- domain,
15
- user,
16
- data,
17
- variables,
18
- logger,
19
- lng,
20
- console,
21
- Math,
22
- JSON,
23
- Date,
24
- setTimeout,
25
- setInterval,
26
- clearTimeout,
27
- clearInterval
28
- })
29
-
30
- const scriptSource = `
31
- (async () => {
32
- ${script}
33
- })();
34
- `
35
-
36
- try {
37
- return {
38
- data: await compartment.evaluate(scriptSource)
39
- }
40
- } catch (err) {
41
- throw new Error(`Script execution failed: ${err.message}`)
42
- }
43
- }
44
-
45
- Script.parameterSpec = [
46
- {
47
- type: 'textarea',
48
- name: 'script',
49
- label: 'script',
50
- property: {
51
- language: 'javascript',
52
- showLineNumbers: true
53
- },
54
- styles: {
55
- flex: '1'
56
- }
57
- }
58
- ]
59
-
60
- Script.connectorFree = true
61
- Script.help = 'integration/task/script'
62
-
63
- TaskRegistry.registerTaskHandler('script', Script)
@@ -1,37 +0,0 @@
1
- import { TaskRegistry } from '../task-registry'
2
- import { Domain, getRepository } from '@things-factory/shell'
3
-
4
- import { InputStep } from '../../service/step/step-type'
5
- import { Context } from '../types'
6
-
7
- async function SetDomain(step: InputStep, context: Context) {
8
- var {
9
- params: { subdomain }
10
- } = step
11
-
12
- var { logger, domain } = context || {}
13
-
14
- logger.info(`domain => ${subdomain}`)
15
-
16
- if (subdomain) {
17
- context.domain = (await getRepository(Domain).findOneBy({ subdomain })) || domain
18
- }
19
-
20
- return {
21
- data: domain.subdomain // previous domain
22
- }
23
- }
24
-
25
- SetDomain.parameterSpec = [
26
- {
27
- type: 'string',
28
- name: 'subdomain',
29
- placeholder: 'subdomain',
30
- label: 'subdomain'
31
- }
32
- ]
33
-
34
- SetDomain.connectorFree = true
35
- SetDomain.help = 'integration/task/set-domain'
36
-
37
- TaskRegistry.registerTaskHandler('set-domain', SetDomain)
@@ -1,34 +0,0 @@
1
- import { sleep } from '@things-factory/utils'
2
- import { TaskRegistry } from '../task-registry'
3
- import { InputStep } from '../../service/step/step-type'
4
- import { Context } from '../types'
5
-
6
- async function Sleep(step: InputStep, { logger }: Context) {
7
- var {
8
- params: { duration }
9
- } = step
10
-
11
- logger.info(`sleep ${duration}ms`)
12
-
13
- if (duration) {
14
- await sleep(duration)
15
- }
16
-
17
- return {
18
- data: duration
19
- }
20
- }
21
-
22
- Sleep.parameterSpec = [
23
- {
24
- type: 'number',
25
- name: 'duration',
26
- placeholder: 'milli-seconds',
27
- label: 'duration'
28
- }
29
- ]
30
-
31
- Sleep.connectorFree = true
32
- Sleep.help = 'integration/task/sleep'
33
-
34
- TaskRegistry.registerTaskHandler('sleep', Sleep)
@@ -1,96 +0,0 @@
1
- import { sleep } from '@things-factory/utils'
2
- import { TaskRegistry } from '../task-registry'
3
- import { ConnectionManager } from '../connection-manager'
4
- import { InputStep } from '../../service/step/step-type'
5
- import { Context } from '../types'
6
-
7
- function convertDataFormat(data, format) {
8
- try {
9
- if (format == 'json') {
10
- return JSON.parse(data)
11
- } else if (format == 'csv') {
12
- return data.split(',')
13
- }
14
- } catch (e) {
15
- return data.toString()
16
- }
17
-
18
- return data
19
- }
20
-
21
- async function SocketListener(step: InputStep, context: Context) {
22
- //get connection data
23
- const {
24
- connection: connectionName,
25
- params: { dataFormat = 'JSON' },
26
- name
27
- } = step
28
-
29
- const { domain, logger, closures, __socket_listener } = context
30
- logger.info('\r\n')
31
- if (!__socket_listener) {
32
- context.__socket_listener = {}
33
- }
34
-
35
- // get socket information from connection
36
- var connection = ConnectionManager.getConnectionInstanceByName(domain, connectionName)
37
- if (!connection) {
38
- throw new Error(`connector '${connectionName}' is not established.`)
39
- }
40
-
41
- /*
42
- * 1. listner list에서 listner를 찾는다. 없으면, 생성한다.
43
- */
44
- if (!context.__socket_listener[name]) {
45
- try {
46
- var MESSAGES = []
47
- context.__socket_listener[name] = async () => {
48
- while (MESSAGES.length == 0) {
49
- await sleep(100)
50
- }
51
- var message = MESSAGES.shift()
52
- return {
53
- message
54
- }
55
- }
56
-
57
- await connection.addListener('socket-message-arrive', async message => {
58
- logger.info(message.toString())
59
- MESSAGES.push(convertDataFormat(message.toString(), dataFormat))
60
- })
61
- } catch (e) {
62
- logger.error(e)
63
- }
64
- }
65
-
66
- var { message } = await context.__socket_listener[name]()
67
-
68
- return {
69
- data: message
70
- }
71
- }
72
-
73
- SocketListener.parameterSpec = [
74
- {
75
- type: 'select',
76
- label: 'data-format',
77
- name: 'dataFormat',
78
- property: {
79
- options: [
80
- {
81
- display: 'CSV',
82
- value: 'csv'
83
- },
84
- {
85
- display: 'JSON',
86
- value: 'json'
87
- },
88
- {
89
- display: 'String',
90
- value: 'string'
91
- }
92
- ]
93
- }
94
- }
95
- ]
96
- TaskRegistry.registerTaskHandler('socket-listener', SocketListener)
@@ -1,69 +0,0 @@
1
- import gql from 'graphql-tag'
2
- import { TaskRegistry } from '../task-registry'
3
- import { InputStep } from '../../service/step/step-type'
4
- import { Context } from '../types'
5
-
6
- async function StateGroupRead(step: InputStep, { logger, publish, data, domain, user, client }: Context) {
7
- var {
8
- params: { group }
9
- } = step
10
-
11
- if (!group) {
12
- throw Error(`group should be defined: group - '${group}'`)
13
- }
14
-
15
- var { data: queryResult, errors } = await client.query({
16
- query: gql`
17
- query ($filters: [Filter!]) {
18
- stateRegisters(filters: $filters) {
19
- items {
20
- name
21
- state
22
- }
23
- }
24
- }
25
- `,
26
- variables: {
27
- filters: [
28
- {
29
- name: 'group',
30
- operator: 'eq',
31
- value: group
32
- }
33
- ]
34
- },
35
- context: {
36
- state: {
37
- domain,
38
- user
39
- }
40
- }
41
- })
42
-
43
- if (errors) {
44
- errors.forEach(error => {
45
- logger.error('GraphQL Error: %s', error)
46
- })
47
- }
48
-
49
- return {
50
- data: queryResult?.stateRegisters?.items.reduce((status, item) => {
51
- const { name, state } = item
52
- status[name] = state
53
- return status
54
- }, {})
55
- }
56
- }
57
-
58
- StateGroupRead.parameterSpec = [
59
- {
60
- type: 'string',
61
- name: 'group',
62
- label: 'group'
63
- }
64
- ]
65
-
66
- StateGroupRead.connectorFree = true
67
- StateGroupRead.help = 'integration/task/state-group-read'
68
-
69
- TaskRegistry.registerTaskHandler('state-group-read', StateGroupRead)
@@ -1,56 +0,0 @@
1
- import gql from 'graphql-tag'
2
- import { TaskRegistry } from '../task-registry'
3
- import { InputStep } from '../../service/step/step-type'
4
- import { Context } from '../types'
5
-
6
- async function StateRead(step: InputStep, { logger, publish, data, domain, user, client }: Context) {
7
- var {
8
- params: { name }
9
- } = step
10
-
11
- if (!name) {
12
- throw Error(`name should be defined: name - '${name}'`)
13
- }
14
-
15
- var { data: queryResult, errors } = await client.query({
16
- query: gql`
17
- query ($name: String!) {
18
- stateRegisterByName(name: $name) {
19
- state
20
- }
21
- }
22
- `,
23
- variables: {
24
- name
25
- },
26
- context: {
27
- state: {
28
- domain,
29
- user
30
- }
31
- }
32
- })
33
-
34
- if (errors) {
35
- errors.forEach(error => {
36
- logger.error('GraphQL Error: %s', error)
37
- })
38
- }
39
-
40
- return {
41
- data: queryResult?.stateRegisterByName?.state
42
- }
43
- }
44
-
45
- StateRead.parameterSpec = [
46
- {
47
- type: 'string',
48
- name: 'name',
49
- label: 'name'
50
- }
51
- ]
52
-
53
- StateRead.connectorFree = true
54
- StateRead.help = 'integration/task/state-read'
55
-
56
- TaskRegistry.registerTaskHandler('state-read', StateRead)
@@ -1,65 +0,0 @@
1
- import gql from 'graphql-tag'
2
- import { access } from '@things-factory/utils'
3
- import { TaskRegistry } from '../task-registry'
4
- import { InputStep } from '../../service/step/step-type'
5
- import { Context } from '../types'
6
-
7
- async function StateWrite(step: InputStep, { logger, publish, data, domain, user, client }: Context) {
8
- var {
9
- params: { name, accessor }
10
- } = step
11
-
12
- if (!name || !accessor) {
13
- throw Error(`name and accessor should be defined: name - '${name}', accessor - '${accessor}'`)
14
- }
15
-
16
- var state = access(accessor, data)
17
-
18
- var { data: mutateResult, errors } = await client.mutate({
19
- mutation: gql`
20
- mutation ($state: Object!, $name: String!) {
21
- updateStateRegisterByName(state: $state, name: $name) {
22
- state
23
- }
24
- }
25
- `,
26
- variables: {
27
- name,
28
- state
29
- },
30
- context: {
31
- state: {
32
- domain,
33
- user
34
- }
35
- }
36
- })
37
-
38
- if (errors) {
39
- errors.forEach(error => {
40
- logger.error('GraphQL Error: %s', error)
41
- })
42
- }
43
-
44
- return {
45
- data: mutateResult?.updateStateRegisterByName?.state
46
- }
47
- }
48
-
49
- StateWrite.parameterSpec = [
50
- {
51
- type: 'string',
52
- name: 'name',
53
- label: 'name'
54
- },
55
- {
56
- type: 'scenario-step-input',
57
- name: 'accessor',
58
- label: 'accessor'
59
- }
60
- ]
61
-
62
- StateWrite.connectorFree = true
63
- StateWrite.help = 'integration/task/state-write'
64
-
65
- TaskRegistry.registerTaskHandler('state-write', StateWrite)
@@ -1,44 +0,0 @@
1
- import { getRepository } from '@things-factory/shell'
2
-
3
- import { Scenario } from '../../service/scenario/scenario'
4
- import { ScenarioEngine } from '../../engine'
5
- import { TaskRegistry } from '../task-registry'
6
- import { InputStep } from '../../service/step/step-type'
7
- import { Context } from '../types'
8
-
9
- async function StopScenario(step: InputStep, context: Context) {
10
- var { logger, domain } = context
11
- var {
12
- params: { scenario }
13
- } = step
14
-
15
- // find the name of the input scenario
16
- var foundScenario = await getRepository(Scenario).findOne({
17
- where: {
18
- id: scenario
19
- },
20
- relations: ['steps', 'domain']
21
- })
22
-
23
- await ScenarioEngine.unload(domain, foundScenario?.name)
24
- logger.info(`Scenario '${foundScenario?.name}' is about to be stopped.`)
25
-
26
- return {
27
- data: foundScenario?.name
28
- }
29
- }
30
-
31
- StopScenario.parameterSpec = [
32
- {
33
- type: 'entity-selector',
34
- name: 'scenario',
35
- label: 'scenario',
36
- property: {
37
- queryName: 'scenarios'
38
- }
39
- }
40
- ]
41
-
42
- StopScenario.connectorFree = true
43
-
44
- TaskRegistry.registerTaskHandler('scenario-stop', StopScenario)
@@ -1,57 +0,0 @@
1
- import { getRepository } from '@things-factory/shell'
2
- import { access, deepClone } from '@things-factory/utils'
3
-
4
- import { Scenario } from '../../service/scenario/scenario'
5
- import { TaskRegistry } from '../task-registry'
6
- import { InputStep } from '../../service/step/step-type'
7
- import { Context } from '../types'
8
-
9
- async function SubScenario(step: InputStep, context: Context) {
10
- var { logger, load, data } = context
11
- var {
12
- params: { scenario, variables }
13
- } = step
14
-
15
- var subscenario = await getRepository(Scenario).findOne({
16
- where: {
17
- id: scenario
18
- },
19
- relations: ['steps', 'domain']
20
- })
21
-
22
- logger.info(`Sub Scenario '${subscenario.name}' Started.`)
23
- var subContext = await load(step, subscenario, {
24
- ...context,
25
- data: {},
26
- /*
27
- FIXME variables 설정이 안된 경우에 subscenario의 variables는 undefined가 되는 것이 맞겠지만,
28
- 하위 호환성 유지를 위해서 부모의 variables를 사용함
29
- */
30
- variables: variables ? deepClone(access(variables, data)) : context.variables
31
- })
32
- logger.info(`Sub Scenario '${subscenario.name}' done.`)
33
-
34
- return {
35
- data: subContext.data
36
- }
37
- }
38
-
39
- SubScenario.parameterSpec = [
40
- {
41
- type: 'entity-selector',
42
- name: 'scenario',
43
- label: 'scenario',
44
- property: {
45
- queryName: 'scenarios'
46
- }
47
- },
48
- {
49
- type: 'scenario-step-input',
50
- name: 'variables',
51
- label: 'variables'
52
- }
53
- ]
54
-
55
- SubScenario.connectorFree = true
56
-
57
- TaskRegistry.registerTaskHandler('scenario', SubScenario)
@@ -1,43 +0,0 @@
1
- import { access } from '@things-factory/utils'
2
-
3
- import { TaskRegistry } from '../task-registry'
4
-
5
- import { InputStep } from '../../service/step/step-type'
6
- import { Context } from '../types'
7
-
8
- async function SwitchGoTo(step: InputStep, { logger, data }: Context) {
9
- var {
10
- params: { accessor, cases }
11
- } = step
12
-
13
- var value = access(accessor, data)
14
-
15
- var next = cases[value] || cases['default']
16
-
17
- logger.info(`switch to next '${next}' by value '${value}' .`)
18
-
19
- return {
20
- next
21
- }
22
- }
23
-
24
- SwitchGoTo.parameterSpec = [
25
- {
26
- type: 'scenario-step-input',
27
- name: 'accessor',
28
- label: 'accessor'
29
- },
30
- {
31
- type: 'map',
32
- name: 'cases',
33
- label: 'cases',
34
- property: {
35
- valuetype: 'scenario-step-input'
36
- }
37
- }
38
- ]
39
-
40
- SwitchGoTo.connectorFree = true
41
-
42
- TaskRegistry.registerTaskHandler('switch', SwitchGoTo)
43
- TaskRegistry.registerTaskHandler('switch-goto', SwitchGoTo)
@@ -1,53 +0,0 @@
1
- import { access } from '@things-factory/utils'
2
-
3
- import { TaskRegistry } from '../task-registry'
4
- import { InputStep } from '../../service/step/step-type'
5
- import { Context } from '../types'
6
-
7
- async function SwitchRangeGoTo(step: InputStep, { logger, data }: Context) {
8
- var {
9
- params: { accessor, cases }
10
- } = step
11
-
12
- var value = Number(access(accessor, data))
13
-
14
- var range =
15
- Object.keys(cases).find(key => {
16
- if (key == 'default') {
17
- return
18
- }
19
-
20
- var [from, to] = key.split('~')
21
-
22
- return Number(from) <= value && Number(to) > value
23
- }) || 'default'
24
-
25
- var next = cases[range]
26
-
27
- logger.info(`switch-range to next '${next}' by value '${value}' .`)
28
-
29
- return {
30
- next
31
- }
32
- }
33
-
34
- SwitchRangeGoTo.parameterSpec = [
35
- {
36
- type: 'scenario-step-input',
37
- name: 'accessor',
38
- label: 'accessor'
39
- },
40
- {
41
- type: 'range',
42
- name: 'cases',
43
- label: 'cases',
44
- property: {
45
- valuetype: 'scenario-step-input'
46
- }
47
- }
48
- ]
49
-
50
- SwitchRangeGoTo.connectorFree = true
51
-
52
- TaskRegistry.registerTaskHandler('switch-range', SwitchRangeGoTo)
53
- TaskRegistry.registerTaskHandler('switch-range-goto', SwitchRangeGoTo)