010
IN Migration Kafka концепт
011
012
Каким образом производиться миграций через кафку?
013
014
Миграция через кафку производиться таким способом, что в кафке
015 создаётся топик с каким-то названием которого не встречается в
016 кафке на данный момент, далее в этот топик скидываются данные
017 различных Бизнес Объектов(БО) в виде строк, которые содержит в себе
018 JSON определенного ниже описанного формата, дальше этот топик
019 регистрируется в системе и после регистраций в системе, система
020 обращается в данный топик и начинает загружать данные в себе базу
021 данных.
022
023
Здесь описано
024 это детальней.
025
026
Структура JSON, каким оно должно быть.
027
028
Структура JSON должен соответствовать ниже приведённому
029 примеру.
030
031
032 {
033 "recordId": "12345",
034 "externalId": "bfsseVCjGC225bM@",
035 "id": "dgL9~4keReK7Z1qi",
036 "boCode": "BO",
037 "fields": [
038 {
039 "code": "textField",
040 "apiValue": "someValue"
041 },
042 {
043 "code": "textField2",
044 "apiValue": "someValue2"
045 }
046 ],
047 "boFields": [
048 {
049 "fieldCode": "boTextField",
050 "toBoCode": "BO2",
051 "toFieldCode": "textFieldOfBO2",
052 "apiValue": "015252634519"
053 },
054 {
055 "fieldCode": "boTextField",
056 "boiInput": {
057 "recordId": "12345",
058 "externalId": "bfsseVCjGC225bM@",
059 "id": "dgL9~4keReK7Z1qi",
060 "boCode": "BO",
061 "fields": [
062 {
063 "code": "textField",
064 "apiValue": "someValue"
065 },
066 {
067 "code": "textField2",
068 "apiValue": "someValue2"
069 }
070 ],
071 "boFields": {...}
072 }
073 }
074 ],
075 "state": "ACTUAL"
076 }
077
078
079
080
081
082
083
Подробнее о полях
084
085
086 recordId:Строка - Идентификатор данной записи, он должен быть уникальным в рамках всего топика
087 он используется для того чтобы запись обрабатывалась всего одни раз его затем,
088 система его запоминает и при повторной записи система его игнорирует.
089
090 id:Строка - Идентификатор инстанции бизнес-объекта внутренний для платформы MyBPM. Если он указан, то
091 ищется запись по этому идентификатору. Если находиться, то происходит обновление данных.
092 Иначе генерируется ошибка. Если этот идентификатор не указан, то используется идентификатор
093 externalId
094
095 externalId:Строка - Идентификатор инстанции БО, который используется во внешней системе (которая поставляет данные).
096 Если внутренний идентификатор не используется, то используется данный идентификатор для поиска
097 инстанции. В таком случае если инстанция находиться, то происходит обновление данных. Если не
098 находиться, то создаётся новая инстанция.
099
100 boCode:Строка - Код бизнес объекта в которой, должны записаться данные.
101
102 fields:Массив - Поля со значениями для мигрированния .
103 code:Строка - Код поля в бизнес объекте .
104 apiValue:Строка - Значение из REST API.
105
106 boFields:Массив - Бизнес-поля для миграции вложенных бизнес-объектов
107 Стандартный подход:{
108 fieldCode:Строка - Код поля, который принадлежит с кодом boCode.
109 toBoCode:Строка - Код бизнес объекта на которое указывает данное поле.
110 toFieldCode:Строка - Код поля у бизнес объекта toBoCode. Это поле должно быть уникальное
111 apiValue:Строка - Значение поле toFieldCode у бизнес объекта с кодом toBoCode.
112 }
113 Рекурсивный подход:{
114 fieldCode:Строка - Код поля, который принадлежит с кодом boCode.
115 boiInput:Строка - вложенный JSON другого BoiInput.
116 }
117
118 state - Состояние записи могут быть (ACTUAL, REMOVED, ARCHIVED, TEST), может отсутствовать,
119 если записи нету то state станет ACTUAL, а если запись есть то ничего не измениться
120 ACTUAL:Строка - Это актуальная запись которая доступна для работы.
121 REMOVED:Строка - Удалённая запись.
122 ARCHIVED:Строка - Архивированная запись.
123 TEST:Строка - Запись предназначена для режима тестирования
124
125
126
127
128
129
137
138
139
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.GeneratedMethodAccessor9.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