java.lang.RuntimeException: wXb6Vnl31u :: Ошибка для HTML= 001 003 004 005 006 007 008 009
010

Создание или изменение инстанции бизнес-объекта 011 (БО)

012 013

Предусловие: У вас должно иметься БО (Что это такое и как 015 создать?)

016 017

Запрос (Request):

018 019
020  POST /api/v1/boi/upsert
021  Content-Type: application/json
022  API-TOKEN/TOKEN: your_token 
023  
024  
025 026 047 048

Входные данные:

049 050
051  {
052    "boCode": "код бизнес-объекта",
053    "boiId": "Идентификатор инстанции бизнес-объекта",
054    "fieldValues": {
055      "код поля 1": "новое значение 1",
056      "код поля 2": "новое значение 2",
057      "код поля 3": "новое значение 3"
058    },
059    "removeAfter": true,
060    "fieldRefAdd": [{
061      "fieldCode": "код поля 4",
062      "boCode": "код БО который содержит в себе поле с кодом поля 4",
063      "fieldRefUniqCode": "код уникального поля 1",
064      "apiValues": [
065        "значение 1 уникального поля 1",
066        "значение 2 уникального поля 1"
067      ]
068    }, ...],
069    "fieldRefRemove": [{
070      "fieldCode": "код поля 4",
071      "boCode": "код БО который содержит в себе поле с кодом поля 4",
072      "fieldRefUniqCode": "код уникального поля 1",
073      "apiValues": [
074        "значение 3 уникального поля 1",
075        "значение 4 уникального поля 1"
076      ]
077    }, ...]
078  }
079  
080  
081 082

ВНИМАНИЕ! Поле boiId можно не 083 указывать, однако если вы укажите, то отработает как UPDATE и если 084 такого boiId не будет, то выйдет ошибка. Поэтому у 085 бизнес-объекта должно быть уникальное поле, тогда введенное 086 значение если будет существовать обновиться, если нет добавиться. 087 Дополнительно, если у вас нет уникального поля в БО, то будет 088 отрабатывать как CREATE.

089 090 094 095 096 097 098 099 100 101 102 103 104 105 106 109 110 111 112 113 116 117 118 119 120 123 124 125 126 127 130 131 132 133 134 137 138 139 140 141 143 144 145 146 147 149 150 151 152 153 155 156 157 158 159 163 164 165 166 167 170 171 172 173 174 176 177 178
Атрибут входного JSONОписание
boCode(String): Код бизнес-объекта. Как получить 108 boCode?
boiId(String): Идентификатор инстанции 114 бизнес-объекта. Как получить 115 boiId?
fieldValues.key(String): Код определенного поля внутри 121 БО. Как получить Код 122 Поля?
fieldValues.value(String): Значение определенного поля 128 внутри БО. Какие значения для 129 каких полей надо вводить?
removeAfter(Boolean): Указывает что будет раньше 135 добавление или удаление новых инстанции в поле БО. По умолчанию 136 false значит удаление потом добавление.
fieldRefAdd(Массив объектов): Для добавления 142 ссылок в поле БО по значениям уникальных полей вложенного БО
fieldRefRemove(Массив объектов): Для удаления ссылок 148 из поля БО по значениям уникальных полей вложенного БО
fieldRefAdd.fieldCode(String): Код поля БО. Смотрите 154 выше как получить код поля?
fieldRefAdd.boCode(String): Если поле с 160 fieldCode находится внутри СО, то данное поле 161 обязательное к заполнению, так как она будет 162 показывать к какому БО относится ваше поле.
fieldRefAdd.fieldRefUniqCode(String): Код уникального поля БО на 168 которое ссылается ваше поле. Смотрите выше как получить код 169 поля?
fieldRefAdd.apiValues(Массив String): Значения уникальных 175 полей которы надо добавить. Если в fieldRefRemove, то удалить.
179 180

Примечание: Вы можете указывать несколько 181 уникальных полей одного и того же БО.

182 183

Пример:

184 185

Если указывать boiId, то будет работать как Update (Если указать не существующий boiId 187 выйдет ошибка):

188 189
190  {
191    "boCode": "Customer_Orders",
192    "boiId": "jJY02CrDmAQw1OMz",
193    "fieldValues": {
194      "ORDER_ID": "14",
195      "CUSTOMER_NAME": "Temirlan",
196      "ORDER_TOTAL": "123.0123",
197      "ORDER_DATE": "2023-11-23T14:30:45.123Z",
198      "ORDER_STATUS": "1wgmhNoiLSDpyXY9" // идентификатор значения из выборки
199    }
200  }
201  
202  
203 204

Если не указывать boiId, то в зависимости от значения 205 уникального поля в вашем БО будет либо Update 206 (если значение существует) либо Create (если не 207 существует):

208 209
210  {
211    "boCode": "Customer_Orders",
212    "fieldValues": {
213      "ORDER_ID": "14",
214      "CUSTOMER_NAME": "Temirlan",
215      "ORDER_TOTAL": "123.0123",
216      "ORDER_DATE": "2023-11-23T14:30:45.123Z",
217      "ORDER_STATUS": "1wgmhNoiLSDpyXY9"
218    }
219  }
220  
221  
222 223

Ответ (Response):

224 225
226  {
227    "boiId": "Идентификатор инстанции БО",
228    "boCode": "Kод БО",
229    "state": "Одно из значений: ALL, REMOVED, ARCHIVED, DEV",
230    "isTouched": "Прочитано ли текущим пользователем данная инстанция? (true/false)",
231    "fieldValues": {
232      "код поля 1": {
233        "apiValue": "значение поля 1",
234        "displayValue": "значение поля для отабражения 1",
235        "type": "Тип поля" // Подробнее о типах поля можете узнать по ссылке ниже
236      },
237      "код поля 2": {
238        "apiValue": "значение поля 2",
239        "displayValue": "значение поля для отабражения 2",
240        "type": "Тип поля" // Подробнее о типах поля можете узнать по ссылке ниже
241      },
242      "код поля 3": {
243        "apiValue": "значение поля 3",
244        "displayValue": "значение поля для отабражения 3",
245        "type": "Тип поля" // Подробнее о типах поля можете узнать по ссылке ниже
246      }
247    }
248  }
249  
250  
251 252 256 257

Значения поля state:

258 259

1) ALL - Рабочее состояние записи

260 261

2) REMOVED - Запись удалена

262 263

3) ARCHIVED - Запись в архиве

264 265

4) DEV - Запись используется для тестирования 266 процессов

267 268

Пример:

269 270
271  {
272      "boiId": "jJY02CrDmAQw1OMz",
273      "boCode": "Customer_Orders",
274      "state": "ALL",
275      "isTouched": true,
276      "fieldValues": {
277          "ORDER_ID": {
278              "apiValue": "14",
279              "displayValue": "14",
280              "type": "INPUT_NUMBER"
281          },
282          "ORDER_DATE": {
283              "apiValue": "2023-11-23T20:30:45.123+06",
284              "displayValue": "2023-11-23 20:30",
285              "type": "FULL_DATE"
286          },
287          "CUSTOMER_NAME": {
288              "apiValue": "Temirlan",
289              "displayValue": "Temirlan",
290              "type": "INPUT_TEXT"
291          },
292          "ORDER_STATUS": {
293              "apiValue": "1wgmhNoiLSDpyXY9",
294              "displayValue": "Delivered",
295              "type": "RADIO_BUTTON_GROUP"
296          },
297          "ORDER_TOTAL": {
298              "apiValue": "123.0123",
299              "displayValue": 123.0123",
300              "type": "INPUT_NUMBER"
301          }
302      }
303  }
304  
305  
306
307 308 at kz.greetgo.md_reader.util.MdUtil.xmlTextToDoc(MdUtil.java:80) at kz.greetgo.md_reader.core.MdConverter.prepareHtmlFileFrom(MdConverter.java:136) at kz.greetgo.md_reader.core.MdConverter.convert(MdConverter.java:208) at kz.greetgo.md_reader.controller.RenderController.downloadToc(RenderController.java:360) at kz.greetgo.md_reader.controller.RenderController.request(RenderController.java:108) at jdk.internal.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at kz.greetgo.md_reader.interceptors.TextReplaceFilter.doFilter(TextReplaceFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: java.io.IOException: Server returned HTTP response code: 429 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:2000) at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1397) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1363) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:257) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1152) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1040) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:943) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:542) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825) at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:247) at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:342) at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122) at kz.greetgo.md_reader.util.MdUtil.xmlTextToDoc(MdUtil.java:71) ... 48 more