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

IN Migration Kafka примеры

011 012

Пример мигрирование поле

013 014
015

Термин: Бизнес-объект - БО

016 017

В дальнейшем уроке буду использовать данный термин для 018 обозначения Бизнес-объекта

019 020
021

Давайте создадим бизнес-объект Клиент с полями ИИН, ИМЯ, 022 ФАМИЛИЯ. ИИН - уникальное поле.

023 024

Для начало надо нажать на карандашик которая находиться в правом 025 верхнем углу (серый карандаш).

026 027

businessModeAdmin

029 030

После нажатия карандаш становиться синим, это означает что вы 031 находитесь в режиме редактирования, данном режиме можно создать 032 бизнес объект

033 034

pencilBlue

036 037

Убедившись что карандаш стал синим, нажимаем на зелёный крест, 038 который добавляет новый бизнес объекты и прочее

039 040

adminModeAddPlusSign

042 043

Появиться окошка и нажимаем на Бизнес-объект

044 045

adminModeAddBO

047 048

Появиться пустой БО

049 050

emptyBo

052 053

Давайте переименуем название БО на Клиент-а, для этого надо 054 нажать на Наименование

055 056

emptyClientBo

058 059

Осталось добавить поля как мы обговаривали ИИН, ИМЯ, ФАМИЛИЯ 060 давайте добавим. В Элементах-страницы находиться поля Число, 061 двойным нажатием на данное поле оно зарегистрирует в БО.

062 063

numberField

065 066

Результат:

067 068

numberFieldInBo

070 071

Надо переименовать название добавленного поле на ИИН и 072 сохранить.

073 074

iinField

076 077

Теперь добавим 2 тестовых поле для Имени и Фамилий.

078 079

twoTextField

081 082

Надо переименовать название добавленных полей на ИМЯ, ФАМИЛИЯ и 083 сохранить.

084 085

nameAndSurnameField

087 088

Сохраняем изменения нажатием на кнопку СОХРАНИТЬ.

089 090

boWithInnNameSurname

092 093

После надо изменить код БО, и полей.

094 095

С начало изменим код самого БО, для этого надо нажать на 096 шестиугольник которая находиться в правом верхнем углу.

097 098

shestiugolnik

100 101

Проставляем код который мы хотим, допустим будет "Client".

102 103

shestiugolnikSave

105 106

Загорелась зеленая кнопка СОХРАНИТЬ и нажимаем на него.

107 108

На этом моменте мы изменили код у БО на "Client".

109 110

Осталось изменить коды полей данного БО, у каждого поле есть 111 свой настройки находиться правее у поля.

112 113

Нажимаем на шестерёнку.

114 115

iinFieldSettings

117 118

После нажатия должна появиться окошка настроек.

119 120

fieldSettings

122 123

Далее надо кликнуть изменить код.

124 125

fieldSettingsChangeCode

128 129

Код данного поле "IIN" такой код поля нас вполне устраивает.

130 131

Точно также надо проделать с остальными полями.

132 133

Давайте поменяем код у поля ИМЯ, для этого также нажимаем на 134 шестерёнку у плоя ИМЯ затем кликаем на "Изменить код".

135 136

fieldSettingsChangeCode2

139 140

Код данного поле "IMYa" такой код поля нас не устраивает, меняем 141 на "NAME"".

142 143

fieldSettingChangeCodeChanged1

146 147

Изменили теперь сохраняем.

148 149

Осталось только поле ФАМИЛИЯ давайте приступим.

150 151

Для этого точно так же как и у остальных полей нажимаем на 152 шестерёнку у поля ФАМИЛИЯ, далее кликаем изменить код.

153 154

fieldCodeSettingsChangeCode3

157 158

Код данного поле "FAMILIYA" такой код поля нас не устраивает, 159 меняем на "LASTNAME".

160 161

fieldSettingChangeCodeChanged2

164 165

После того как изменили код на "LASTNAME" нажимаем 166 сохранить.

167 168

Поздравляю мы полностью подготовили БО Клиент для миграций через 169 кафку

170 171
172

Давайте сформируем JSON для БО Клиент.

173 174

Как мы уже знаем,

175 176

У БО Клиент код равен "Client",

177 178

Код поля ИИН равен "IIN",

179 180

Код поля ИМЯ равен "NAME",

181 182

Код поля ФАМИЛИЯ равен "LASTNAME".

183 184
185   в recordId     передаем рандомное значение.
186    в externalId   передаем иднетификатор из вашей системы, если таковы имеются.
187    в boCode       передаем код нашего БО которое мы определили "Client".
188  
189    в fields       имеет 2 значения "code", "apiValue".
190                   в code      передаем код поле ИМЯ, как мы уже определили код поле равен "NAME"
191                   в apiValue  передаем имя "Сергей".
192                   Так как fields это массив передаем код и значения для полей ФАМИЛИЯ и ИИН,
193                   как описано выше.
194    в state        можем прописать такие значения как "ACTUAL","REMOVED", "ARCHIVED", "TEST".
195  
196  
197  
198  
199 200

Формируем JSON.

201 202
203      {"recordId": "random-value",
204       "externalId": "bfsseVCjGC225bM@",
205       "boCode": "Clinet",
206       "fields": [
207          {
208           "code": "NAME",
209           "apiValue": "Сергей"
210          },
211          {
212             "code" : "LASTNAME",
213             "apiValue" : "Иванов"
214          },
215          {
216             "code" : "IIN",
217             "apiValue" : "17"
218          }
219       ],
220        "state": "ACTUAL"}
221  
222  
223  
224 225
226

Надо создать топик для кафки

227 228

Отправляем сформированный JSON в топик которую вы создали

229 230

Осталось сохранить ваш топик в настройках 231 MyBPM.

232 233

Как сохранить топики в настройках MyBPM?

234 235

1) В меню кликнуть на Настройки.

236 237

kafka_topic_list

239 240

2) Далее появиться окошка настроек.

241 242

kafka_topic_list

244 245

3) Кликнуть на IN Миграция.

246 247

kafka_topic_list

250 251

4) Заполнить поле Список топиков 252 топиками которые вы уже за ранее создали.

253 254

kafka_topic_list

257 258

5) После заполнение нажмите сохранить.

259 260

Система уже подписалась на ваши топики и готов 261 мигрировать

262 263
264

Результат, появиться новая запись Клиента с ИИН 17, 265 ИМЯ Сергей, ФАМИЛИЯ Иванов.

266 267

kafka_topic_list

269 270
271

Как мигрировать вложенный бизнес объект?

272 273

Допустим у нас есть БО Школа и Ученики. Школа может иметь много 274 учеников, получается ONE TO MANY connection.

275 276

Структура Школы (Номер, Название, Ученик)

277 278

280 281

Структура Ученика (Имя, Фамилия, Ид)

282 283

Ид уникальное поле с помощью данного поле будем мигрировать 284 учеников в БО Школу

285 286

288 289

С начало надо смигрировать ученика.

290 291

Описанном выше пример с клиентом, мы уже знаем как мигрировать 292 простые Бо здесь точно так же.

293 294

Надо получить коды полей и Бо.

295 296

Код Бо ученика я поставил - "student"

297 298

Код поле Имя - "name"

299 300

Код поле Фамилия - "surname"

301 302

Код поле Ид - "student_id"

303 304

Осталось сформировать JSON и отправить в топик миграций.

305 306
307  var jsonStudent1 = {
308      "recordId": "random-value",
309      "externalId": "7fq@eZ1kpg0iwHVV",
310      "boCode": "student",
311      "fields": [
312          {
313              "code": "name",
314              "apiValue": "Армэн"
315          },
316          {
317              "code" : "surname",
318              "apiValue" : "Турсынбек"
319          },
320          {
321              "code" : "student_id",
322              "apiValue" : "1"
323          }
324      ],
325      "state": "ACTUAL"
326  }
327  
328  var jsonStudent2 = {
329      "recordId": "random-value",
330      "externalId": "Iqn5iMZcg~M1I5o0",
331      "boCode": "student",
332      "fields": [
333          {
334              "code": "name",
335              "apiValue": "Азамат"
336          },
337          {
338              "code" : "surname",
339              "apiValue" : "Утелхан"
340          },
341          {
342              "code" : "student_id",
343              "apiValue" : "2"
344          }
345      ],
346      "state": "ACTUAL"
347  }
348  
349  
350  
351 352

Отправляем сформированный JSON в топик миграций если вы сделали 353 все правильно должно появится две инстанций ученика.

354 355

357 358
359

Далее надо смигрировать школу, формируем JSON.

360 361

Код Бо Школа - "school"

362 363

Код поле Номер - "number"

364 365

Код поле Название - "name"

366 367

Код поле Ученик - "student"

368 369
370  var schoolJson = {
371      "recordId": "jklhdfsksdfjkg",
372      "externalId": "MVLFsYhLv5eVbkXE",
373      "boCode": "school",
374      "fields": [
375          {
376              "code": "number",
377              "apiValue": "133"
378          },
379          {
380              "code": "name",
381              "apiValue": "среднеобразовательная школа"
382          }
383      ],
384      "boFields": [
385          {
386              "fieldCode": "student",
387              "toBoCode": "student",
388              "toFieldCode": "student_id",
389              "apiValue": "1"
390          },
391          {
392              "fieldCode": "student",
393              "toBoCode": "student",
394              "toFieldCode": "student_id",
395              "apiValue": "2"
396          }
397      ],
398      "state": "ACTUAL"
399  }
400  
401  
402  
403 404

Результат создалось запись школы с двумя учениками.

405 406

408
409 410 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/xhtml-lat1.ent 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.startEntity(XMLEntityManager.java:1333) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.startPE(XMLDTDScannerImpl.java:732) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.skipSeparator(XMLDTDScannerImpl.java:2101) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDecls(XMLDTDScannerImpl.java:2064) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDTDExternalSubset(XMLDTDScannerImpl.java:299) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1165) 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