@things-factory/integration-base 8.0.0-beta.1 → 8.0.0-beta.2

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 (136) hide show
  1. package/package.json +10 -10
  2. package/server/controllers/index.ts +0 -2
  3. package/server/controllers/publish-data.ts +0 -29
  4. package/server/controllers/scenario-controller.ts +0 -156
  5. package/server/engine/analyzer/analyze-integration.ts +0 -115
  6. package/server/engine/connection-manager.ts +0 -239
  7. package/server/engine/connector/echo-back-connector.ts +0 -51
  8. package/server/engine/connector/echo-back-server.ts +0 -72
  9. package/server/engine/connector/graphql-connector.ts +0 -126
  10. package/server/engine/connector/headless-connector.ts +0 -341
  11. package/server/engine/connector/http-connector.ts +0 -65
  12. package/server/engine/connector/index.ts +0 -13
  13. package/server/engine/connector/mqtt-connector.ts +0 -78
  14. package/server/engine/connector/mssql-connector.ts +0 -152
  15. package/server/engine/connector/mysql-connector.ts +0 -94
  16. package/server/engine/connector/operato-connector.ts +0 -264
  17. package/server/engine/connector/oracle-connector.ts +0 -218
  18. package/server/engine/connector/postgresql-connector.ts +0 -152
  19. package/server/engine/connector/proxy-connector.ts +0 -53
  20. package/server/engine/connector/socket-server.ts +0 -86
  21. package/server/engine/connector/sqlite-connector.ts +0 -69
  22. package/server/engine/edge-client.ts +0 -45
  23. package/server/engine/index.ts +0 -11
  24. package/server/engine/pending-queue.ts +0 -97
  25. package/server/engine/resource-pool/headless-pool.ts +0 -136
  26. package/server/engine/resource-pool/index.ts +0 -1
  27. package/server/engine/scenario-engine.ts +0 -106
  28. package/server/engine/task/book-up-scenario.ts +0 -73
  29. package/server/engine/task/csv-readline.ts +0 -127
  30. package/server/engine/task/data-accessor.ts +0 -36
  31. package/server/engine/task/data-mapper.ts +0 -47
  32. package/server/engine/task/database-query.ts +0 -56
  33. package/server/engine/task/echo-receive.ts +0 -21
  34. package/server/engine/task/echo-send.ts +0 -32
  35. package/server/engine/task/empty-check.ts +0 -38
  36. package/server/engine/task/end.ts +0 -18
  37. package/server/engine/task/floating-point.ts +0 -71
  38. package/server/engine/task/goto.ts +0 -27
  39. package/server/engine/task/graphql-mutate.ts +0 -79
  40. package/server/engine/task/graphql-query.ts +0 -78
  41. package/server/engine/task/headless-post.ts +0 -128
  42. package/server/engine/task/headless-scrap.ts +0 -83
  43. package/server/engine/task/http-get.ts +0 -117
  44. package/server/engine/task/http-post.ts +0 -148
  45. package/server/engine/task/index.ts +0 -45
  46. package/server/engine/task/jsonata.ts +0 -45
  47. package/server/engine/task/local-graphql-mutate.ts +0 -100
  48. package/server/engine/task/local-graphql-query.ts +0 -100
  49. package/server/engine/task/log.ts +0 -78
  50. package/server/engine/task/mqtt-publish.ts +0 -45
  51. package/server/engine/task/mqtt-subscribe.ts +0 -139
  52. package/server/engine/task/mssql-procedure.ts +0 -128
  53. package/server/engine/task/oracle-procedure.ts +0 -124
  54. package/server/engine/task/pick-pending-scenario.ts +0 -80
  55. package/server/engine/task/publish.ts +0 -40
  56. package/server/engine/task/random.ts +0 -53
  57. package/server/engine/task/reset-pending-queue.ts +0 -17
  58. package/server/engine/task/script.ts +0 -63
  59. package/server/engine/task/set-domain.ts +0 -37
  60. package/server/engine/task/sleep.ts +0 -34
  61. package/server/engine/task/socket-listener.ts +0 -96
  62. package/server/engine/task/state-group-read.ts +0 -69
  63. package/server/engine/task/state-read.ts +0 -56
  64. package/server/engine/task/state-write.ts +0 -65
  65. package/server/engine/task/stop-scenario.ts +0 -44
  66. package/server/engine/task/sub-scenario.ts +0 -57
  67. package/server/engine/task/switch-goto.ts +0 -43
  68. package/server/engine/task/switch-range-goto.ts +0 -53
  69. package/server/engine/task/switch-range-scenario.ts +0 -79
  70. package/server/engine/task/switch-range-set.ts +0 -48
  71. package/server/engine/task/switch-scenario.ts +0 -67
  72. package/server/engine/task/switch-set.ts +0 -37
  73. package/server/engine/task/throw.ts +0 -27
  74. package/server/engine/task/utils/headless-pool-for-scenario.ts +0 -71
  75. package/server/engine/task/utils/substitute.ts +0 -44
  76. package/server/engine/task/variables.ts +0 -17
  77. package/server/engine/task-registry.ts +0 -23
  78. package/server/engine/types.ts +0 -114
  79. package/server/index.ts +0 -20
  80. package/server/migrations/index.ts +0 -9
  81. package/server/restful/index.ts +0 -1
  82. package/server/restful/unstable/index.ts +0 -7
  83. package/server/restful/unstable/run-scenario.ts +0 -51
  84. package/server/restful/unstable/scenario-instance.ts +0 -52
  85. package/server/restful/unstable/scenario-instances.ts +0 -80
  86. package/server/restful/unstable/scenario.ts +0 -41
  87. package/server/restful/unstable/scenarios.ts +0 -69
  88. package/server/restful/unstable/start-scenario.ts +0 -33
  89. package/server/restful/unstable/stop-scenario.ts +0 -30
  90. package/server/routers/scenario-schedule-callback-router.ts +0 -69
  91. package/server/routers/scenario-view-router.ts +0 -46
  92. package/server/routes.ts +0 -30
  93. package/server/service/analysis/analysis-query.ts +0 -13
  94. package/server/service/analysis/index.ts +0 -3
  95. package/server/service/connection/connection-mutation.ts +0 -190
  96. package/server/service/connection/connection-query.ts +0 -87
  97. package/server/service/connection/connection-subscription.ts +0 -104
  98. package/server/service/connection/connection-type.ts +0 -288
  99. package/server/service/connection/index.ts +0 -7
  100. package/server/service/connector/connector-query.ts +0 -62
  101. package/server/service/connector/connector-type.ts +0 -29
  102. package/server/service/connector/index.ts +0 -4
  103. package/server/service/index.ts +0 -52
  104. package/server/service/payload-log/index.ts +0 -7
  105. package/server/service/payload-log/payload-log-mutation.ts +0 -151
  106. package/server/service/payload-log/payload-log-query.ts +0 -49
  107. package/server/service/payload-log/payload-log-type.ts +0 -36
  108. package/server/service/payload-log/payload-log.ts +0 -100
  109. package/server/service/property-spec.ts +0 -24
  110. package/server/service/scenario/index.ts +0 -6
  111. package/server/service/scenario/scenario-mutation.ts +0 -396
  112. package/server/service/scenario/scenario-query.ts +0 -109
  113. package/server/service/scenario/scenario-type.ts +0 -78
  114. package/server/service/scenario/scenario.ts +0 -124
  115. package/server/service/scenario-flow/scenario-flow.ts +0 -17
  116. package/server/service/scenario-instance/index.ts +0 -6
  117. package/server/service/scenario-instance/scenario-instance-mutation.ts +0 -44
  118. package/server/service/scenario-instance/scenario-instance-query.ts +0 -42
  119. package/server/service/scenario-instance/scenario-instance-subscription.ts +0 -118
  120. package/server/service/scenario-instance/scenario-instance-type.ts +0 -563
  121. package/server/service/scenario-queue/index.ts +0 -4
  122. package/server/service/scenario-queue/scenario-queue-subscription.ts +0 -55
  123. package/server/service/scenario-queue/scenario-queue-type.ts +0 -27
  124. package/server/service/state-register/data-resolver.ts +0 -56
  125. package/server/service/state-register/index.ts +0 -8
  126. package/server/service/state-register/state-register-mutation.ts +0 -166
  127. package/server/service/state-register/state-register-query.ts +0 -80
  128. package/server/service/state-register/state-register-type.ts +0 -80
  129. package/server/service/state-register/state-register.ts +0 -113
  130. package/server/service/step/index.ts +0 -6
  131. package/server/service/step/step-mutation.ts +0 -52
  132. package/server/service/step/step-query.ts +0 -55
  133. package/server/service/step/step-type.ts +0 -215
  134. package/server/service/task-type/index.ts +0 -4
  135. package/server/service/task-type/task-type-query.ts +0 -95
  136. package/server/service/task-type/task-type-type.ts +0 -29
@@ -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)
@@ -1,79 +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 SwitchRangeScenario(step: InputStep, context: Context) {
10
- var { logger, data, load } = context
11
- var {
12
- params: { accessor, cases, variables }
13
- } = step
14
-
15
- var value = Number(access(accessor, data))
16
-
17
- var range =
18
- Object.keys(cases).find(key => {
19
- if (key == 'default') {
20
- return
21
- }
22
-
23
- var [from, to] = key.split('~')
24
-
25
- return Number(from) <= value && Number(to) > value
26
- }) || 'default'
27
-
28
- var scenarioName = cases[range]
29
-
30
- logger.info(`switch-range to scenario '${scenarioName}' by value '${value}' .`)
31
-
32
- var subscenario = await getRepository(Scenario).findOne({
33
- where: {
34
- name: scenarioName
35
- },
36
- relations: ['steps', 'domain']
37
- })
38
-
39
- logger.info(`Sub Scenario '${subscenario.name}' started.`)
40
- var subContext = await load(step, subscenario, {
41
- ...context,
42
- data: {},
43
- /*
44
- FIXME variables 설정이 안된 경우에 subscenario의 variables는 undefined가 되는 것이 맞겠지만,
45
- 하위 호환성 유지를 위해서 부모의 variables를 사용함
46
- */
47
- variables: variables ? deepClone(access(variables, data)) : context.variables
48
- })
49
- logger.info(`Sub Scenario '${subscenario.name}' done.`)
50
-
51
- return {
52
- data: subContext.data
53
- }
54
- }
55
-
56
- SwitchRangeScenario.parameterSpec = [
57
- {
58
- type: 'scenario-step-input',
59
- name: 'accessor',
60
- label: 'accessor'
61
- },
62
- {
63
- type: 'range',
64
- name: 'cases',
65
- label: 'cases',
66
- property: {
67
- valuetype: 'scenario-input'
68
- }
69
- },
70
- {
71
- type: 'scenario-step-input',
72
- name: 'variables',
73
- label: 'variables'
74
- }
75
- ]
76
-
77
- SwitchRangeScenario.connectorFree = true
78
-
79
- TaskRegistry.registerTaskHandler('switch-range-scenario', SwitchRangeScenario)
@@ -1,48 +0,0 @@
1
- import { access } 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 SwitchRangeSet(step: InputStep, { logger, data }: Context) {
7
- var {
8
- params: { accessor, cases }
9
- } = step
10
-
11
- var value = Number(access(accessor, data))
12
-
13
- var range =
14
- Object.keys(cases).find(key => {
15
- if (key == 'default') {
16
- return
17
- }
18
-
19
- var [from, to] = key.split('~')
20
-
21
- return Number(from) <= value && Number(to) > value
22
- }) || 'default'
23
-
24
- var data = cases[range]
25
-
26
- logger.info(`switch-range to data '${data}' by value '${value}' .`)
27
-
28
- return {
29
- data
30
- }
31
- }
32
-
33
- SwitchRangeSet.parameterSpec = [
34
- {
35
- type: 'scenario-step-input',
36
- name: 'accessor',
37
- label: 'accessor'
38
- },
39
- {
40
- type: 'range',
41
- name: 'cases',
42
- label: 'cases'
43
- }
44
- ]
45
-
46
- SwitchRangeSet.connectorFree = true
47
-
48
- TaskRegistry.registerTaskHandler('switch-range-set', SwitchRangeSet)
@@ -1,67 +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 SwitchScenario(step: InputStep, context: Context) {
10
- var { logger, data, load } = context
11
- var {
12
- params: { accessor, cases, variables }
13
- } = step
14
-
15
- var value = access(accessor, data)
16
-
17
- var scenarioName = cases[value] || cases['default']
18
- logger.info(`switch to scenario '${scenarioName}' by value '${value}' .`)
19
-
20
- var subscenario = await getRepository(Scenario).findOne({
21
- where: {
22
- name: scenarioName
23
- },
24
- relations: ['steps', 'domain']
25
- })
26
-
27
- logger.info(`Sub Scenario '${subscenario.name}' started.`)
28
- var subContext = await load(step, subscenario, {
29
- ...context,
30
- data: {},
31
- /*
32
- FIXME variables 설정이 안된 경우에 subscenario의 variables는 undefined가 되는 것이 맞겠지만,
33
- 하위 호환성 유지를 위해서 부모의 variables를 사용함
34
- */
35
- variables: variables ? deepClone(access(variables, data)) : context.variables
36
- })
37
- logger.info(`Sub Scenario '${subscenario.name}' done.`)
38
-
39
- return {
40
- data: subContext.data
41
- }
42
- }
43
-
44
- SwitchScenario.parameterSpec = [
45
- {
46
- type: 'scenario-step-input',
47
- name: 'accessor',
48
- label: 'accessor'
49
- },
50
- {
51
- type: 'map',
52
- name: 'cases',
53
- label: 'cases',
54
- property: {
55
- valuetype: 'scenario-input'
56
- }
57
- },
58
- {
59
- type: 'scenario-step-input',
60
- name: 'variables',
61
- label: 'variables'
62
- }
63
- ]
64
-
65
- SwitchScenario.connectorFree = true
66
-
67
- TaskRegistry.registerTaskHandler('switch-scenario', SwitchScenario)
@@ -1,37 +0,0 @@
1
- import { access } 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 SwitchSet(step: InputStep, { logger, data }: Context) {
7
- var {
8
- params: { accessor, cases }
9
- } = step
10
-
11
- var value = access(accessor, data)
12
-
13
- var data = cases[value] || cases['default']
14
-
15
- logger.info(`switch to data '${data}' by value '${value}' .`)
16
-
17
- return {
18
- data
19
- }
20
- }
21
-
22
- SwitchSet.parameterSpec = [
23
- {
24
- type: 'scenario-step-input',
25
- name: 'accessor',
26
- label: 'accessor'
27
- },
28
- {
29
- type: 'map',
30
- name: 'cases',
31
- label: 'cases'
32
- }
33
- ]
34
-
35
- SwitchSet.connectorFree = true
36
-
37
- TaskRegistry.registerTaskHandler('switch-set', SwitchSet)
@@ -1,27 +0,0 @@
1
- import { TaskRegistry } from '../task-registry'
2
- import { InputStep } from '../../service/step/step-type'
3
- import { Context } from '../types'
4
-
5
- async function Throw(step: InputStep, { logger }: Context) {
6
- var {
7
- name,
8
- params: { message }
9
- } = step
10
-
11
- throw `'${message}' is thrown by step '${name}'`
12
-
13
- return {}
14
- }
15
-
16
- Throw.parameterSpec = [
17
- {
18
- type: 'string',
19
- name: 'message',
20
- label: 'message'
21
- }
22
- ]
23
-
24
- Throw.connectorFree = true
25
- Throw.help = 'integration/task/throw'
26
-
27
- TaskRegistry.registerTaskHandler('throw', Throw)