ááááŤááşá¸
ááťá˝ááşááąáŹáˇáşáá˛áˇ áááşáážááĄááŻááşáá˝ááşáážáŹ ááŽáááşá¸áááŹáá˛áˇ ááááťá˝ááşá¸áá˛áˇáááŹááŤá ááąáŹááşááśáááşá¸áááşá¸áá˛áˇ á ááŤáááşá ááąáŹááşáĄá ááşá¸áĄááąá¸áá˝ááş ááťá˝ááşáŻááşáááŻáˇáĄáá˝á˛áˇáážááˇáş ááąáŤááşá¸á ááşá¸áážáŻááźáŻááŻááşáááş áááŻáĄááşááźáąáŹááşá¸ ááźáąáŹááźáŹá¸áá˛áˇááŤáááşá áá°ááááťáŹá¸ááąáŹá áá áş. ááąáŤááşá¸á ááşá¸ááźááşá¸ááźááˇáş á¤áá°ááááťáŹá¸ááąáŹá áá áşáááş ááťá˝ááşáŻááşáááŻáˇáĄáŹá¸ ááááťááąáŹáĄááŻáśá¸áážááşáá áşááŻáááŻáˇ HTTP áážáá áşáááˇáş ááąáŹááşá¸áááŻáážáŻááťáŹá¸ááᯠááąá¸áááŻáˇáááşááźá áşááźáŽá¸ áá°á¸áááşá¸ááąáŹááşáĄáąáŹááş ááťá˝ááşáŻááşáááŻáˇáááş SOAP áááşááąáˇááşáťááŻáśá áśááźááˇáş ááźááşáááşááŻáśáˇááźááşáážáŻááťáŹá¸ááᯠááąá¸áááŻáˇáááşáᯠáááŻáááŻááźááşá¸ááźá áşáááşá áĄááŹáĄáŹá¸ááŻáśá¸áááŻá¸áážááşá¸ááźáŽá¸áĄááąá¸áĄáá˝á˛ááŻáśááááşá ááŽáááą áááŻáĄááşáᏠáá˝áą á፠ááŤáááş..á
ááŻááşáááşá¸
áááşááąáŹááşáážáŻ 3 áᯠáááşááŽá¸ááŤá áááşá¸áááŻáˇáá˛ááž áááááŻáśá¸áážáŹ Database Update Service ááźá áşáááşá ááźááşááĄáá˝á˛áˇáĄá ááşá¸á áá áşááž ááąááŹáĄáá áşááťáŹá¸ááąáŹááşáážáááŹáááˇáşáĄááŤá á¤áááşááąáŹááşáážáŻáááş ááąááŹááąáˇá áşáĄáá˝ááşá¸áážá ááąááŹááᯠáĄááşááááşááŻááşáᏠáááşá¸ááᯠááąáŹááşá áá áşáááŻáˇ áá˝ážá˛ááźáąáŹááşá¸áááşáĄáá˝ááş CSV ááąáŹáşáááşááźááˇáş áááŻááşáá áşááŻááŻááşááąá¸ááŤáááşá ááŻááááááşááąáŹááşáážáŻá áĄááŻáśá¸áážááşááᯠáá˝ážá˛ááźáąáŹááşá¸ááąá¸áááˇáşáááŻááşááᯠáááşááśááážááᏠFTP áážáá áşáááˇáş áááŻááşáááŻáážáąáŹááşáážáŻáá˝ááş áááˇáşáá˝ááşá¸ááąá¸áááˇáş FTP Transport Service ááŻááąáŤáşáááşá áááááááşááąáŹááşáážáŻá ááŻáśá¸á á˝á˛áá°ááąááŹáá˝ážá˛ááźáąáŹááşá¸ááźááşá¸áááşááąáŹááşáážáŻáááş ááááážá áşááŻáážááˇáş áááźááŻááşáááşááŻááşááąáŹááşáááşá áĄáááşáá˝ááşááąáŹáşááźááŹá¸ááąáŹáááŻááşáááŻáááşááśááážááááşá áĄáááşáááˇáşááŻáśáˇááźááşáážáŻáááŻááşáááŻáá°á áááşá¸áááŻáá˝ááşá¸ááśáááş (idá ááąáŹáşááźááťááşá linkToFile áĄáá˝ááşááťáŹá¸ááᯠáĄááşááááşááŻááşáááş) áážááˇáş SOAP áááşááąáˇááşáťááŻáśá áśááźááˇáş ááŻáśáˇááźááşáážáŻááᯠááąá¸áááŻáˇáááş ááźááşáá áá áşááž ááźááşáá áá áşááśááž ááąáŹááşá¸áááŻááťááşááᯠáááşááśááážáááŤáááşá áááŻáááŻáááşáážáŹá ááźáŻáśááŻáśááŻááşááŻáśáážáŹ áĄáąáŹááşááŤáĄáááŻááşá¸ááźá áşáááş- ááááááşááąáŹááşáážáŻáážá áşááŻáááş áĄááşááááşáĄáá˝ááş ááąááŹááąáŹááşáážááážáᏠáááşá¸áááŻáˇáááŻááşáááşá¸ááᯠá áááşáááşá áááááááşááąáŹááşáážáŻáááş áá áşáááá áşááťážááş ááąááŹááąáŹááşá¸áááŻáážáŻ 1000 áááˇáş ááááşá¸áĄááťááşáĄáááş ááŻáśá¸á á˝á˛áá°ááťáŹá¸á á˝áŹáážáááąáŹááźáąáŹááˇáş áĄáááşáááźááşáĄááŻááşááŻááşááŤáááşá áááşááąáŹááşáážáŻááťáŹá¸áááş áĄáááşáááźááşááážááááŻááşááźáŽá¸ áááşá¸áááŻáˇáááźá áşáááşááťáŹá¸áááş á ááşá¸áááşáážáŻá áááŻááşááźáážáŻá áĄááźááŻááŻááşááŻááşáážáŻáážááˇáş ááŻááşááŻááşááťáŹá¸áá˛áˇáááŻáˇ ááá°ááŽááąáŹáááşáááşá¸ááťááşááťáŹá¸áá˝ááş áááşáážáááŤáááşá áĄáąáŹááşáá˝ááş á¤áááşááąáŹááşáážáŻááťáŹá¸ áááşáááŻáˇáĄááŻááşááŻááşááŻáśá ááŻáśááźá áşáááşá ááááŻáĄááşááąáŹ áážáŻááşáá˝áąá¸áážáŻááťáŹá¸ááᯠáážáąáŹááşáážáŹá¸áááş áĄááťááŻáˇááąáŹáĄááąá¸á áááşáĄááťááşáĄáááşááťáŹá¸ááᯠáááŻá¸áážááşá¸áĄáąáŹááşááźáŻááŻááşááŹá¸ááźáąáŹááşá¸ ááťááşááťááşá¸áážááşá¸ááźááŤáá áąá

Technical Deepening á
ááźáżááŹáĄáá˝ááş áĄááźáąáá áşááŻááᯠá áŽá ááşááąáŹáĄááŤáá˝ááş Spring frameworká Nginx balancerá Postgres database áážááˇáş áĄááźáŹá¸ááąáŹ áááşá¸áááŹáááŻááşá¸áááŻááşááŹááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻá Java áá˝ááş application ááťáŹá¸ááźáŻááŻááşáááş ááŻáśá¸ááźááşáá˛áˇáááşá áááşá¸áááŹáááŻááşááŹááźáąáážááşá¸ááťááşáá áşááŻááᯠááŽáá˝ááşááťáááşá ááťá˝ááşáŻááşáááŻáˇáĄáŹá¸ á¤ááźáżááŹáááŻááźáąáážááşá¸áááş áĄááźáŹá¸áááşá¸áááşá¸ááťáŹá¸ááᯠáááˇáşáá˝ááşá¸á ááşá¸á áŹá¸áááŻááşá áąááąáŹááźáąáŹááˇáş ááťá˝ááşáŻááşáááŻáˇááĄááźááˇáşááťáŹá¸áááş áĄááťááŻáˇááąáŹá ááşáááŻááşá¸ááťáŹá¸áá˝ááş ááąááşáááşááąáŹ Apache NIFI áááşá¸áááŹááᯠá ááŻááşááźááˇáşááááŤáááşá ááŽáááşá¸áááŹá ááťá˝ááşááąáŹáşáááŻáˇááᯠááŽáááşááąáŹááşáážáŻ 3 ááŻááᯠáááááźáŻááá áąáááşáááŻáˇ ááťááşááťááşá¸ááźáąáŹáááşá á¤ááąáŹááşá¸ááŤá¸áááş áááŻááşáááşáá°áááŻáˇááąáŹááşááąá¸áááşááąáŹááşáážáŻá áá˝áśáˇááźááŻá¸áááŻá¸áááşáážáŻáážááˇáş á áŹá¸ááŻáśá¸áá°ááśáááŻáˇ ááąááŹáá˝ážá˛ááźáąáŹááşá¸ááźááşá¸áááşááąáŹááşáážáŻááᯠááąáŹáşááźáááşááźá áşááąáŹáşáááşá¸ ááąáŹááşá¸ááŤá¸áááş áĄááŻáśá¸áááşááŤáá ááąááŹááąáˇá áşáĄáá˝ááşá¸ ááąááŹáá˝ááşá¸ááśááźááşá¸áĄáá˝ááş áááşááąáŹááşáážáŻáĄááźáąáŹááşá¸ ááťá˝ááşáŻááşááąá¸ááŹá¸ááŤáááşá
ááŽáááŹáá˛
NIFI áááş ááąááŹááťáŹá¸ááᯠááťááşááźááşá
á˝áŹ áĄááźááŻááşáááşááźááşá¸áážááˇáş ááŻááşááąáŹááşááźááşá¸áĄáá˝ááş ááźááˇáşááąááŹá¸ááąáŹ ááááŻááŹáá
áşááŻááźá
áşááźáŽá¸á áĄáááşá¸áĄááźá
áşááťáŹá¸áážááˇáş áĄáá˝ááşááźáąáŹááşá¸ááźááşá¸áĄáá˝ááş ááááşáĄááşáĄááťáŹá¸áĄááźáŹá¸á áá˝á˛áˇá
ááşá¸áážáŻááŻáśá
áśááťáŹá¸ááᯠááŹá¸áážááşá¸ááźáŻááŻááşááźááşá¸áážááˇáş áĄááźáŹá¸áĄááŹááťáŹá¸á
á˝áŹáĄáá˝ááş ááŻááşááąáŹááşááźááşá¸áĄáá˝ááş ááźááˇáşááąááŹá¸ááąáŹ ááááŻááŹáá
áşááŻááźá
áşáááşá ááąáŹááşá¸áá˝ááşáá˛áˇ ááąáŹáááşá
áşáá
áşááŻáááąáŹáˇ áĄááŻáśá¸ááźáŻááᏠáĄáááşá¸áá˝ááşáá°ááŤáááşá getFileá sendHttpRequest áážááˇáş áĄááźáŹá¸áĄááąá¸áĄáá˝á˛ ááŻááşáááşá¸á
ááşááťáŹá¸ááᯠá
ááŻáááşá¸ááťáŹá¸áĄááźá
áş áááŻááşá
áŹá¸ááźáŻáááŻááşááŤáááşá á
ááŻáááşá¸áá
áşááŻá
áŽáááş ááŻááşáááşá¸á
ááşáá
áşááŻáĄáŹá¸ áááŻááşá
áŹá¸ááźáŻáááşá áááşá¸ááĄááźááşáĄáážááşáĄááťááŻá¸áááşááąáŹááşáážáŻááᯠáĄáąáŹááşááŤááŻáśáá˝ááşáá˝áąáˇáááŻááşááŤáááşá ááŻááşáááşá¸á
ááşáááşáážááşáážáŻ áĄááźááşáĄáážááşááŻáśáˇááźááşáážáŻááťáŹá¸áááŻááşáᏠááąáŹááşáááşáĄááąá¸á
áááşá
áŹáá˝ááşá
áŹáááşá¸ááťáŹá¸ááᯠááąá¸ááŹá¸ááŹá¸áááşá ááŻáážáŹá¸á
ááŹá¸ááźáąáŹáááşáá°ááťáŹá¸áĄáá˝ááşá . á
áŹáá˝ááşá
áŹáááşá¸áá˝ááş NIFI ááᯠááŻááşáááŻá¸ááźáŽá¸ áĄááŻááşááŻááşááŻáśáĄááźááş ááąá¸ááąáŹááˇáşááŻáááşá¸ááááźáááˇáş ááŻááşáááşá¸á
ááşááťáŹá¸ááᯠáááşááŽá¸ááŻáśáááŻáˇááᯠááźááˇáşá
áŻáśá
á˝áŹááąáŹáşááźááŹá¸áááş
ááąáŹááşá¸ááŤá¸áá
áşááŻááşááąá¸áááş á
áááşáá°á¸áááş áĄááťáááşáĄááąáŹáşááźáŹ áážáŹáá˝áąááźáŽá¸ ááážáááŹááąáŹ áĄááťááşáĄáááşááťáŹá¸ááᯠáĄááá
áááşáá
áşááŻáĄááźá
áş áááşááąáŹááşáᏠáĄááŹáááş developer ááťáŹá¸áĄáá˝ááş ááááᯠáĄáááşá¸áááş áááŻáááŻáá˝ááşáá°á
áąáááŻááąáŹ ááášáááźááˇáş áá˝áąá¸áá˝áŹá¸ááŹáá˛áˇááŤáááşá
ááá°ááŹ
á ááŻáááşá¸ááŻáśááťáŹá¸áááş áá áşááŻáážááˇáşáá áşáᯠáĄááźááşáĄáážááş ááŻáśáˇááźááşááŻáśááᯠáĽáááŹáá áşááŻáĄááźá áş áá°ááááşá ááąáá°ááťáĄá áŽáĄá áĽáşáááş áĄááąáŹáşááąá¸áááŻá¸áážááşá¸ááŤáááş- ááťá˝ááşáŻááşáááŻáˇáááş HTTP ááąáŹááşá¸áááŻááťááşááᯠáááşááśááážááááş (ááŽáĄááŻááŽáĄáá ááąáŹááşá¸áááŻááťááşááááŻááşáááşáážá áááŻááşáá áşááŻáážááˇáşáĄáá°á NIFI áá á˝ááşá¸áááşááťáŹá¸áááŻááźááááşáĄáá˝ááşá á¤áĽáááŹáá˝ááş ááąáŹááşá¸áááŻááťááşáááş ááąááá˝ááşá¸áááŻááşáááŻáážáąáŹááşáážáŻááž áááŻááşáá áşááŻáááşááśááážáááźááşá¸ááŻááşáááşá¸á ááşááᯠá áááşáááş ) áááŻáˇááąáŹááş FH ááž áááŻááşáá áşáᯠáááşááśááážááááˇáş ááŻááşáááşá¸á ááşáážááˇáş FTP ááž FH áááŻáˇ ááźáąáŹááşá¸áá˝ážáąáˇááźááşá¸ ááŻááşáááşá¸á ááş ááááşáááşá¸áá˝ááş ááąáŹááşá¸áááŻáážáŻáĄáŹá¸ áááşááśááážáááźáąáŹááşá¸ ááŻáśáˇááźááşááťááşááᯠááźááşáááşááąá¸áááŻáˇááŤáááşá flowFile ááŻááąáŤáşááąáŹ ááŻááşáááşá¸á ááşááťáŹá¸áááş áá áşááŻáážááˇáşáá áşáᯠáĄááźááşáĄáážááş áĄááťááŻá¸áááşááąáŹááşáážáŻáážááááşááᯠáážááşá¸áááşá¸áááŻááşáááşá áááşá¸áááş áááşáá˝ážááşá¸ááťááşááťáŹá¸áážááˇáş áĄááźáąáŹááşá¸áĄááŹááťáŹá¸ááᯠááááşá¸áááşá¸áááˇáş NIFI áá˝ááş áĄááźáąááśáá ášá ááşá¸ááźá áşáááşá áĄááźáąáŹááşá¸áĄááŹáááş áááŻááşáááŻááşáá˝ážááˇáşáááŻááşááž áááŻááşá áŹá¸ááźáŻáááˇáş ááąááŹááźá áşáááşá áááŻáááŻáááşáážáŹ áĄááźááşá¸ááťááşá¸áĄáŹá¸ááźááˇáş ááźáąáŹáááťážááş áááşáááş á ááŻáááşá¸áá áşááŻááž áááŻááşáá áşááŻááᯠáááşááśááážáááźáŽá¸ ááąáŹááşáá áşááŻáááŻáˇ áá˝ážá˛ááźáąáŹááşá¸ááŤá áĄááźáąáŹááşá¸áĄááŹáááş áááşááááŻááşááźá áşááááˇáşáááşá

áááşáá˝áąáˇááźááşááááˇáşáĄáááŻááşá¸ á¤ááŻáśáá˝ááş ááąááŻááťááźá áşá ááşááᯠááźáááŹá¸áááşá HandleHttpRequest - ááąáŹááşá¸áááŻááťááşááťáŹá¸áááŻáááşááśáááşá ReplaceText - ááŻáśáˇááźááşáážáŻáááŻááşáááşáááŻááŻááşááąá¸áááşá HandleHttpResponse - ááŻáśáˇááźááşááťááşáá áşááŻááąá¸áááŻáˇáááşá FetchFile - áááŻááşáááŻáážáąáŹááşáážáŻááž áááŻááşáá áşááŻááᯠáááşááśááážáááźáŽá¸ áááşá¸ááᯠá ááŻáááşá¸ááŻáś PutSftp áááŻáˇ áá˝ážá˛ááźáąáŹááşá¸ááąá¸áááş - á¤áááŻááşááᯠáááşáážááşááŹá¸ááąáŹ ááááşá áŹáá˝ááş FTP ááąáŤáşáá˝ááş áááşááŹá¸áááşá áĄáᯠááŽááźá áşá ááşáĄááźáąáŹááşá¸ áááŻááááŹááááşá
á¤ááá ášá áá˝ááşá ááąáŹááşá¸áááŻáážáŻáááş áĄááŹáĄáŹá¸ááŻáśá¸ááĄá ááźá áşáááşá áááşá¸á configuration parameters áá˝áąáááŻááźááˇáşááźááŤá ááŻáˇá

StandardHttpContextMap áážáá˝á˛á á¤áĄááŹáĄáŹá¸ááŻáśá¸áááş áĄááąá¸áĄáá˝á˛ááźá áşáááş - áááşá¸áááş áááˇáşáĄáŹá¸ ááąáŹááşá¸áááŻáážáŻááťáŹá¸ááᯠááąá¸áááŻáˇááźááşá¸áážááˇáş áááşááśáááşáá˝ááˇáşááźáŻáááˇáşáááşááąáŹááşáážáŻáá áşááťááŻá¸ááźá áşáááşá áááŻáááŻáĄááąá¸á áááşáážááˇáş áĽáááŹááťáŹá¸ááźááˇáşáááş ááźááˇáşáážáŻáááŻááşáááş-
áááŻáˇááąáŹááşá á ááŻáááşá¸á ReplaceText configuration parameters ááťáŹá¸ááᯠááźááˇáşááźááŤá ááŻáˇá ReplacementValue ááᯠáĄáŹááŻáśá ááŻááşáááˇáşáááş - áááşá¸áááş ááŻáśáˇááźááşáážáŻááŻáśá áśááźááˇáş ááŻáśá¸á á˝á˛áá°ááś ááźááşááąá¸áááˇáşáĄááŹááźá áşáááşá áááşáááşááťáŹá¸áá˝ááş áááşáááş ááąáŹáˇááşáĄááşáĄáááˇáşááᯠááťáááşáážááááŻááşáááşá { áááş unpacked nifi}/nifi-1.9.2/logs ááąááŹáá˝ááş áážááşáááşá¸ááťáŹá¸ááᯠáá˝áąáˇáááŻááşáááşá ááťááşáá˝ááşááźááşá¸/áĄáąáŹááşááźááşáážáŻ áááˇáşáááşááťááşááťáŹá¸áááşá¸ áážááááş - á¤áááˇáşáááşááťááşááťáŹá¸áĄááąáŤáşáĄááźáąááśá áááşáááş ááŻááşáááşá¸á ááşáá áşááŻááŻáśá¸ááᯠááááşá¸ááťáŻááşáááŻááşáááşá . áááŻáááŻáááşáážáŹá áĄáąáŹááşááźááşááąáŹ á áŹááŹá¸ááŻááşááąáŹááşááźááşá¸ááá ášá áá˝ááşá áĄááŻáśá¸ááźáŻáá°ááśáááŻáˇ ááŻáśáˇááźááşáážáŻááąá¸áááŻáˇááźááşá¸ááŻááşáááşá¸á ááşááᯠááąáŤáşáááşááźá áşááźáŽá¸ áĄááźáŹá¸áĄááźáąáĄááąáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş ááĄáąáŹááşááźááşááąáŹááŻááşáááşá¸á ááşááᯠáááŻá¸áááŻá¸áážááşá¸áážááşá¸ áážááşáááşá¸áááşááŤáááşá

HandleHttpResponse ááŻááşááášááááťáŹá¸ ááŻáśáˇááźááşáážáŻáá áşáᯠáĄáąáŹááşááźááşá á˝áŹ áááşááŽá¸áááŻááşááąáŹáĄá፠áĄááąáĄááŹá¸áážáá˝á˛á áĄáá°á¸á áááşáááşá áŹá¸á áᏠááážáááŤá

ááąáŹááşá¸áááŻááťááşáážááˇáş ááŻáśáˇááźááşáážáŻááᯠááťá˝ááşáŻááşáááŻáˇ áá˝á˛ááŻááşááźáŽá¸ááŤááźáŽ - áááŻááşááᯠáááşááśááá°ááźáŽá¸ FTP ááŹááŹááąáŤáşáá˝ááş ááŹá¸áážáááźááşá¸ááŽáááŻáˇ áááşáá˝áŹá¸ááźááŤá ááŻáˇá FetchFile - áááşáááşááťáŹá¸áá˝ááş áááşáážááşááŹá¸áááˇáş áááşá¸ááźáąáŹááşá¸áá˝ááş áááŻááşáá áşááŻááᯠáááşááśááážáááźáŽá¸ áááşá¸ááᯠááąáŹááşááŻááşáááşá¸á ááşáááŻáˇ ááąá¸áááŻáˇáááşá

áááŻáˇááąáŹááş PutSftp á ááŻáááşá¸- áááŻááşááᯠáááŻááşáááŻáážáąáŹááşáážáŻáá˝ááş ááąááŹááťááŹá¸ááŤá áĄáąáŹááşá፠configuration parameters ááťáŹá¸áááŻááťá˝ááşáŻááşáááŻáˇáá˝áąáˇáááŻááşááŤáááşá

á ááŻáááşá¸áá áşááŻá áŽáááş ááŽá¸ááźáŹá¸ááŻááşááąáŹááşááááˇáş ááŻááşáááşá¸á ááşááźá áşáááşáá°ááąáŹáĄááťááşááᯠáĄáŹááŻáśá ááŻááşáááˇáşáááşá áážáŻááşáá˝áąá¸ááąáŹ á áááşááźááŻááşááźááşáááşáážáŻ ááááŻáĄááşááąáŹ áĄáááŻá¸áážááşá¸ááŻáśá¸ áĽáááŹááᯠááźááˇáşááŤá ááąáŹááşáá áşááŻá ááŻááşáááşá¸á ááşááᯠáááşá¸áááşá¸áááŻáážáŻááşáá˝áąá¸áĄáąáŹááş ááźááˇáşáááşá grooves ááąáŤáşáážáŹ áááşá¸áááşá¸ááąá¸áááşá
áááŻáážáŻááşáá˝áąá¸áá˛áˇ áĽáááŹ
SOAP áááşááąáˇááťáşááᯠáá˝ááşá¸ááśááźááşáááşáááˇáş ááŻááşáááşá¸á ááşááźáąáŹááˇáş ááŻáśá¸á á˝á˛áá°ááś ááąááŹáá˝ážá˛ááźáąáŹááşá¸ááźááşá¸ áááşááąáŹááşáážáŻáááş áĄáááşá¸áááş áááŻáááŻáážáŻááşáá˝áąá¸áá˝áŹá¸ááŤáááşá áĄáá˝áąáá˝áą ááŻááşáááşá¸á ááşááᯠáĄáąáŹááşááŤááŻáśáá˝ááş ááźááŹá¸áááşá

á¤ááąááŹáá˝ááş áĄááŻááşááŽááŹáááş áĄáá°á¸áážáŻááşáá˝áąá¸áááşáááŻááşááŤ- ááťá˝ááşáŻááşáááŻáˇáááş ááŻáśá¸á á˝á˛áá°ááśááž ááąááŹáááŻáĄááşááźáąáŹááşá¸ ááąáŹááşá¸áááŻáážáŻááᯠáááşááśááážááááşá áááşááąáˇááťáşáááşááśááážááááˇáş ááŻáśáˇááźááşáážáŻáá áşáᯠááąá¸áááŻáˇáááşá ááŻáśáˇááźááşáážáŻáááŻááşááᯠáááşááśááážááááˇáş ááŻááşáááşá¸á ááşááᯠá áááşááŹá áĄááťááŻáˇááąáŹ ááŻáášááááąáááźááˇáş áááşá¸ááźááşááźáŽá¸ááąáŹááşá áááŻááşááᯠááŹááŹáááŻáˇ SOAP áááşááąáˇááşáťááŻáśá áśááźááˇáş ááŻáśá¸á á˝á˛áá°ááś áá˝ážá˛ááźáąáŹááşá¸ááąá¸áááşá
áĄáááşáážáŹáá˝áąáˇáá˛áˇááá˛áˇ ááąá¸ááąáŹááˇáşáá˝áąááᯠáááşááźáŽá¸ááąáŹáşááźáááŻáˇ ááááŻáĄááşáá°á¸áááŻáˇ áááşááŤáááş - áĄáá áşáá˝áąááᯠáááˇáşáááˇáşááźáąáŹááşá¸ááźááˇáşááĄáąáŹááşá áááşáááˇáşáááŻááşáááŻáááᯠáááşá¸ááźááşáááş áááŻáĄááşááźáŽá¸ ááŹáááş ReplaceText áĄááťááŻá¸áĄá áŹá¸á ááŻáááşá¸ááťáŹá¸áááş ááááˇáşááťáąáŹáşááŤáá áááşáááş áááşááááŻááşáááŻááş script ááᯠááąá¸ááŹá¸ááááşááźá áşááŤáááşá áááşá¸ááᯠExecuteGroogyScript á ááŻáááşá¸ááŻáśá¸ááźáŽá¸ ááŻááşááąáŹááşáááŻááşáááşá áááşá¸ááááşáááşááťáŹá¸áááŻáĄáąáŹááşáá˝ááşááąáŹáşááźááŹá¸áááşá

á¤á ááŻáááşá¸áá˝ááş ááŹááşáá˝ážááşá¸ááᯠáááşáááş áá˝áąá¸ááťááşá áᏠáážá áşááŻáážááááşá ááááĄááťááşáážáŹ script áá áşááŻáážááˇáş áááŻááşáá áşááŻááᯠááąáŤááşá¸ááŻááşááŻááşááźááşá¸ ááźá áşáááşá ááŻááááá áşááŻáááąáŹáˇ scriptBody áá˛ááᯠscript áá áşááŻáááˇáşááźááşá¸áĄáŹá¸ááźááˇáşááŤá ááŤáááááąáŹááşá executeScript á ááŻáááşá¸áááş ááŹááŹá ááŹá¸ááťáŹá¸á á˝áŹááᯠááśáˇáááŻá¸ááąá¸áááş - áááşá¸áááŻáˇáá˛áážáá áşááŻáážáŹ groovy ááźá áşáááşá á፠java developer ááťáŹá¸áááŻá áááşááťááşá áąááááˇáşáááş - áááşáááşáááŻáá˛áˇáááŻáˇááąáŹá ááŻáááşá¸ááťáŹá¸áá˝ááş java áá˝ááş script ááťáŹá¸áááŻáááąá¸áááŻááşááŤá áĄáážááşááááşááŻááşááťááşáá°ááťáŹá¸áĄáá˝ááşá áááşáááşáááşááááŻááşáááŻááşá áááşááźááŻááşá ááŻáááşá¸áááŻáááşááŽá¸ááźáŽá¸ NIFI á áá áşáááŻáˇáááˇáşáááşáááŻáĄááşáááşá á¤ááŻááşááąáŹááşááťááşáá áşááŻááŻáśá¸áááş ááŹáááŻáááşá¸ááźááˇáş áĄááźáŹááźáŽá¸áĄáááźááˇáş áááŻááşááŤáá˝áŹá¸áááşá á¤ááąáŹááşá¸ááŤá¸áá˝ááş ááťá˝ááşáŻááşáááŻáˇ áááźáąáážááşá¸áááŻááşááŤá áááŻááşá¸á ááŻááşá¸áá˛áˇááŹááŹá ááŹá¸ááᯠáá˝áąá¸ááťááşáá˛áˇáááşá áĄáąáŹááşáá˝ááş SOAP áááşááąáˇááťáşáá˝ááş id ááᯠáááŻá¸áážááşá¸á á˝áŹ áááŻá¸ááźážááşáááşáááˇáş á ááşá¸áááş script áá áşááŻááźá áşáááşá áážááşááŹá¸áááş áĄááąá¸ááźáŽá¸ááŤáááşá áááşáááş flowFile áážáááŻááşáááŻáá°á áááşá¸áááŻáá˝ááşá¸ááśááŤá áááşá¸áááŻáááŻááąááŹáá˝ááşááźááşááŹá¸áááşá áĄááşááááşááŻááşáááşáááąáˇááŤáážááˇáşá á áŹááźááˇáşáááŻááşáĄáŹá¸ááŻáśá¸ áááŤáááşááźáąáŹááşá¸áááŻáááşá¸ áááááźáŻáááˇáşáááşá libs ááťáŹá¸áá˛ááž áá áşááŻááᯠáááşáá˝ááşá¸áááş áááŻáĄááşááąááąá¸áááşá ááąáŹááşáĄáŹá¸áááşá¸ááťááşáá áşááŻáááąáŹáˇ ááŽá ááŻáááşá¸áážáŹáážááá˛áˇ script áᏠdebug ááŻááşáááŻáˇ áĄááąáŹáşááąá¸áááşáá˛ááŤáááşá NIFI JVM áááŻáˇááťáááşáááşááźáŽá¸ áĄáážáŹá¸áážáŹááźááşááźááşá¸ááŻááşáááşá¸á ááşááᯠá áááşáááş áááşá¸áááşá¸áá áşááŻáážááááşá áááŻááşáááŻááşáááŻááşááťá ááťá˝ááşáŻááşáááş ááąááášáááĄáááŽááąá¸áážááşá¸áá áşááŻáĄáŹá¸ á áááşááźáŽá¸ á ááşáážááşááž áááŻááşáá áşááŻáááşááśááá°ááźááşá¸ááᯠáĄáá˝ááşáá°ááźáŻááŻááşááŹá¸áááşá ááťá˝ááşááąáŹáşáááşá¸ á ááşáá˝ááşá¸áážáŹ áĄáážáŹá¸áážáŹááŻááşáá˛áˇáááşá Script áá áşááŻááᯠáááşáááˇáşáĄááŤáá˝ááş ááąáŤáşááŹáááˇáş áĄáážáŹá¸ááťáŹá¸áááş Google áĄáá˝ááş áĄááąáŹáşááąá¸ áá˝ááşáá°ááźáŽá¸ NIFI áááŻááşáááŻááşá áážááşáááşá¸áá˝ááş ááąá¸ááŹá¸ááŤáááşá
import org.apache.commons.io.IOUtils
import groovy.xml.XmlUtil
import java.nio.charset.*
import groovy.xml.StreamingMarkupBuilder
def flowFile = session.get()
if (!flowFile) return
try {
flowFile = session.write(flowFile, { inputStream, outputStream ->
String result = IOUtils.toString(inputStream, "UTF-8");
def recordIn = new XmlSlurper().parseText(result)
def element = recordIn.depthFirst().find {
it.name() == 'id'
}
def newId = Integer.parseInt(element.toString()) + 1
def recordOut = new XmlSlurper().parseText(result)
recordOut.Body.ClientMessage.RequestMessage.RequestContent.content.MessagePrimaryContent.ResponseBody.id = newId
def res = new StreamingMarkupBuilder().bind { mkp.yield recordOut }.toString()
outputStream.write(res.getBytes(StandardCharsets.UTF_8))
} as StreamCallback)
session.transfer(flowFile, REL_SUCCESS)
}
catch(Exception e) {
log.error("Error during processing of validate.groovy", e)
session.transfer(flowFile, REL_FAILURE)
}ááąáŹááşáá áşááŻáá á¤ááąááŹáá˝ááş á ááŻáááşá¸ááŻáśá á áááşááźááŻááşááźááşáááşáážáŻ áĄááŻáśá¸áááşáááşá áááŻáˇááąáŹááşá áĄááşááááşáááŻááşááᯠááŹááŹáááŻáˇ áááŻááşááąá¸áááŻáˇáááş ááŹáááşáážááááˇáş á ááŻáááşá¸áááŻáˇ ááźáąáŹááşá¸áá˝ážáąáˇáááşá áĄáąáŹááşááąáŹáşááźááŤááťáŹá¸áááş á¤á ááŻáááşá¸áĄáá˝ááş áááşáááşááťáŹá¸ááźá áşáááşá

ááťá˝ááşáŻááşáááŻáˇáááş SOAP áááşááąáˇááťáşááᯠááąá¸áááŻáˇáááˇáşáááşá¸áááşá¸ááᯠááąáŹáşááźááŤáááşá áááşáážáŹááąá¸ááá˛á ááąáŹááşáá áşááŻáááąáŹáˇ ááŤá SOAP áááŻááŹááᯠáá˝ážááşááźááááşá

host áážááˇáş action (soapAction) áá˛áˇáááŻáˇááąáŹ ááŻááşááášááááťáŹá¸á á˝áŹááᯠáááˇáşááŤá ááááşá¸áááşá¸ááźáŽá¸ á á áşááąá¸ááŤáááşá SOAP ááąáŹááşá¸áááŻáážáŻááťáŹá¸ááᯠáááşáááŻáˇááąá¸áááŻáˇááááşááᯠáĄááąá¸á áááşááźááˇáşáážáŻáááŻááşááŤáááşá
NIFI ááŻááşáááşá¸á ááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻáááşáĄáá˝ááş áá˝áąá¸ááťááşá ááŹááťáŹá¸á á˝áŹááᯠááťá˝ááşáŻááşáááŻáˇ ááźááˇáşáážáŻáá˛áˇáááşá áá°áááŻáˇ áááşááᯠáĄááźááşáĄáážááş áááşááśááźááźáŽá¸ áá°áááŻáˇáá˛áˇ ááááˇáşáĄááťááŻá¸áĄááźááşá ááŹáá˛? ááŻáśá¸áááşááŹá¸ááąáŹ áĽáááŹááťáŹá¸áááş á ááşá¸áááşáážáŻááťáŹá¸ááźá áşááźáŽá¸ áááŻááşáá˝á˛áá˝ááş áĄáážááşááááşááźá áşááťááşááąáááˇáşáĄááŹááťáŹá¸áážááˇáş áĄáááşá¸áááşáá˝áŹááźáŹá¸ááŤáááşá á¤ááąáŹááşá¸ááŤá¸áááş developer ááťáŹá¸áĄáá˝ááş áĄáááşá¸áááş áĄááŻáśá¸áááşáááşáᯠááťážáąáŹáşáááˇáşááŤáááşá áááŻá ááŻááşáá˛áˇáĄáá˝ááşááťáąá¸áá°á¸áááşááŤáááşá ááąá¸áá˝ááşá¸ááťáŹá¸áážáááŤá ááąá¸ááŤá ááźáąáááŻáˇááźááŻá¸á áŹá¸ááŤáˇáááşá
source: www.habr.com
