@bonsae/node-red-salesforce 0.4.0 → 0.5.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.
@@ -1,10 +1,45 @@
1
1
  {
2
- "salesforce-apex": {
2
+ "salesforce-apex-code": {
3
3
  "configs": {
4
4
  "name": "Имя",
5
- "connection": "Connection",
5
+ "connection": "Подключение",
6
+ "apexType": "Тип",
7
+ "className": "Имя класса",
8
+ "urlMapping": "Сопоставление URL",
9
+ "httpMethod": "HTTP-метод",
10
+ "code": "Код Apex"
11
+ },
12
+ "toggles": {
13
+ "validateInput": "Проверить вход",
14
+ "validateOutput": "Проверить выход",
15
+ "errorPort": "Порт ошибки",
16
+ "completePort": "Порт завершения",
17
+ "statusPort": "Порт статуса"
18
+ },
19
+ "$schema": "https://unpkg.com/@bonsae/nrg/schemas/labels.schema.json",
20
+ "label": "Apex Code",
21
+ "description": "Развертывает и выполняет пользовательский код Apex в организации Salesforce. Поддерживает типы Invocable и REST.",
22
+ "inputLabels": "Вход",
23
+ "outputLabels": [
24
+ "Ответ"
25
+ ],
26
+ "input": {
27
+ "payload": "Входные данные, передаваемые методу Apex в виде строки JSON"
28
+ },
29
+ "outputs": [
30
+ {
31
+ "payload": "Ответ выполнения Apex"
32
+ }
33
+ ]
34
+ },
35
+ "salesforce-apex-invocation": {
36
+ "configs": {
37
+ "name": "Имя",
38
+ "connection": "Подключение",
39
+ "apexType": "Тип",
6
40
  "method": "Метод",
7
- "path": "Путь"
41
+ "path": "Конечная точка",
42
+ "actionName": "Действие"
8
43
  },
9
44
  "toggles": {
10
45
  "validateInput": "Проверить вход",
@@ -14,28 +49,34 @@
14
49
  "statusPort": "Порт статуса"
15
50
  },
16
51
  "$schema": "https://unpkg.com/@bonsae/nrg/schemas/labels.schema.json",
17
- "label": "Apex",
18
- "description": "Вызывает конечную точку Salesforce Apex REST.",
52
+ "label": "Apex Invocation",
53
+ "description": "Вызывает существующие конечные точки Apex REST или Invocable Actions в организации Salesforce.",
19
54
  "inputLabels": "Запрос",
20
55
  "outputLabels": [
21
56
  "Ответ"
22
57
  ],
23
58
  "input": {
24
- "payload": "Тело запроса"
59
+ "payload": "Тело запроса для POST/PUT/PATCH, или игнорируется для GET/DELETE"
25
60
  },
26
61
  "outputs": [
27
62
  {
28
- "payload": "Ответ Apex"
63
+ "payload": "Ответ конечной точки Apex"
29
64
  }
30
65
  ]
31
66
  },
32
67
  "salesforce-bulk": {
33
68
  "configs": {
34
69
  "name": "Имя",
35
- "connection": "Connection",
70
+ "connection": "Подключение",
36
71
  "operation": "Операция",
37
72
  "sObjectType": "Тип SObject",
38
- "externalIdField": "Поле внешнего ID"
73
+ "query": "SOQL-запрос",
74
+ "externalIdField": "Поле внешнего ID",
75
+ "assignmentRuleId": "ID правила назначения",
76
+ "columnDelimiter": "Разделитель столбцов",
77
+ "lineEnding": "Конец строки",
78
+ "pollInterval": "Интервал опроса (мс)",
79
+ "pollTimeout": "Тайм-аут опроса (мс)"
39
80
  },
40
81
  "toggles": {
41
82
  "validateInput": "Проверить вход",
@@ -53,11 +94,11 @@
53
94
  "Задание Завершено"
54
95
  ],
55
96
  "input": {
56
- "payload": "Массив записей или SOQL-запрос"
97
+ "payload": "Массив записей, строка CSV, читаемый поток (загрузка) или триггер (запрос)"
57
98
  },
58
99
  "outputs": [
59
100
  {
60
- "payload": "Результаты массовой операции"
101
+ "payload": "Запрос: отдельная запись. Загрузка: { successfulResults, failedResults, unprocessedRecords }"
61
102
  }
62
103
  ]
63
104
  },
@@ -88,7 +129,7 @@
88
129
  "salesforce-describe": {
89
130
  "configs": {
90
131
  "name": "Имя",
91
- "connection": "Connection",
132
+ "connection": "Подключение",
92
133
  "sObjectType": "Тип SObject"
93
134
  },
94
135
  "toggles": {
@@ -106,21 +147,22 @@
106
147
  "Метаданные SObject"
107
148
  ],
108
149
  "input": {
109
- "payload": "Входные данные"
150
+ "payload": "API-имя SObject (переопределяет конфигурацию, если указано)"
110
151
  },
111
152
  "outputs": [
112
153
  {
113
- "payload": "Метаданные описания SObject"
154
+ "payload": "Результат описания SObject с полями, дочерними связями и информацией о типах записей"
114
155
  }
115
156
  ]
116
157
  },
117
158
  "salesforce-dml": {
118
159
  "configs": {
119
160
  "name": "Имя",
120
- "connection": "Connection",
161
+ "connection": "Подключение",
121
162
  "operation": "Операция",
122
163
  "sObjectType": "Тип SObject",
123
- "externalIdField": "Поле внешнего ID"
164
+ "externalIdField": "Поле внешнего ID",
165
+ "record": "Запись"
124
166
  },
125
167
  "toggles": {
126
168
  "validateInput": "Проверить вход",
@@ -148,7 +190,7 @@
148
190
  "salesforce-soql": {
149
191
  "configs": {
150
192
  "name": "Имя",
151
- "connection": "Connection",
193
+ "connection": "Подключение",
152
194
  "query": "Запрос"
153
195
  },
154
196
  "toggles": {
@@ -179,7 +221,7 @@
179
221
  "salesforce-streaming": {
180
222
  "configs": {
181
223
  "name": "Имя",
182
- "connection": "Connection",
224
+ "connection": "Подключение",
183
225
  "channelName": "Канал",
184
226
  "subscribeType": "Подписаться с",
185
227
  "replayId": "ID воспроизведения",
@@ -32,8 +32,11 @@
32
32
  <table width="100%" style="min-width:500px">
33
33
  <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th>默认值</th><th style="width:35%">描述</th></tr></thead>
34
34
  <tbody>
35
- <tr><td>Connection</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>是</td><td></td><td>Reference to salesforce-connection</td></tr>
35
+ <tr><td>连接</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>是</td><td></td><td>Reference to salesforce-connection</td></tr>
36
36
  <tr><td>查询</td><td>query</td><td>TypedInput</td><td>是</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
37
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
38
+ <tr><td></td><td>completePort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
39
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
37
40
  </tbody>
38
41
  </table>
39
42
  </div>
@@ -67,14 +70,14 @@
67
70
  <table width="100%" style="min-width:500px">
68
71
  <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th>默认值</th><th style="width:35%">描述</th></tr></thead>
69
72
  <tbody>
70
- <tr><td>Connection</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>是</td><td></td><td>Reference to salesforce-connection</td></tr>
73
+ <tr><td>连接</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>是</td><td></td><td>Reference to salesforce-connection</td></tr>
71
74
  <tr><td>操作</td><td>operation</td><td></td><td>是</td><td><code>"create"</code></td><td></td></tr>
72
75
  <tr><td>SObject类型</td><td>sObjectType</td><td>TypedInput</td><td>是</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
73
- <tr><td></td><td>record</td><td>TypedInput</td><td>是</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
76
+ <tr><td>记录</td><td>record</td><td>TypedInput</td><td>是</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
74
77
  <tr><td>外部ID字段</td><td>externalIdField</td><td>string</td><td>否</td><td><code>""</code></td><td></td></tr>
75
- <tr><td></td><td>emitError</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
76
- <tr><td></td><td>emitComplete</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
77
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
78
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
79
+ <tr><td></td><td>completePort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
80
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
78
81
  </tbody>
79
82
  </table>
80
83
  </div>
@@ -106,18 +109,19 @@
106
109
  <table width="100%" style="min-width:500px">
107
110
  <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th>默认值</th><th style="width:35%">描述</th></tr></thead>
108
111
  <tbody>
109
- <tr><td>Connection</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>是</td><td></td><td>Reference to salesforce-connection</td></tr>
112
+ <tr><td>连接</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>是</td><td></td><td>Reference to salesforce-connection</td></tr>
110
113
  <tr><td>操作</td><td>operation</td><td></td><td>是</td><td><code>"insert"</code></td><td></td></tr>
111
114
  <tr><td>SObject类型</td><td>sObjectType</td><td>TypedInput</td><td>是</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
115
+ <tr><td>SOQL查询</td><td>query</td><td>TypedInput</td><td>是</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
112
116
  <tr><td>外部ID字段</td><td>externalIdField</td><td>string</td><td>否</td><td><code>""</code></td><td></td></tr>
113
- <tr><td></td><td>assignmentRuleId</td><td>string</td><td>否</td><td><code>""</code></td><td></td></tr>
114
- <tr><td></td><td>columnDelimiter</td><td></td><td>是</td><td><code>"COMMA"</code></td><td></td></tr>
115
- <tr><td></td><td>lineEnding</td><td></td><td>是</td><td><code>"LF"</code></td><td></td></tr>
116
- <tr><td></td><td>pollInterval</td><td>number [min: 1000]</td><td>是</td><td><code>5000</code></td><td></td></tr>
117
- <tr><td></td><td>pollTimeout</td><td>number [min: 5000]</td><td>是</td><td><code>60000</code></td><td></td></tr>
118
- <tr><td></td><td>emitError</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
119
- <tr><td></td><td>emitComplete</td><td>boolean</td><td>是</td><td><code>true</code></td><td></td></tr>
120
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
117
+ <tr><td>分配规则ID</td><td>assignmentRuleId</td><td>string</td><td>否</td><td><code>""</code></td><td></td></tr>
118
+ <tr><td>列分隔符</td><td>columnDelimiter</td><td></td><td>是</td><td><code>"COMMA"</code></td><td></td></tr>
119
+ <tr><td>行结束符</td><td>lineEnding</td><td></td><td>是</td><td><code>"LF"</code></td><td></td></tr>
120
+ <tr><td>轮询间隔 (ms)</td><td>pollInterval</td><td>number [min: 1000]</td><td>是</td><td><code>5000</code></td><td></td></tr>
121
+ <tr><td>轮询超时 (ms)</td><td>pollTimeout</td><td>number [min: 5000]</td><td>是</td><td><code>60000</code></td><td></td></tr>
122
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
123
+ <tr><td></td><td>completePort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
124
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
121
125
  </tbody>
122
126
  </table>
123
127
  </div>
@@ -127,7 +131,17 @@
127
131
  <table width="100%" style="min-width:500px">
128
132
  <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th style="width:35%">描述</th></tr></thead>
129
133
  <tbody>
130
- <tr><td>记录数组或SOQL查询</td><td>payload</td><td></td><td>是</td><td></td></tr>
134
+ <tr><td>记录数组、CSV字符串、可读流(摄取)或触发器(查询)</td><td>payload</td><td></td><td>是</td><td>Records array, CSV string, readable stream (ingest) or SOQL string (query)</td></tr>
135
+ </tbody>
136
+ </table>
137
+ </div>
138
+
139
+ <h3>输出</h3>
140
+ <div style="overflow-x:auto">
141
+ <table width="100%" style="min-width:500px">
142
+ <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th style="width:35%">描述</th></tr></thead>
143
+ <tbody>
144
+ <tr><td>查询:单条记录。摄取:{ successfulResults, failedResults, unprocessedRecords }</td><td>payload</td><td></td><td>是</td><td>Query: individual record. Ingest: { successfulResults, failedResults, unprocessedRecords }</td></tr>
131
145
  </tbody>
132
146
  </table>
133
147
  </div>
@@ -139,11 +153,11 @@
139
153
  <table width="100%" style="min-width:500px">
140
154
  <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th>默认值</th><th style="width:35%">描述</th></tr></thead>
141
155
  <tbody>
142
- <tr><td>Connection</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>是</td><td></td><td>Reference to salesforce-connection</td></tr>
156
+ <tr><td>连接</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>是</td><td></td><td>Reference to salesforce-connection</td></tr>
143
157
  <tr><td>SObject类型</td><td>sObjectType</td><td>TypedInput</td><td>是</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
144
- <tr><td></td><td>emitError</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
145
- <tr><td></td><td>emitComplete</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
146
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
158
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
159
+ <tr><td></td><td>completePort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
160
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
147
161
  </tbody>
148
162
  </table>
149
163
  </div>
@@ -153,7 +167,7 @@
153
167
  <table width="100%" style="min-width:500px">
154
168
  <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th style="width:35%">描述</th></tr></thead>
155
169
  <tbody>
156
- <tr><td>输入负载</td><td>payload</td><td></td><td>是</td><td></td></tr>
170
+ <tr><td>SObject API名称(如果提供则覆盖配置)</td><td>payload</td><td></td><td>是</td><td></td></tr>
157
171
  </tbody>
158
172
  </table>
159
173
  </div>
@@ -163,7 +177,7 @@
163
177
  <table width="100%" style="min-width:500px">
164
178
  <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th style="width:35%">描述</th></tr></thead>
165
179
  <tbody>
166
- <tr><td>SObject描述元数据</td><td>payload</td><td>object</td><td>是</td><td></td></tr>
180
+ <tr><td>SObject描述结果,包含字段、子关系和记录类型信息</td><td>payload</td><td>object</td><td>是</td><td></td></tr>
167
181
  </tbody>
168
182
  </table>
169
183
  </div>
@@ -175,13 +189,14 @@
175
189
  <table width="100%" style="min-width:500px">
176
190
  <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th>默认值</th><th style="width:35%">描述</th></tr></thead>
177
191
  <tbody>
178
- <tr><td>Connection</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>是</td><td></td><td>Reference to salesforce-connection</td></tr>
192
+ <tr><td>连接</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>是</td><td></td><td>Reference to salesforce-connection</td></tr>
179
193
  <tr><td>频道</td><td>channelName</td><td>string</td><td>是</td><td><code>""</code></td><td></td></tr>
180
194
  <tr><td>订阅起点</td><td>subscribeType</td><td></td><td>是</td><td><code>"LATEST"</code></td><td></td></tr>
181
195
  <tr><td>重播ID</td><td>replayId</td><td>string</td><td>否</td><td><code>""</code></td><td></td></tr>
182
196
  <tr><td>批次大小</td><td>numRequested</td><td>number [min: 1, max: 100]</td><td>是</td><td><code>100</code></td><td></td></tr>
183
- <tr><td></td><td>emitError</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
184
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
197
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
198
+ <tr><td></td><td>completePort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
199
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
185
200
  </tbody>
186
201
  </table>
187
202
  </div>
@@ -199,19 +214,61 @@
199
214
  </table>
200
215
  </div>
201
216
  </script>
202
- <script type="text/html" data-help-name="salesforce-apex">
203
- <p>调用Salesforce Apex REST端点。</p>
217
+ <script type="text/html" data-help-name="salesforce-apex-invocation">
218
+ <p>调用Salesforce组织中现有的Apex REST端点或Invocable Action。</p>
204
219
  <h3>属性</h3>
205
220
  <div style="overflow-x:auto">
206
221
  <table width="100%" style="min-width:500px">
207
222
  <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th>默认值</th><th style="width:35%">描述</th></tr></thead>
208
223
  <tbody>
209
- <tr><td>Connection</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>是</td><td></td><td>Reference to salesforce-connection</td></tr>
224
+ <tr><td>连接</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>是</td><td></td><td>Reference to salesforce-connection</td></tr>
225
+ <tr><td>类型</td><td>apexType</td><td></td><td>是</td><td><code>"rest"</code></td><td></td></tr>
210
226
  <tr><td>方法</td><td>method</td><td></td><td>是</td><td><code>"POST"</code></td><td></td></tr>
211
- <tr><td>路径</td><td>path</td><td>TypedInput</td><td>是</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
212
- <tr><td></td><td>emitError</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
213
- <tr><td></td><td>emitComplete</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
214
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
227
+ <tr><td>端点</td><td>path</td><td>TypedInput</td><td>是</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
228
+ <tr><td>操作</td><td>actionName</td><td>string</td><td>是</td><td><code>""</code></td><td></td></tr>
229
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
230
+ <tr><td></td><td>completePort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
231
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
232
+ </tbody>
233
+ </table>
234
+ </div>
235
+
236
+ <h3>输入</h3>
237
+ <div style="overflow-x:auto">
238
+ <table width="100%" style="min-width:500px">
239
+ <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th style="width:35%">描述</th></tr></thead>
240
+ <tbody>
241
+ <tr><td>POST/PUT/PATCH的请求正文,GET/DELETE时忽略</td><td>payload</td><td></td><td>是</td><td></td></tr>
242
+ </tbody>
243
+ </table>
244
+ </div>
245
+
246
+ <h3>输出</h3>
247
+ <div style="overflow-x:auto">
248
+ <table width="100%" style="min-width:500px">
249
+ <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th style="width:35%">描述</th></tr></thead>
250
+ <tbody>
251
+ <tr><td>Apex端点响应</td><td>payload</td><td></td><td>是</td><td></td></tr>
252
+ </tbody>
253
+ </table>
254
+ </div>
255
+ </script>
256
+ <script type="text/html" data-help-name="salesforce-apex-code">
257
+ <p>在Salesforce组织上部署并执行自定义Apex代码。支持Invocable和REST类型。</p>
258
+ <h3>属性</h3>
259
+ <div style="overflow-x:auto">
260
+ <table width="100%" style="min-width:500px">
261
+ <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th>默认值</th><th style="width:35%">描述</th></tr></thead>
262
+ <tbody>
263
+ <tr><td>连接</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>是</td><td></td><td>Reference to salesforce-connection</td></tr>
264
+ <tr><td>类型</td><td>apexType</td><td></td><td>是</td><td><code>"invocable"</code></td><td></td></tr>
265
+ <tr><td>类名</td><td>className</td><td>string</td><td>是</td><td><code>""</code></td><td></td></tr>
266
+ <tr><td>URL映射</td><td>urlMapping</td><td>string</td><td>是</td><td><code>""</code></td><td></td></tr>
267
+ <tr><td>HTTP 方法</td><td>httpMethod</td><td></td><td>是</td><td><code>"HttpPost"</code></td><td></td></tr>
268
+ <tr><td>Apex代码</td><td>code</td><td>string</td><td>是</td><td><code>""</code></td><td></td></tr>
269
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
270
+ <tr><td></td><td>completePort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
271
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>是</td><td><code>false</code></td><td></td></tr>
215
272
  </tbody>
216
273
  </table>
217
274
  </div>
@@ -221,7 +278,7 @@
221
278
  <table width="100%" style="min-width:500px">
222
279
  <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th style="width:35%">描述</th></tr></thead>
223
280
  <tbody>
224
- <tr><td>请求正文</td><td>payload</td><td></td><td>是</td><td></td></tr>
281
+ <tr><td>以JSON字符串形式传递给Apex方法的输入数据</td><td>payload</td><td></td><td>是</td><td></td></tr>
225
282
  </tbody>
226
283
  </table>
227
284
  </div>
@@ -231,7 +288,7 @@
231
288
  <table width="100%" style="min-width:500px">
232
289
  <thead><tr><th>标签</th><th>属性</th><th>类型</th><th>必填</th><th style="width:35%">描述</th></tr></thead>
233
290
  <tbody>
234
- <tr><td>Apex响应</td><td>payload</td><td></td><td>是</td><td></td></tr>
291
+ <tr><td>Apex执行响应</td><td>payload</td><td></td><td>是</td><td></td></tr>
235
292
  </tbody>
236
293
  </table>
237
294
  </div>
@@ -1,10 +1,45 @@
1
1
  {
2
- "salesforce-apex": {
2
+ "salesforce-apex-code": {
3
3
  "configs": {
4
4
  "name": "名称",
5
- "connection": "Connection",
5
+ "connection": "连接",
6
+ "apexType": "类型",
7
+ "className": "类名",
8
+ "urlMapping": "URL映射",
9
+ "httpMethod": "HTTP 方法",
10
+ "code": "Apex代码"
11
+ },
12
+ "toggles": {
13
+ "validateInput": "验证输入",
14
+ "validateOutput": "验证输出",
15
+ "errorPort": "错误端口",
16
+ "completePort": "完成端口",
17
+ "statusPort": "状态端口"
18
+ },
19
+ "$schema": "https://unpkg.com/@bonsae/nrg/schemas/labels.schema.json",
20
+ "label": "Apex Code",
21
+ "description": "在Salesforce组织上部署并执行自定义Apex代码。支持Invocable和REST类型。",
22
+ "inputLabels": "输入",
23
+ "outputLabels": [
24
+ "响应"
25
+ ],
26
+ "input": {
27
+ "payload": "以JSON字符串形式传递给Apex方法的输入数据"
28
+ },
29
+ "outputs": [
30
+ {
31
+ "payload": "Apex执行响应"
32
+ }
33
+ ]
34
+ },
35
+ "salesforce-apex-invocation": {
36
+ "configs": {
37
+ "name": "名称",
38
+ "connection": "连接",
39
+ "apexType": "类型",
6
40
  "method": "方法",
7
- "path": "路径"
41
+ "path": "端点",
42
+ "actionName": "操作"
8
43
  },
9
44
  "toggles": {
10
45
  "validateInput": "验证输入",
@@ -14,28 +49,34 @@
14
49
  "statusPort": "状态端口"
15
50
  },
16
51
  "$schema": "https://unpkg.com/@bonsae/nrg/schemas/labels.schema.json",
17
- "label": "Apex",
18
- "description": "调用Salesforce Apex REST端点。",
52
+ "label": "Apex Invocation",
53
+ "description": "调用Salesforce组织中现有的Apex REST端点或Invocable Action。",
19
54
  "inputLabels": "请求",
20
55
  "outputLabels": [
21
56
  "响应"
22
57
  ],
23
58
  "input": {
24
- "payload": "请求正文"
59
+ "payload": "POST/PUT/PATCH的请求正文,GET/DELETE时忽略"
25
60
  },
26
61
  "outputs": [
27
62
  {
28
- "payload": "Apex响应"
63
+ "payload": "Apex端点响应"
29
64
  }
30
65
  ]
31
66
  },
32
67
  "salesforce-bulk": {
33
68
  "configs": {
34
69
  "name": "名称",
35
- "connection": "Connection",
70
+ "connection": "连接",
36
71
  "operation": "操作",
37
72
  "sObjectType": "SObject类型",
38
- "externalIdField": "外部ID字段"
73
+ "query": "SOQL查询",
74
+ "externalIdField": "外部ID字段",
75
+ "assignmentRuleId": "分配规则ID",
76
+ "columnDelimiter": "列分隔符",
77
+ "lineEnding": "行结束符",
78
+ "pollInterval": "轮询间隔 (ms)",
79
+ "pollTimeout": "轮询超时 (ms)"
39
80
  },
40
81
  "toggles": {
41
82
  "validateInput": "验证输入",
@@ -53,11 +94,11 @@
53
94
  "作业完成"
54
95
  ],
55
96
  "input": {
56
- "payload": "记录数组或SOQL查询"
97
+ "payload": "记录数组、CSV字符串、可读流(摄取)或触发器(查询)"
57
98
  },
58
99
  "outputs": [
59
100
  {
60
- "payload": "批量操作结果"
101
+ "payload": "查询:单条记录。摄取:{ successfulResults, failedResults, unprocessedRecords }"
61
102
  }
62
103
  ]
63
104
  },
@@ -88,7 +129,7 @@
88
129
  "salesforce-describe": {
89
130
  "configs": {
90
131
  "name": "名称",
91
- "connection": "Connection",
132
+ "connection": "连接",
92
133
  "sObjectType": "SObject类型"
93
134
  },
94
135
  "toggles": {
@@ -106,21 +147,22 @@
106
147
  "SObject元数据"
107
148
  ],
108
149
  "input": {
109
- "payload": "输入负载"
150
+ "payload": "SObject API名称(如果提供则覆盖配置)"
110
151
  },
111
152
  "outputs": [
112
153
  {
113
- "payload": "SObject描述元数据"
154
+ "payload": "SObject描述结果,包含字段、子关系和记录类型信息"
114
155
  }
115
156
  ]
116
157
  },
117
158
  "salesforce-dml": {
118
159
  "configs": {
119
160
  "name": "名称",
120
- "connection": "Connection",
161
+ "connection": "连接",
121
162
  "operation": "操作",
122
163
  "sObjectType": "SObject类型",
123
- "externalIdField": "外部ID字段"
164
+ "externalIdField": "外部ID字段",
165
+ "record": "记录"
124
166
  },
125
167
  "toggles": {
126
168
  "validateInput": "验证输入",
@@ -148,7 +190,7 @@
148
190
  "salesforce-soql": {
149
191
  "configs": {
150
192
  "name": "名称",
151
- "connection": "Connection",
193
+ "connection": "连接",
152
194
  "query": "查询"
153
195
  },
154
196
  "toggles": {
@@ -179,7 +221,7 @@
179
221
  "salesforce-streaming": {
180
222
  "configs": {
181
223
  "name": "名称",
182
- "connection": "Connection",
224
+ "connection": "连接",
183
225
  "channelName": "频道",
184
226
  "subscribeType": "订阅起点",
185
227
  "replayId": "重播ID",