Apache NIFI - ืกืงื™ืจื” ืงืฆืจื” ืฉืœ ืชื›ื•ื ื•ืช ื‘ืคื•ืขืœ

ืžื‘ื•ื

ื›ืš ืงืจื” ืฉื‘ืžืงื•ื ืขื‘ื•ื“ืชื™ ื”ื ื•ื›ื—ื™ ื”ื™ื™ืชื™ ืฆืจื™ืš ืœื”ื›ื™ืจ ืืช ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ื–ื•. ืื ื™ ืืชื—ื™ืœ ืขื ืงืฆืช ืจืงืข. ื‘ืคื’ื™ืฉื” ื”ื‘ืื” ื ืืžืจ ืœืฆื•ื•ืช ืฉืœื ื• ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื™ืฆื•ืจ ืื™ื ื˜ื’ืจืฆื™ื” ืขื ืžืขืจื›ืช ืžื•ื›ืจืช. ื‘ืื™ื ื˜ื’ืจืฆื™ื” ื”ื™ื™ืชื” ื”ื›ื•ื•ื ื” ืฉื”ืžืขืจื›ืช ื”ื™ื“ื•ืขื” ื”ื–ื• ืชืฉืœื— ืœื ื• ื‘ืงืฉื•ืช ื“ืจืš HTTP ืœื ืงื•ื“ืช ืงืฆื” ืžืกื•ื™ืžืช, ื•ืื ื—ื ื•, ื‘ืื•ืคืŸ ืžื•ื–ืจ, ื ืฉืœื— ื‘ื—ื–ืจื” ืชื’ื•ื‘ื•ืช ื‘ืฆื•ืจื” ืฉืœ ื”ื•ื“ืขืช SOAP. ื”ื›ืœ ื ืจืื” ืคืฉื•ื˜ ื•ื˜ืจื™ื•ื•ื™ืืœื™. ืžื›ืืŸ ื ื•ื‘ืข ืฉืืชื” ืฆืจื™ืš...

ืžืฉื™ืžื”

ืฆื•ืจ 3 ืฉื™ืจื•ืชื™ื. ื”ืจืืฉื•ืŸ ืฉื‘ื”ื ื”ื•ื ืฉื™ืจื•ืช ืขื“ื›ื•ืŸ ืžืกื“ ื”ื ืชื•ื ื™ื. ืฉื™ืจื•ืช ื–ื”, ื›ืืฉืจ ืžื’ื™ืขื™ื ื ืชื•ื ื™ื ื—ื“ืฉื™ื ืžืžืขืจื›ืช ืฆื“ ืฉืœื™ืฉื™, ืžืขื“ื›ืŸ ืืช ื”ื ืชื•ื ื™ื ื‘ืžืกื“ ื”ื ืชื•ื ื™ื ื•ื™ื•ืฆืจ ืงื•ื‘ืฅ ื‘ืคื•ืจืžื˜ CSV ืœื”ืขื‘ืจืชื ืœืžืขืจื›ืช ื”ื‘ืื”. ื ืงื•ื“ืช ื”ืงืฆื” ืฉืœ ื”ืฉื™ืจื•ืช ื”ืฉื ื™ ื ืงืจืืช - FTP Transport Service, ืฉืžืงื‘ืœ ืืช ื”ืงื•ื‘ืฅ ื”ืžื•ืขื‘ืจ, ืžืืžืช ืื•ืชื• ื•ืžื›ื ื™ืก ืื•ืชื• ืœืื—ืกื•ืŸ ืงื‘ืฆื™ื ื‘ืืžืฆืขื•ืช FTP. ื”ืฉื™ืจื•ืช ื”ืฉืœื™ืฉื™, ืฉื™ืจื•ืช ื”ืขื‘ืจืช ื”ื ืชื•ื ื™ื ืœืฆืจื›ืŸ, ืคื•ืขืœ ื‘ืื•ืคืŸ ืืกื™ื ื›ืจื•ื ื™ ืขื ืฉื ื™ ื”ืจืืฉื•ื ื™ื. ื”ื•ื ืžืงื‘ืœ ื‘ืงืฉื” ืžืžืขืจื›ืช ื—ื™ืฆื•ื ื™ืช ืฉืœ ืฆื“ ืฉืœื™ืฉื™ ืœืงื‘ืœ ืืช ื”ืงื•ื‘ืฅ ื”ื ื“ื•ืŸ ืœืขื™ืœ, ืœื•ืงื— ืืช ืงื•ื‘ืฅ ื”ืชื’ื•ื‘ื” ื”ืžื•ื›ื ื”, ืžืฉื ื” ืื•ืชื• (ืžืขื“ื›ืŸ ืืช ื”-ID, ื”ืชื™ืื•ืจ, ืฉื“ื•ืช linkToFile) ื•ืฉื•ืœื— ืืช ื”ืชื’ื•ื‘ื” ื‘ืฆื•ืจื” ืฉืœ ื”ื•ื“ืขืช SOAP. ื›ืœื•ืžืจ, ื”ืชืžื•ื ื” ื”ื›ื•ืœืœืช ื”ื™ื ื›ื“ืœืงืžืŸ: ืฉื ื™ ื”ืฉื™ืจื•ืชื™ื ื”ืจืืฉื•ื ื™ื ืžืชื—ื™ืœื™ื ืืช ืขื‘ื•ื“ืชื ืจืง ื›ืืฉืจ ื”ื ืชื•ื ื™ื ืœืขื“ื›ื•ืŸ ื”ื’ื™ืขื•. ื”ืฉื™ืจื•ืช ื”ืฉืœื™ืฉื™ ืขื•ื‘ื“ ืœืœื ื”ืจืฃ ื›ื™ ื™ืฉื ื ืฆืจื›ื ื™ ืžื™ื“ืข ืจื‘ื™ื, ื›-1000 ื‘ืงืฉื•ืช ืœื ืชื•ื ื™ื ื‘ื“ืงื”. ื”ืฉื™ืจื•ืชื™ื ื–ืžื™ื ื™ื ื›ืœ ื”ื–ืžืŸ ื•ื”ืžื•ืคืขื™ื ืฉืœื”ื ืžืžื•ืงืžื™ื ื‘ืกื‘ื™ื‘ื•ืช ืฉื•ื ื•ืช, ื›ื’ื•ืŸ ื‘ื“ื™ืงื”, ื”ื“ื’ืžื”, ื˜ืจื•ื ื™ื™ืฆื•ืจ ื•ืคืจื•ื“. ืœื”ืœืŸ ืชืจืฉื™ื ืฉืœ ืื•ืคืŸ ื”ืคืขื•ืœื” ืฉืœ ืฉื™ืจื•ืชื™ื ืืœื”. ื”ืจืฉื• ืœื™ ืœื”ื‘ื”ื™ืจ ืžื™ื“ ืฉื—ืœืง ืžื”ืคืจื˜ื™ื ืคื•ืฉื˜ื• ื›ื“ื™ ืœืžื ื•ืข ืžื•ืจื›ื‘ื•ืช ืžื™ื•ืชืจืช.

Apache NIFI - ืกืงื™ืจื” ืงืฆืจื” ืฉืœ ืชื›ื•ื ื•ืช ื‘ืคื•ืขืœ

ื”ืขืžืงื” ื˜ื›ื ื™ืช

ื›ืฉืชื›ื ื ื• ืคืชืจื•ืŸ ืœื‘ืขื™ื”, ื”ื—ืœื˜ื ื• ืชื—ื™ืœื” ืœืขืฉื•ืช ืืคืœื™ืงืฆื™ื•ืช ื‘ื’'ืื•ื•ื” ื‘ืืžืฆืขื•ืช ื”-Spring framework, Nginx balancer, Postgres database ื•ืขื•ื“ ื“ื‘ืจื™ื ื˜ื›ื ื™ื™ื ื•ืœื ื›ืœ ื›ืš ื˜ื›ื ื™ื™ื. ืžื›ื™ื•ื•ืŸ ืฉื”ื–ืžืŸ ืœืคื™ืชื•ื— ืคืชืจื•ืŸ ื˜ื›ื ื™ ืืคืฉืจ ืœื ื• ืœืฉืงื•ืœ ื’ื™ืฉื•ืช ืื—ืจื•ืช ืœืคืชืจื•ืŸ ื‘ืขื™ื” ื–ื•, ืžื‘ื˜ื ื• ื ืคืœ ืขืœ ื˜ื›ื ื•ืœื•ื’ื™ื™ืช Apache NIFI, ืฉื”ื™ื ืื•ืคื ืชื™ืช ื‘ื—ื•ื’ื™ื ืžืกื•ื™ืžื™ื. ืื ื™ ืื’ื™ื“ ืžื™ื“ ืฉื”ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ื–ื• ืืคืฉืจื” ืœื ื• ืœื”ื‘ื—ื™ืŸ ื‘-3 ื”ืฉื™ืจื•ืชื™ื ื”ืืœื”. ืžืืžืจ ื–ื” ื™ืชืืจ ืืช ื”ืคื™ืชื•ื— ืฉืœ ืฉื™ืจื•ืช ื”ืขื‘ืจืช ืงื‘ืฆื™ื ื•ืฉื™ืจื•ืช ื”ืขื‘ืจืช ื ืชื•ื ื™ื ืœืฆืจื›ืŸ, ืืš ืื ื”ืžืืžืจ ืžื•ืขื™ืœ, ืื›ืชื•ื‘ ืขืœ ื”ืฉื™ืจื•ืช ืœืขื“ื›ื•ืŸ ื ืชื•ื ื™ื ื‘ืžืื’ืจ.

ืžื” ื–ื”

NIFI ื”ื™ื ืืจื›ื™ื˜ืงื˜ื•ืจื” ืžื‘ื•ื–ืจืช ืœื˜ืขื™ื ื” ื•ืขื™ื‘ื•ื“ ืžืงื‘ื™ืœื™ื ืžื”ื™ืจื™ื ืฉืœ ื ืชื•ื ื™ื, ืžืกืคืจ ืจื‘ ืฉืœ ืชื•ืกืคื™ื ืœืžืงื•ืจื•ืช ื•ื˜ืจื ืกืคื•ืจืžืฆื™ื•ืช, ื’ื™ืจืกืื•ืช ืฉืœ ืชืฆื•ืจื•ืช ื•ืขื•ื“ ื•ืขื•ื“. ื‘ื•ื ื•ืก ื ื—ืžื“ ื”ื•ื ืฉื–ื” ืžืื•ื“ ืงืœ ืœืฉื™ืžื•ืฉ. ืชื”ืœื™ื›ื™ื ื˜ืจื™ื•ื•ื™ืืœื™ื™ื ื›ื’ื•ืŸ getFile, sendHttpRequest ื•ืื—ืจื™ื ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืžื™ื•ืฆื’ื™ื ื›ืจื™ื‘ื•ืขื™ื. ื›ืœ ืจื™ื‘ื•ืข ืžื™ื™ืฆื’ ืชื”ืœื™ืš ืฉืืช ื”ืื™ื ื˜ืจืืงืฆื™ื” ืฉืœื• ื ื™ืชืŸ ืœืจืื•ืช ื‘ืื™ื•ืจ ืœืžื˜ื”. ื ื›ืชื‘ ืชื™ืขื•ื“ ืžืคื•ืจื˜ ื™ื•ืชืจ ืขืœ ืื™ื ื˜ืจืืงืฆื™ื•ืช ืฉืœ ื”ื’ื“ืจืช ืชื”ืœื™ืš ื›ืืŸ , ืœืžื™ ืฉืžื“ื‘ืจ ืจื•ืกื™ืช - ื›ืืŸ. ื”ืชื™ืขื•ื“ ืžืชืืจ ื‘ืฆื•ืจื” ืžื•ืฉืœืžืช ื›ื™ืฆื“ ืœืคืจื•ืง ื•ืœื”ืคืขื™ืœ ืืช NIFI, ื›ืžื• ื’ื ื›ื™ืฆื“ ืœื™ืฆื•ืจ ืชื”ืœื™ื›ื™ื, ื”ื™ื“ื•ืขื™ื ื’ื ื›ืจื™ื‘ื•ืขื™ื
ื”ืจืขื™ื•ืŸ ืœื›ืชื•ื‘ ืžืืžืจ ื ื•ืœื“ ืœืื—ืจ ื—ื™ืคื•ืฉ ืืจื•ืš ื•ืžื‘ื ื” ื”ืžื™ื“ืข ื”ืžืชืงื‘ืœ ืœืžืฉื”ื• ืžื•ื“ืข, ื›ืžื• ื’ื ื”ืจืฆื•ืŸ ืœืขืฉื•ืช ืืช ื”ื—ื™ื™ื ืงืฆืช ื™ื•ืชืจ ืงืœื™ื ืขื‘ื•ืจ ืžืคืชื—ื™ื ืขืชื™ื“ื™ื™ื.

ื“ื•ื’ืžื”

ื ื—ืฉื‘ืช ื“ื•ื’ืžื” ืœืื•ืคืŸ ืฉื‘ื• ืจื™ื‘ื•ืขื™ื ืžืชืงืฉืจื™ื ื–ื” ืขื ื–ื”. ื”ืกื›ืžื” ื”ื›ืœืœื™ืช ื“ื™ ืคืฉื•ื˜ื”: ืื ื• ืžืงื‘ืœื™ื ื‘ืงืฉืช HTTP (ื‘ืชื™ืื•ืจื™ื”, ืขื ืงื•ื‘ืฅ ื‘ื’ื•ืฃ ื”ื‘ืงืฉื”. ื›ื“ื™ ืœื”ื“ื’ื™ื ืืช ื”ื™ื›ื•ืœื•ืช ืฉืœ NIFI, ื‘ื“ื•ื’ืžื” ื–ื• ื”ื‘ืงืฉื” ืžืชื—ื™ืœื” ืชื”ืœื™ืš ืฉืœ ืงื‘ืœืช ืงื•ื‘ืฅ ืžืื—ืกื•ืŸ ื”ืงื‘ืฆื™ื ื”ืžืงื•ืžื™ ), ืœืื—ืจ ืžื›ืŸ ืื ื• ืฉื•ืœื—ื™ื ื—ื–ืจื” ืชืฉื•ื‘ื” ืฉื”ื‘ืงืฉื” ื”ืชืงื‘ืœื”, ื‘ืžืงื‘ื™ืœ ืœืชื”ืœื™ืš ืงื‘ืœืช ืงื•ื‘ืฅ ืž-FH ื•ืœืื—ืจ ืžื›ืŸ ืชื”ืœื™ืš ื”ืขื‘ืจืชื• ื“ืจืš FTP ืœ-FH. ื›ื“ืื™ ืœื”ื‘ื”ื™ืจ ืฉืชื”ืœื™ื›ื™ื ืžืงื™ื™ืžื™ื ืื™ื ื˜ืจืืงืฆื™ื” ื–ื” ืขื ื–ื” ื‘ืืžืฆืขื•ืช ืžื” ืฉื ืงืจื flowFile. ื–ื•ื”ื™ ื™ืฉื•ืช ื”ื‘ืกื™ืก ื‘-NIFI ื”ืžืื—ืกื ืช ืชื›ื•ื ื•ืช ื•ืชื•ื›ืŸ. ืชื•ื›ืŸ ื”ื•ื ื”ื ืชื•ื ื™ื ืฉืžื™ื•ืฆื’ื™ื ืขืœ ื™ื“ื™ ืงื•ื‘ืฅ ื”ื–ืจื. ื›ืœื•ืžืจ, ื‘ืื•ืคืŸ ื’ืก, ืื ืชืงื‘ืœื• ืงื•ื‘ืฅ ืžืจื™ื‘ื•ืข ืื—ื“ ื•ืชืขื‘ื™ืจื• ืื•ืชื• ืœืžืฉื ื”ื•, ื”ืชื•ื›ืŸ ื™ื”ื™ื” ื”ืงื•ื‘ืฅ ืฉืœื›ื.

Apache NIFI - ืกืงื™ืจื” ืงืฆืจื” ืฉืœ ืชื›ื•ื ื•ืช ื‘ืคื•ืขืœ

ื›ืคื™ ืฉืืชื” ื™ื›ื•ืœ ืœืจืื•ืช, ืชืžื•ื ื” ื–ื• ืžืฆื™ื’ื” ืืช ื”ืชื”ืœื™ืš ื”ื›ืœืœื™. HandleHttpRequest - ืžืงื‘ืœ ื‘ืงืฉื•ืช, ReplaceText - ื™ื•ืฆืจ ื’ื•ืฃ ืชื’ื•ื‘ื”, HandleHttpResponse - ืฉื•ืœื— ืชื’ื•ื‘ื”. FetchFile - ืžืงื‘ืœ ืงื•ื‘ืฅ ืžืื—ืกื•ืŸ ืงื‘ืฆื™ื, ืžืขื‘ื™ืจ ืื•ืชื• ืœืจื™ื‘ื•ืข PutSftp - ืฉื ืงื•ื‘ืฅ ื–ื” ืขืœ FTP, ื‘ื›ืชื•ื‘ืช ืฉืฆื•ื™ื ื”. ืขื›ืฉื™ื• ืขื•ื“ ืขืœ ื”ืชื”ืœื™ืš ื”ื–ื”.

ื‘ืžืงืจื” ื–ื”, ื”ื‘ืงืฉื” ื”ื™ื ื”ื”ืชื—ืœื” ืฉืœ ื”ื›ืœ. ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืคืจืžื˜ืจื™ ื”ืชืฆื•ืจื” ืฉืœื•.

Apache NIFI - ืกืงื™ืจื” ืงืฆืจื” ืฉืœ ืชื›ื•ื ื•ืช ื‘ืคื•ืขืœ

ื”ื›ืœ ื›ืืŸ ื“ื™ ื˜ืจื™ื•ื•ื™ืืœื™ ืœืžืขื˜ StandardHttpContextMap - ื–ื”ื• ืกื•ื’ ืฉืœ ืฉื™ืจื•ืช ืฉืžืืคืฉืจ ืœืฉืœื•ื— ื•ืœืงื‘ืœ ื‘ืงืฉื•ืช. ื‘ื™ืชืจ ืคื™ืจื•ื˜ ื•ืืคื™ืœื• ืขื ื“ื•ื’ืžืื•ืช, ืืชื” ื™ื›ื•ืœ ืœืจืื•ืช - ื›ืืŸ

ืœืื—ืจ ืžื›ืŸ, ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืคืจืžื˜ืจื™ ื”ืชืฆื•ืจื” ืฉืœ ReplaceText ืฉืœ ื”ืจื™ื‘ื•ืข. ื›ื“ืื™ ืœืฉื™ื ืœื‘ ืœ-ReplacementValue - ื–ื” ืžื” ืฉื™ื•ื—ื–ืจ ืœืžืฉืชืžืฉ ื‘ืฆื•ืจื” ืฉืœ ืชื’ื•ื‘ื”. ื‘ื”ื’ื“ืจื•ืช ื ื™ืชืŸ ืœื”ืชืื™ื ืืช ืจืžืช ื”ืจื™ืฉื•ื, ื ื™ืชืŸ ืœืจืื•ืช ืืช ื”ืœื•ื’ื™ื {ื”ื™ื›ืŸ ืคืจืงืช ืืช nifi}/nifi-1.9.2/logs, ื™ืฉื ื ื’ื ืคืจืžื˜ืจื™ื ืฉืœ ื›ืฉืœ/ื”ืฆืœื—ื” - ืขืœ ืกืžืš ืคืจืžื˜ืจื™ื ืืœื• ื ื™ืชืŸ ืœื•ื•ืกืช ืืช ื”ืชื”ืœื™ืš ื‘ื›ืœืœื•ืชื• . ื›ืœื•ืžืจ, ื‘ืžืงืจื” ืฉืœ ืขื™ื‘ื•ื“ ื˜ืงืกื˜ ืžื•ืฆืœื—, ืชื”ืœื™ืš ืฉืœื™ื—ืช ื”ืชื’ื•ื‘ื” ืœืžืฉืชืžืฉ ื™ื™ืงืจื, ื•ื‘ืžืงืจื” ืื—ืจ ืคืฉื•ื˜ ื ืจืฉื•ื ืืช ื”ืชื”ืœื™ืš ื”ืœื ืžื•ืฆืœื—.

Apache NIFI - ืกืงื™ืจื” ืงืฆืจื” ืฉืœ ืชื›ื•ื ื•ืช ื‘ืคื•ืขืœ

ืื™ืŸ ืฉื•ื ื“ื‘ืจ ืžืขื ื™ื™ืŸ ื‘ืžื™ื•ื—ื“ ื‘ืžืืคื™ื™ื ื™ HandleHttpResponse ืžืœื‘ื“ ื”ืžืฆื‘ ื›ืืฉืจ ืชื’ื•ื‘ื” ื ื•ืฆืจืช ื‘ื”ืฆืœื—ื”.

Apache NIFI - ืกืงื™ืจื” ืงืฆืจื” ืฉืœ ืชื›ื•ื ื•ืช ื‘ืคื•ืขืœ

ืกื™ื“ืจื ื• ืืช ื”ื‘ืงืฉื” ื•ื”ืชื’ื•ื‘ื” - ื ืขื‘ื•ืจ ืœืงื‘ืœืช ื”ืงื•ื‘ืฅ ื•ื”ืฆื‘ืชื• ืขืœ ืฉืจืช ื”-FTP. FetchFile - ืžืงื‘ืœ ืงื•ื‘ืฅ ื‘ื ืชื™ื‘ ืฉืฆื•ื™ืŸ ื‘ื”ื’ื“ืจื•ืช ื•ืžืขื‘ื™ืจ ืื•ืชื• ืœืชื”ืœื™ืš ื”ื‘ื.

Apache NIFI - ืกืงื™ืจื” ืงืฆืจื” ืฉืœ ืชื›ื•ื ื•ืช ื‘ืคื•ืขืœ

ื•ืื– ืจื™ื‘ื•ืข PutSftp - ืžืฆื™ื‘ ืืช ื”ืงื•ื‘ืฅ ื‘ืื—ืกื•ืŸ ื”ืงื‘ืฆื™ื. ืื ื• ื™ื›ื•ืœื™ื ืœืจืื•ืช ืืช ืคืจืžื˜ืจื™ ื”ืชืฆื•ืจื” ืœื”ืœืŸ.

Apache NIFI - ืกืงื™ืจื” ืงืฆืจื” ืฉืœ ืชื›ื•ื ื•ืช ื‘ืคื•ืขืœ

ื›ื“ืื™ ืœืฉื™ื ืœื‘ ืœื›ืš ืฉื›ืœ ืจื™ื‘ื•ืข ื”ื•ื ืชื”ืœื™ืš ื ืคืจื“ ืฉื™ืฉ ืœืฆืืช ืœื“ืจืš. ื”ืกืชื›ืœื ื• ืขืœ ื”ื“ื•ื’ืžื” ื”ืคืฉื•ื˜ื” ื‘ื™ื•ืชืจ ืฉืื™ื ื” ื“ื•ืจืฉืช ื”ืชืืžื” ืื™ืฉื™ืช ืžื•ืจื›ื‘ืช. ืœืื—ืจ ืžื›ืŸ, ื ืกืชื›ืœ ืขืœ ื”ืชื”ืœื™ืš ืงืฆืช ื™ื•ืชืจ ืžืกื•ื‘ืš, ืฉื ื ื›ืชื•ื‘ ืงืฆืช ืขืœ ื”ื—ืจื™ืฆื™ื.

ื“ื•ื’ืžื” ืžื•ืจื›ื‘ืช ื™ื•ืชืจ

ืฉื™ืจื•ืช ื”ืขื‘ืจืช ื”ื ืชื•ื ื™ื ืœืฆืจื›ืŸ ื”ืชื‘ืจืจ ื›ืžืขื˜ ื™ื•ืชืจ ืžืกื•ื‘ืš ืขืงื‘ ืชื”ืœื™ืš ืฉื™ื ื•ื™ ื”ื•ื“ืขืช SOAP. ื”ืชื”ืœื™ืš ื”ื›ืœืœื™ ืžื•ืฆื’ ื‘ืื™ื•ืจ ืœืžื˜ื”.

Apache NIFI - ืกืงื™ืจื” ืงืฆืจื” ืฉืœ ืชื›ื•ื ื•ืช ื‘ืคื•ืขืœ

ื›ืืŸ ื”ืจืขื™ื•ืŸ ื’ื ืœื ืžืกื•ื‘ืš ื‘ืžื™ื•ื—ื“: ืงื™ื‘ืœื ื• ืคื ื™ื™ื” ืžื”ืฆืจื›ืŸ ืฉื”ื•ื ืฆืจื™ืš ื ืชื•ื ื™ื, ืฉืœื—ื ื• ืชืฉื•ื‘ื” ืฉืงื™ื‘ืœ ื”ื•ื“ืขื”, ื”ืชื—ืœื ื• ื‘ืชื”ืœื™ืš ืงื‘ืœืช ืงื•ื‘ืฅ ื”ืชื’ื•ื‘ื”, ืื—ืจ ื›ืš ืขืจื›ื ื• ืื•ืชื• ื‘ื”ื™ื’ื™ื•ืŸ ืžืกื•ื™ื, ื•ืื– ื”ืขื‘ื™ืจ ืืช ื”ืงื•ื‘ืฅ ืœืฆืจื›ืŸ ื‘ืฆื•ืจื” ืฉืœ ื”ื•ื“ืขืช SOAP ืœืฉืจืช.

ืื ื™ ื—ื•ืฉื‘ ืฉืื™ืŸ ืฆื•ืจืš ืœืชืืจ ืฉื•ื‘ ืืช ื”ืจื™ื‘ื•ืขื™ื ืฉืจืื™ื ื• ืœืžืขืœื” - ื‘ื•ืื• ื ืขื‘ื•ืจ ื™ืฉืจ ืœื—ื“ืฉื™ื. ืื ืืชื” ืฆืจื™ืš ืœืขืจื•ืš ืงื•ื‘ืฅ ื›ืœืฉื”ื• ื•ืจื™ื‘ื•ืขื™ื ืจื’ื™ืœื™ื ืžืกื•ื’ ReplaceText ืื™ื ื ืžืชืื™ืžื™ื, ืชืฆื˜ืจืš ืœื›ืชื•ื‘ ืกืงืจื™ืคื˜ ืžืฉืœืš. ื ื™ืชืŸ ืœืขืฉื•ืช ื–ืืช ื‘ืืžืฆืขื•ืช ืจื™ื‘ื•ืข ExecuteGroogyScript. ื”ื”ื’ื“ืจื•ืช ืฉืœื• ืžื•ืฆื’ื•ืช ืœื”ืœืŸ.

Apache NIFI - ืกืงื™ืจื” ืงืฆืจื” ืฉืœ ืชื›ื•ื ื•ืช ื‘ืคื•ืขืœ

ื™ืฉื ืŸ ืฉืชื™ ืืคืฉืจื•ื™ื•ืช ืœื˜ืขื™ื ืช ื”ืกืงืจื™ืคื˜ ื‘ืจื™ื‘ื•ืข ื–ื”. ื”ืจืืฉื•ืŸ ื”ื•ื ื”ื•ืจื“ืช ืงื•ื‘ืฅ ืขื ืกืงืจื™ืคื˜. ื”ืฉื ื™ ื”ื•ื ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ืกืงืจื™ืคื˜ ืœืชื•ืš scriptBody. ืขื“ ื›ืžื” ืฉื™ื“ื•ืข ืœื™, ืจื™ื‘ื•ืข ื”-executeScript ืชื•ืžืš ื‘ืžืกืคืจ ืฉืคื•ืช - ืื—ืช ืžื”ืŸ ื”ื™ื ื’ืจื•ื‘ื™. ืื ื™ ืืื›ื–ื‘ ืžืคืชื—ื™ Java - ืื™ ืืคืฉืจ ืœื›ืชื•ื‘ ืกืงืจื™ืคื˜ื™ื ื‘ื’'ืื•ื•ื” ื‘ืจื™ื‘ื•ืขื™ื ื›ืืœื”. ืœืžื™ ืฉื‘ืืžืช ืจื•ืฆื”, ืฆืจื™ืš ืœื™ืฆื•ืจ ืจื™ื‘ื•ืข ืžื•ืชืื ืื™ืฉื™ืช ืžืฉืœื›ื ื•ืœื”ื•ืกื™ืฃ ืื•ืชื• ืœืžืขืจื›ืช NIFI. ื›ืœ ื”ืžื‘ืฆืข ื”ื–ื” ืžืœื•ื•ื” ื‘ืจื™ืงื•ื“ ื“ื™ ืืจื•ืš ืขื ื˜ืžื‘ื•ืจื™ืŸ, ื‘ื• ืœื ื ืขืกื•ืง ื‘ืžืืžืจ ื–ื”. ื‘ื—ืจืชื™ ื‘ืฉืคื” ื”ื’ืจื•ื‘ื™. ืœื”ืœืŸ ืกืงืจื™ืคื˜ ื‘ื“ื™ืงื” ืฉืคืฉื•ื˜ ืžืขื“ื›ืŸ ื‘ื”ื“ืจื’ื” ืืช ื”ืžื–ื”ื” ื‘ื”ื•ื“ืขืช SOAP. ื—ืฉื•ื‘ ืœืฆื™ื™ืŸ. ืืชื” ืœื•ืงื— ืืช ื”ืงื•ื‘ืฅ ืž-flowFile ื•ืžืขื“ื›ืŸ ืื•ืชื•, ืืœ ืชืฉื›ื— ืฉืืชื” ืฆืจื™ืš ืœื”ื—ื–ื™ืจ ืื•ืชื• ืœืฉื, ืžืขื•ื“ื›ืŸ. ื›ืžื• ื›ืŸ, ืจืื•ื™ ืœืฆื™ื™ืŸ ืฉืœื ื›ืœ ื”ืกืคืจื™ื•ืช ื›ืœื•ืœื•ืช. ื™ื›ื•ืœ ืœืงืจื•ืช ืฉืขื“ื™ื™ืŸ ืชืฆื˜ืจืš ืœื™ื™ื‘ื ืืช ืื—ืช ื”-libs. ื—ื™ืกืจื•ืŸ ื ื•ืกืฃ ื”ื•ื ืฉื”ืชืกืจื™ื˜ ื‘ืจื™ื‘ื•ืข ื”ื–ื” ื“ื™ ืงืฉื” ืœื ื™ืคื•ื™ ื‘ืื’ื™ื. ื™ืฉ ื“ืจืš ืœื”ืชื—ื‘ืจ ืœ-NIFI JVM ื•ืœื”ืชื—ื™ืœ ืืช ืชื”ืœื™ืš ืื™ืชื•ืจ ื”ื‘ืื’ื™ื. ื‘ืื•ืคืŸ ืื™ืฉื™, ืคืชื—ืชื™ ืืคืœื™ืงืฆื™ื” ืžืงื•ืžื™ืช ื•ื“ื™ืžืชื™ ืงื‘ืœืช ืงื•ื‘ืฅ ืžื”ืกืฉืŸ. ืขืฉื™ืชื™ ื’ื ื ื™ืคื•ื™ ื‘ืื’ื™ื ืžืงื•ืžื™. ืฉื’ื™ืื•ืช ืฉืžื•ืคื™ืขื•ืช ื‘ืขืช ื˜ืขื™ื ืช ืกืงืจื™ืคื˜ ื“ื™ ืงืœื•ืช ืœื’ื•ื’ืœ ื•ื ื›ืชื‘ื•ืช ืขืœ ื™ื“ื™ 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)
}

ืœืžืขืฉื”, ื›ืืŸ ืžืกืชื™ื™ืžืช ื”ื”ืชืืžื” ื”ืื™ืฉื™ืช ืฉืœ ื”ืจื™ื‘ื•ืข. ืœืื—ืจ ืžื›ืŸ, ื”ืงื•ื‘ืฅ ื”ืžืขื•ื“ื›ืŸ ืžื•ืขื‘ืจ ืœืจื™ื‘ื•ืข, ืืฉืจ ืื—ืจืื™ ืขืœ ืฉืœื™ื—ืช ื”ืงื•ื‘ืฅ ืœืฉืจืช. ืœื”ืœืŸ ื”ื”ื’ื“ืจื•ืช ืขื‘ื•ืจ ื”ืจื™ื‘ื•ืข ื”ื–ื”.

Apache NIFI - ืกืงื™ืจื” ืงืฆืจื” ืฉืœ ืชื›ื•ื ื•ืช ื‘ืคื•ืขืœ

ืื ื• ืžืชืืจื™ื ืืช ื”ืฉื™ื˜ื” ืฉื‘ื” ืชื•ืขื‘ืจ ื”ื•ื“ืขืช SOAP. ืื ื—ื ื• ื›ื•ืชื‘ื™ื ืื™ืคื”. ื‘ืฉืœื‘ ื”ื‘ื ืืชื” ืฆืจื™ืš ืœืฆื™ื™ืŸ ืฉื–ื” SOAP.

Apache NIFI - ืกืงื™ืจื” ืงืฆืจื” ืฉืœ ืชื›ื•ื ื•ืช ื‘ืคื•ืขืœ

ื”ื•ืกืฃ ืžืกืคืจ ืžืืคื™ื™ื ื™ื ื›ื’ื•ืŸ ืžืืจื— ื•ืคืขื•ืœื” (soapAction). ืื ื—ื ื• ืฉื•ืžืจื™ื ื•ื‘ื•ื“ืงื™ื. ืชื•ื›ืœ ืœืจืื•ืช ืคืจื˜ื™ื ื ื•ืกืคื™ื ื›ื™ืฆื“ ืœืฉืœื•ื— ื‘ืงืฉื•ืช SOAP ื›ืืŸ

ื‘ื“ืงื ื• ืžืกืคืจ ืืคืฉืจื•ื™ื•ืช ืœืฉื™ืžื•ืฉ ื‘ืชื”ืœื™ื›ื™ NIFI. ืื™ืš ื”ื ืžืงื™ื™ืžื™ื ืื™ื ื˜ืจืืงืฆื™ื” ื•ืžื” ื”ืชื•ืขืœืช ื”ืืžื™ืชื™ืช ืฉืœื”ื? ื”ื“ื•ื’ืžืื•ืช ื”ื ื—ืฉื‘ื•ืช ื”ืŸ ืžื‘ื—ืŸ ื•ื”ืŸ ืžืขื˜ ืฉื•ื ื•ืช ืžืžื” ืฉืงื•ืจื” ื‘ืคื•ืขืœ ื‘ืงืจื‘. ืื ื™ ืžืงื•ื•ื” ืฉืžืืžืจ ื–ื” ื™ื”ื™ื” ืžืขื˜ ืฉื™ืžื•ืฉื™ ืขื‘ื•ืจ ืžืคืชื—ื™ื. ืชื•ื“ื” ืœืš ืขืœ ืชืฉื•ืžืช ื”ืœื‘. ืื ื™ืฉ ืœืš ืฉืืœื•ืช, ืชื›ืชื•ื‘. ืื ื™ ืื ืกื” ืœืขื ื•ืช.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”