áááá«ááºáž
áá»áœááºáá±á¬á·áºáá²á· áááºááŸáá¡áá¯ááºááœááºááŸá¬ áá®áááºážááá¬áá²á· áááá»áœááºážáá²á·ááá¬áá«á áá±á¬ááºáá¶áááºážáááºážáá²á· á
áá«áááºá áá±á¬ááºá¡á
ááºážá¡áá±ážááœáẠáá»áœááºá¯ááºááá¯á·á¡ááœá²á·ááŸáá·áº áá±á«ááºážá
ááºážááŸá¯ááŒá¯áá¯ááºááẠááá¯á¡ááºááŒá±á¬ááºáž ááŒá±á¬ááŒá¬ážáá²á·áá«áááºá áá°áááá»á¬ážáá±á¬á
áá
áº. áá±á«ááºážá
ááºážááŒááºážááŒáá·áº á€áá°áááá»á¬ážáá±á¬á
áá
áºááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž áááá»áá±á¬á¡áá¯á¶ážááŸááºáá
áºáá¯ááá¯á· 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 ááŸáá·áº á¡ááŒá¬ážá¡áá±ážá¡ááœá² áá¯ááºáááºážá
ááºáá»á¬ážááᯠá
áá¯áááºážáá»á¬ážá¡ááŒá
Ạááá¯ááºá
á¬ážááŒá¯ááá¯ááºáá«áááºá á
áá¯áááºážáá
áºáá¯á
á®ááẠáá¯ááºáááºážá
ááºáá
áºáá¯á¡á¬áž ááá¯ááºá
á¬ážááŒá¯áááºá áááºážáá¡ááŒááºá¡ááŸááºá¡áá»áá¯ážáááºáá±á¬ááºááŸá¯ááᯠá¡á±á¬ááºáá«áá¯á¶ááœááºááœá±á·ááá¯ááºáá«áááºá áá¯ááºáááºážá
ááºáááºááŸááºááŸá¯ á¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯áá»á¬ážááá¯ááºáᬠáá±á¬ááºáááºá¡áá±ážá
áááºá
á¬ááœááºá
á¬áááºážáá»á¬ážááᯠáá±ážáá¬ážáá¬ážáááºá
áá±á¬ááºážáá«ážáá
áºáá¯ááºáá±ážááẠá
áááºáá°ážááẠá¡áá»áááºá¡áá±á¬áºááŒá¬ ááŸá¬ááœá±ááŒá®áž áááŸááá¬áá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠá¡ááá
áááºáá
áºáá¯á¡ááŒá
Ạáááºáá±á¬ááºáᬠá¡áá¬ááẠ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