{"id":99457,"date":"2025-02-28T13:05:44","date_gmt":"2025-02-28T09:35:44","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/%d8%af%d8%b1%da%a9-%d9%85%d8%ad%d8%b1%da%a9-%d9%87%d8%a7%db%8c-%d8%b3%d9%81%d8%a7%d8%b1%d8%b4%db%8c-%d8%af%d8%b1-%d8%a2%d9%be%d8%a7%da%86%db%8c\/"},"modified":"2025-02-28T13:05:44","modified_gmt":"2025-02-28T09:35:44","slug":"%d8%af%d8%b1%da%a9-%d9%85%d8%ad%d8%b1%da%a9-%d9%87%d8%a7%db%8c-%d8%b3%d9%81%d8%a7%d8%b1%d8%b4%db%8c-%d8%af%d8%b1-%d8%a2%d9%be%d8%a7%da%86%db%8c","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/%d8%af%d8%b1%da%a9-%d9%85%d8%ad%d8%b1%da%a9-%d9%87%d8%a7%db%8c-%d8%b3%d9%81%d8%a7%d8%b1%d8%b4%db%8c-%d8%af%d8%b1-%d8%a2%d9%be%d8%a7%da%86%db%8c\/","title":{"rendered":"\u062f\u0631\u06a9 \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 \u0622\u067e\u0627\u0686\u06cc"},"content":{"rendered":"<div data-article-id=\"2301322\" id=\"article-body\">\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2d5534lr6pybbybt61cg.png\" alt=\"\u0648\u06cc\u0646\u062f\u0648\u0632 \u0648 \u0645\u062d\u0631\u06a9 \u0647\u0627\" loading=\"lazy\" width=\"800\" height=\"482\" title=\"\"><\/p>\n<p>\u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u067e\u0646\u062c\u0631\u0647 \u0622\u067e\u0627\u0686\u06cc \u0641\u0644\u06cc\u0646\u06a9 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u0646\u062f <strong>\u06a9\u06cc<\/strong> \u0645\u062d\u0627\u0633\u0628\u0647 \u067e\u0646\u062c\u0631\u0647 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u067e\u0631\u062f\u0627\u0632\u0634 \u062c\u0631\u06cc\u0627\u0646 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc \u0634\u0648\u062f (\u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u067e\u0627\u06a9 \u0645\u06cc \u0634\u0648\u062f). <\/p>\n<p>\u0647\u0631 \u067e\u0646\u062c\u0631\u0647 \u062f\u0631 \u0641\u0644\u06cc\u0646\u06a9 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0645\u0627\u0634\u0647 \u0645\u0631\u062a\u0628\u0637 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0631 \u0639\u0646\u0635\u0631 \u0648\u0631\u0648\u062f\u06cc \u0648 \u0647\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f \u062a\u0627\u06cc\u0645\u0631 \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0627 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u062a\u0635\u0645\u06cc\u0645 \u0628\u06af\u06cc\u0631\u062f <code>FIRE<\/code> (\u0627\u0646\u062a\u0634\u0627\u0631 \u0646\u062a\u0627\u06cc\u062c) \u060c <code>PURGE<\/code> (\u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u0631\u0647\u0627 \u06a9\u0646\u06cc\u062f) \u06cc\u0627 \u0647\u0631 \u062f\u0648.<br \/>\u200b<br \/>\u0628\u0647 \u0639\u0628\u0627\u0631\u062a \u062f\u06cc\u06af\u0631 \u060c \u0645\u0627\u0634\u0647 \u0634\u0631\u0627\u06cc\u0637 \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0647 \u0641\u0644\u06cc\u0646\u06a9 \u0645\u06cc \u06af\u0648\u06cc\u062f \u0686\u0647 \u0645\u0648\u0642\u0639 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062e\u0631\u0648\u062c\u06cc \u062c\u0645\u0639 \u0634\u062f\u0647 \u0627\u0632 \u0622\u0646 \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u06a9\u0646\u06cc\u062f. \u0628\u0647 \u0637\u0648\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u060c \u0641\u0644\u06cc\u0646\u06a9 \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u0645\u0634\u062a\u0631\u06a9 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0627\u0645\u0627 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc\u06cc \u062f\u0627\u0631\u0646\u062f \u0648 \u0627\u06cc\u0646 \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0645\u0641\u06cc\u062f \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/%d8%af%d8%b1%da%a9-%d9%85%d8%ad%d8%b1%da%a9-%d9%87%d8%a7%db%8c-%d8%b3%d9%81%d8%a7%d8%b1%d8%b4%db%8c-%d8%af%d8%b1-%d8%a2%d9%be%d8%a7%da%86%db%8c\/#%D8%B3%D8%A7%D8%AE%D8%AA_%D9%88_%D8%B3%D8%A7%D8%B2%D9%87%D8%A7\" >\u0633\u0627\u062e\u062a \u0648 \u0633\u0627\u0632\u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/%d8%af%d8%b1%da%a9-%d9%85%d8%ad%d8%b1%da%a9-%d9%87%d8%a7%db%8c-%d8%b3%d9%81%d8%a7%d8%b1%d8%b4%db%8c-%d8%af%d8%b1-%d8%a2%d9%be%d8%a7%da%86%db%8c\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D9%85%D8%AD%D8%B1%DA%A9_%D9%87%D8%A7%DB%8C_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C\" >\u0627\u06cc\u062c\u0627\u062f \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/%d8%af%d8%b1%da%a9-%d9%85%d8%ad%d8%b1%da%a9-%d9%87%d8%a7%db%8c-%d8%b3%d9%81%d8%a7%d8%b1%d8%b4%db%8c-%d8%af%d8%b1-%d8%a2%d9%be%d8%a7%da%86%db%8c\/#%D9%85%D8%AB%D8%A7%D9%84_1_%D9%BE%D9%86%D8%AC%D8%B1%D9%87_%D9%BE%D8%B1%D8%B4%D9%88%D8%B1_%D9%88_%D8%B4%D9%84%DB%8C%DA%A9_%D8%B2%D9%88%D8%AF%D8%B1%D8%B3_%D9%85%D8%A8%D8%AA%D9%86%DB%8C_%D8%A8%D8%B1_%D8%AA%D8%B9%D8%AF%D8%A7%D8%AF\" >\u0645\u062b\u0627\u0644 1: \u067e\u0646\u062c\u0631\u0647 \u067e\u0631\u0634\u0648\u0631 \u0648 \u0634\u0644\u06cc\u06a9 \u0632\u0648\u062f\u0631\u0633 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u062a\u0639\u062f\u0627\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/%d8%af%d8%b1%da%a9-%d9%85%d8%ad%d8%b1%da%a9-%d9%87%d8%a7%db%8c-%d8%b3%d9%81%d8%a7%d8%b1%d8%b4%db%8c-%d8%af%d8%b1-%d8%a2%d9%be%d8%a7%da%86%db%8c\/#Example_2_Session_Inactivity_With_Event_Signals\" >Example 2: Session Inactivity With Event Signals<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/%d8%af%d8%b1%da%a9-%d9%85%d8%ad%d8%b1%da%a9-%d9%87%d8%a7%db%8c-%d8%b3%d9%81%d8%a7%d8%b1%d8%b4%db%8c-%d8%af%d8%b1-%d8%a2%d9%be%d8%a7%da%86%db%8c\/#%D9%BE%D8%A7%DB%8C%D8%A7%D9%86\" >\u067e\u0627\u06cc\u0627\u0646<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/%d8%af%d8%b1%da%a9-%d9%85%d8%ad%d8%b1%da%a9-%d9%87%d8%a7%db%8c-%d8%b3%d9%81%d8%a7%d8%b1%d8%b4%db%8c-%d8%af%d8%b1-%d8%a2%d9%be%d8%a7%da%86%db%8c\/#%D8%BA%D8%B0%D8%A7%DB%8C_%DA%A9%D9%84%DB%8C%D8%AF%DB%8C_%D9%88_%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86_%D8%B1%D9%88%D8%B4%D9%87%D8%A7\" >\u063a\u0630\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u0647\u0627:<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B3%D8%A7%D8%AE%D8%AA_%D9%88_%D8%B3%D8%A7%D8%B2%D9%87%D8%A7\"><\/span>\n<p>  \u0633\u0627\u062e\u062a \u0648 \u0633\u0627\u0632\u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0641\u0644\u06cc\u0646\u06a9 \u0628\u0627 \u0686\u0646\u062f \u0645\u062d\u0631\u06a9 \u062f\u0627\u062e\u0644\u06cc \u0628\u0631\u0627\u06cc \u0631\u0641\u062a\u0627\u0631\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0647\u0645\u0631\u0627\u0647 \u0627\u0633\u062a:<\/p>\n<ul>\n<li>\n<p><strong>EventTimetrigger:<\/strong> \u0622\u062a\u0634 \u0633\u0648\u0632\u06cc \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0648\u0627\u062a\u0631\u0645\u0627\u0631\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u0627\u0632 \u0627\u0646\u062a\u0647\u0627\u06cc \u067e\u0646\u062c\u0631\u0647 \u0639\u0628\u0648\u0631 \u0645\u06cc \u06a9\u0646\u062f (\u06cc\u0639\u0646\u06cc \u067e\u0646\u062c\u0631\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0633\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f). \u0627\u06cc\u0646 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0628\u0631\u0627\u06cc \u0648\u06cc\u0646\u062f\u0648\u0632\u0647\u0627\u06cc \u0632\u0645\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0627\u0633\u062a \u0648 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u067e\u0633 \u0627\u0632 \u0631\u0633\u06cc\u062f\u0646 \u0632\u0645\u0627\u0646 \u0628\u0646\u062f\u06cc \u067e\u0627\u06cc\u0627\u0646 \u067e\u0646\u062c\u0631\u0647 \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u0639\u0644\u0627\u0645\u062a \u0647\u0627\u06cc \u0622\u0628\u06cc \u060c \u0646\u062a\u0627\u06cc\u062c \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<\/li>\n<li>\n<p><strong>\u067e\u0631\u062f\u0627\u0632\u0634 Timetrigger:<\/strong> \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0633\u0627\u0639\u062a \u0632\u0645\u0627\u0646 \u067e\u0631\u062f\u0627\u0632\u0634 \u0628\u0647 \u0627\u0646\u062a\u0647\u0627\u06cc \u067e\u0646\u062c\u0631\u0647 \u0645\u06cc \u0631\u0633\u062f \u060c \u0622\u062a\u0634 \u0645\u06cc \u06af\u06cc\u0631\u062f. \u0627\u06cc\u0646 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0628\u0631\u0627\u06cc \u0648\u06cc\u0646\u062f\u0648\u0632\u0647\u0627\u06cc \u0632\u0645\u0627\u0646 \u067e\u0631\u062f\u0627\u0632\u0634 \u0627\u0633\u062a.<\/p>\n<\/li>\n<li>\n<p><strong>\u0634\u0645\u0627\u0631\u0634 \u0645\u0627\u0634\u0647:<\/strong> \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u062a\u0639\u062f\u0627\u062f \u0639\u0646\u0627\u0635\u0631 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u0628\u0647 \u06cc\u06a9 \u0622\u0633\u062a\u0627\u0646\u0647 \u0634\u0645\u0627\u0631\u0634 \u0645\u0634\u062e\u0635 \u0645\u06cc \u0631\u0633\u062f \u0622\u062a\u0634 \u0645\u06cc \u06af\u06cc\u0631\u062f<\/p>\n<\/li>\n<li>\n<p><strong>PurgingTrigger:<\/strong> \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0647 \u0647\u0631 \u0645\u062d\u0631\u06a9 \u062f\u06cc\u06af\u0631\u06cc \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0645\u0627\u0634\u0647 \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u0622\u062a\u0634 \u0645\u06cc \u06af\u06cc\u0631\u062f \u060c \u0645\u062d\u062a\u0648\u0627\u06cc \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u067e\u0627\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u06cc\u0646 \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u0627\u0633\u06cc \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc \u062f\u0647\u0646\u062f- <code>time-driven<\/code> \u06cc\u0627 <code>count-driven<\/code> \u0634\u0644\u06cc\u06a9 \u060c \u0627\u0645\u0627 \u0622\u0646\u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0627\u06af\u0631 \u0628\u0627 \u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u060c \u0645\u0627\u0634\u0647 \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0628\u06af\u06cc\u0631\u06cc\u062f \u060c \u0645\u0627\u0634\u0647 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u060c \u0646\u0647 \u0622\u0646 \u0631\u0627 \u062a\u06a9\u0645\u06cc\u0644 \u06a9\u0646\u06cc\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u0627\u06af\u0631 \u06cc\u06a9 Counttrigger \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u067e\u0646\u062c\u0631\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0647\u06cc\u062f \u060c \u067e\u0646\u062c\u0631\u0647 \u0641\u0642\u0637 \u0628\u0631\u0627\u0633\u0627\u0633 \u0634\u0645\u0627\u0631\u0634 \u0622\u062a\u0634 \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0639\u0644\u0627\u0645\u062a \u0632\u0645\u0627\u0646\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0645\u06cc \u06af\u06cc\u0631\u062f. \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u0627\u0633\u062a \u06a9\u0647 \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u062e\u0627\u0631\u062c \u0627\u0632 \u062c\u0639\u0628\u0647 \u062a\u0631\u06a9\u06cc\u0628 \u0634\u0648\u0646\u062f-\u0634\u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u067e\u0646\u062c\u0631\u0647 \u0627\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0641\u0642\u0637 \u0628\u0627 \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u060c \u062f\u0631 \u06cc\u06a9 \u0634\u0645\u0627\u0631\u0634 \u06cc\u0627 \u0634\u0631\u0627\u06cc\u0637 \u0632\u0645\u0627\u0646\u06cc \u0622\u062a\u0634 \u0645\u06cc \u06af\u06cc\u0631\u062f \u060c \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u06cc\u062f. <\/p>\n<p>\u062f\u0631 \u0639\u0645\u0644 \u060c \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u063a\u0644\u0628 \u0628\u0647 \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f. \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0634\u0631\u0627\u06cc\u0637 \u062f\u0644\u062e\u0648\u0627\u0647 (\u06cc\u0627 \u062a\u0631\u06a9\u06cc\u0628 \u0634\u0631\u0627\u06cc\u0637) \u0631\u0627 \u0628\u0631\u0627\u06cc \u0634\u0644\u06cc\u06a9 \u0648\u06cc\u0646\u062f\u0648\u0632 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f \u060c \u0645\u0627\u0646\u0646\u062f <strong>&#8220;\u0622\u062a\u0634 \u0633\u0648\u0632\u06cc \u06cc\u0627 \u0632\u0645\u0627\u0646 \u060c \u0647\u0631 \u06a9\u062f\u0627\u0645 \u06a9\u0647 \u0627\u0648\u0644 \u0628\u0627\u0634\u062f&#8221;<\/strong> \u06cc\u0627 <strong>&#8220;\u0622\u062a\u0634 \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u062e\u0627\u0635 \u0631\u062e \u0645\u06cc \u062f\u0647\u062f.&#8221;<\/strong> <\/p>\n<p>\u0628\u0627 \u0646\u0648\u0634\u062a\u0646 \u06cc\u06a9 \u0645\u0627\u0634\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0633\u0627\u062e\u062a \u0648 \u0633\u0627\u0632\u0647\u0627 \u063a\u0644\u0628\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0646\u062a\u0627\u06cc\u062c \u0627\u0648\u0644\u06cc\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u060c \u0645\u0646\u0637\u0642 \u062e\u0627\u0635 \u062c\u0644\u0633\u0647 \u060c \u0633\u06cc\u0627\u0633\u062a \u0647\u0627\u06cc \u0634\u0644\u06cc\u06a9 \u062f\u06cc\u0631\u0647\u0646\u06af\u0627\u0645 \u0648 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D9%85%D8%AD%D8%B1%DA%A9_%D9%87%D8%A7%DB%8C_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u0645\u0627\u0634\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 \u0641\u0644\u06cc\u0646\u06a9 (DataStream API) \u060c \u06a9\u0644\u0627\u0633 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u06a9\u06cc\u062f\u0647 \u0631\u0627 \u06af\u0633\u062a\u0631\u0634 \u0645\u06cc \u062f\u0647\u062f <code>Trigger<t w=\"\"\/><\/code> \u06a9\u0644\u0627\u0633 \u060c \u06a9\u062c\u0627 <code>T<\/code> \u0646\u0648\u0639 \u0639\u0646\u0627\u0635\u0631 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u0627\u0633\u062a \u0648 W \u0646\u0648\u0639 \u067e\u0646\u062c\u0631\u0647 (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 TimeWindow) \u0627\u0633\u062a. <\/p>\n<p>\u062f\u0631 \u0632\u06cc\u0631 \u06a9\u0644\u0627\u0633 \u062e\u0648\u062f \u060c \u0686\u0646\u062f\u06cc\u0646 \u0631\u0648\u0634 \u0631\u0627 \u06a9\u0647 \u0641\u0644\u06cc\u0646\u06a9 \u0628\u0631\u0627\u06cc \u0647\u062f\u0627\u06cc\u062a \u0631\u0641\u062a\u0627\u0631 \u0645\u0627\u0634\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0646\u0627\u062f\u06cc\u062f\u0647 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u0648 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u06a9\u0627\u0645\u0644 \u0631\u0627 \u0628\u0627 \u0622\u0646 \u0631\u0648\u0634 \u0647\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0648\u0647\u0627 <code>TriggerContext<\/code> \u0628\u0647 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0647\u0627 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u060c \u06a9\u0647 \u062e\u062f\u0645\u0627\u062a \u0644\u0627\u0632\u0645 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062b\u0628\u062a \u0648 \u062d\u0630\u0641 \u062a\u0627\u06cc\u0645\u0631\u0647\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f (\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u06cc\u0634\u062a\u0631 \u0628\u0628\u06cc\u0646\u06cc\u062f) \u0648 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062d\u0627\u0644\u062a \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 \u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0628\u0647 \u067e\u0646\u062c\u0631\u0647. \u0628\u0631\u0627\u06cc \u0631\u062f\u06cc\u0627\u0628\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u0627\u0646\u0646\u062f \u0634\u0645\u0627\u0631\u0634 \u0639\u0646\u0627\u0635\u0631 \u06cc\u0627 \u067e\u0631\u0686\u0645 \u0647\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062d\u0627\u0644\u062a \u0641\u0644\u06cc\u0646\u06a9 \u062f\u0631 \u0645\u062d\u0631\u06a9 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u062c\u0631\u0627\u06cc \u0645\u0627\u0634\u0647 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u062a\u0639\u062f\u0627\u062f \u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06cc\u06a9 <code>ValueState<integer\/><\/code> \u0628\u0631\u0627\u06cc \u0634\u0645\u0627\u0631\u0634 \u0639\u0646\u0627\u0635\u0631\u06cc \u06a9\u0647 \u062a\u0627\u06a9\u0646\u0648\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u062f\u06cc\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p><strong>\u062a\u0648\u062c\u0647:<\/strong> \u0645\u062d\u0631\u06a9 \u0647\u0627 \u0628\u0627\u06cc\u062f \u0633\u0631\u06cc\u0627\u0644 \u0628\u0627\u0634\u0646\u062f \u0632\u06cc\u0631\u0627 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0646\u0645\u0648\u062f\u0627\u0631 \u0634\u063a\u0644\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u0634\u0648\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u060c \u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0628\u0627\u0632\u06af\u0634\u062a <code>FIRE<\/code> <strong>\u0648\u0636\u0639\u06cc\u062a \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u067e\u0627\u06a9 \u0646\u0645\u06cc \u06a9\u0646\u062f<\/strong> \u0628\u0647 \u0637\u0648\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636 &#8211; \u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647 \u0627\u0633\u062a \u0648 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u0631\u0627 \u062c\u0645\u0639 \u06a9\u0646\u062f \u060c \u0628\u0647 \u0637\u0648\u0631 \u0628\u0627\u0644\u0642\u0648\u0647 \u0628\u0639\u062f\u0627\u064b \u062f\u0648\u0628\u0627\u0631\u0647 \u0634\u0644\u06cc\u06a9 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06af\u0631 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u067e\u0646\u062c\u0631\u0647 \u0647\u0646\u06af\u0627\u0645 \u0634\u0644\u06cc\u06a9 \u067e\u0627\u06a9 \u0634\u0648\u062f (\u0641\u0642\u0637 \u06cc\u06a9 \u0628\u0627\u0631 \u0646\u062a\u0627\u06cc\u062c \u0631\u0627 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc \u06a9\u0646\u062f) \u060c \u0628\u0627\u06cc\u062f \u0628\u0631\u06af\u0631\u062f\u06cc\u062f <code>FIRE_AND_PURGE<\/code> \u06cc\u0627 \u0627\u0632 a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>PurgingTrigger<\/code> \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc <\/p>\n<p>\u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u0647\u0631 \u062f\u0648 \u0631\u0641\u062a\u0627\u0631 \u0631\u0627 \u062f\u0631 \u0632\u06cc\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 \u0641\u0644\u06cc\u0646\u06a9 \u060c \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u0637\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<blockquote>\n<p>\u06a9\u062f \u0645\u0646\u0628\u0639 \u06a9\u0627\u0645\u0644 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u0627\u0641\u062a \u0648 \u0627\u06af\u0631 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0647\u0633\u062a\u06cc\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f Cloud Ververica \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0627\u06cc\u06af\u0627\u0646 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%AB%D8%A7%D9%84_1_%D9%BE%D9%86%D8%AC%D8%B1%D9%87_%D9%BE%D8%B1%D8%B4%D9%88%D8%B1_%D9%88_%D8%B4%D9%84%DB%8C%DA%A9_%D8%B2%D9%88%D8%AF%D8%B1%D8%B3_%D9%85%D8%A8%D8%AA%D9%86%DB%8C_%D8%A8%D8%B1_%D8%AA%D8%B9%D8%AF%D8%A7%D8%AF\"><\/span>\n<p>  \u0645\u062b\u0627\u0644 1: \u067e\u0646\u062c\u0631\u0647 \u067e\u0631\u0634\u0648\u0631 \u0648 \u0634\u0644\u06cc\u06a9 \u0632\u0648\u062f\u0631\u0633 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u062a\u0639\u062f\u0627\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u0633\u0646\u0627\u0631\u06cc\u0648:<\/strong> \u062a\u0635\u0648\u0631 \u06a9\u0646\u06cc\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u062c\u0627\u0631\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0631\u062f\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u062f-\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 <code>page views<\/code>\u0628\u0627 <code>add-to-cart<\/code>\u0628\u0627 <code>checkout initiations<\/code> &#8211; \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062c\u0631\u06cc\u0627\u0646. \u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0631\u062e\u06cc \u0627\u0632 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u06cc\u06a9 \u067e\u0646\u062c\u0631\u0647 \u0632\u0645\u0627\u0646\u06cc \u067e\u0631\u0634\u0648\u0631 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0646\u06cc\u0645 (\u0645\u062b\u0644\u0627\u064b \u0648\u06cc\u0646\u062f\u0648\u0632 1 \u0633\u0627\u0639\u062a\u0647 \u062f\u0631 \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631). <\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0633\u06cc\u0627\u0631 \u0641\u0639\u0627\u0644 \u0628\u0627\u0634\u062f \u060c \u0645\u0627 \u0646\u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u062a\u0627 \u067e\u0627\u06cc\u0627\u0646 \u0633\u0627\u0639\u062a \u0635\u0628\u0631 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0646\u062a\u0627\u06cc\u062c \u0648\u0627\u0633\u0637\u0647 \u0627\u06cc \u06a9\u0633\u0628 \u06a9\u0646\u06cc\u0645. \u0645\u0627 \u062a\u0635\u0645\u06cc\u0645 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u067e\u0646\u062c\u0631\u0647 \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631 \u060c \u0646\u062a\u06cc\u062c\u0647 \u0628\u0627\u06cc\u062f \u0632\u0648\u062f\u062a\u0631 \u0627\u0632 5 \u0631\u0648\u06cc\u062f\u0627\u062f \u0645\u0646\u062a\u0634\u0631 \u0634\u0648\u062f (\u0645\u0627 \u0627\u0632 \u0622\u0633\u062a\u0627\u0646\u0647 \u06a9\u0648\u0686\u06a9\u06cc \u0628\u0631\u0627\u06cc \u0627\u0647\u062f\u0627\u0641 \u0646\u0645\u0627\u06cc\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f) \u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0646\u062a\u0638\u0631 \u0633\u0627\u0639\u062a \u06a9\u0627\u0645\u0644 \u0628\u0627\u0634\u06cc\u0645 \u060c \u062f\u0631 \u0622\u0646 \u067e\u0646\u062c\u0631\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u0647 \u0627\u0633\u062a. <\/p>\n<p>\u0645\u0627 \u06cc\u06a9 \u0645\u0627\u0634\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u062a\u0639\u062f\u0627\u062f \u0639\u0646\u0627\u0635\u0631 \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u0631\u062f\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 <strong>\u0622\u062a\u0634 \u0633\u0648\u0632\u06cc \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0634\u0645\u0627\u0631\u0634 \u0628\u0647 5 \u0628\u0631\u0633\u062f \u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u067e\u0646\u062c\u0631\u0647 \u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u067e\u0646\u062c\u0631\u0647 \u0632\u0645\u0627\u0646 \u0622\u062a\u0634 \u0645\u06cc \u06af\u06cc\u0631\u062f<\/strong>\u0628\u0634\u0631<\/p>\n<p>\u0628\u062e\u0634 \u0645\u0647\u0645 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0627\u0633\u062a <code>CustomCountTrigger<\/code> \u06a9\u0644\u0627\u0633:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code> <span class=\"nd\">@Override<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"nc\">TriggerResult<\/span> <span class=\"nf\">onElement<\/span><span class=\"o\">(<\/span><span class=\"nc\">UserEvent<\/span> <span class=\"n\">userEvent<\/span><span class=\"o\">,<\/span> \n                                   <span class=\"kt\">long<\/span> <span class=\"n\">timestamp<\/span><span class=\"o\">,<\/span>\n                                   <span class=\"nc\">TimeWindow<\/span> <span class=\"n\">timeWindow<\/span><span class=\"o\">,<\/span>\n                                   <span class=\"nc\">TriggerContext<\/span> <span class=\"n\">triggerContext<\/span><span class=\"o\">)<\/span> <span class=\"kd\">throws<\/span> <span class=\"nc\">Exception<\/span> <span class=\"o\">{<\/span>\n        <span class=\"c1\">\/\/ Get or initialize the current count<\/span>\n        <span class=\"nc\">ValueState<\/span><span class=\"o\">&lt;<\/span><span class=\"nc\">Integer<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">countState<\/span> <span class=\"o\">=<\/span> <span class=\"n\">triggerContext<\/span><span class=\"o\">.<\/span><span class=\"na\">getPartitionedState<\/span><span class=\"o\">(<\/span><span class=\"n\">countStateDesc<\/span><span class=\"o\">);<\/span>\n        <span class=\"nc\">Integer<\/span> <span class=\"n\">count<\/span> <span class=\"o\">=<\/span> <span class=\"n\">countState<\/span><span class=\"o\">.<\/span><span class=\"na\">value<\/span><span class=\"o\">();<\/span>\n        <span class=\"k\">if<\/span> <span class=\"o\">(<\/span><span class=\"n\">count<\/span> <span class=\"o\">==<\/span> <span class=\"kc\">null<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n            <span class=\"n\">count<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span>\n        <span class=\"o\">}<\/span>\n        <span class=\"c1\">\/\/ Increment count for every element<\/span>\n        <span class=\"n\">count<\/span> <span class=\"o\">+=<\/span> <span class=\"mi\">1<\/span><span class=\"o\">;<\/span>\n        <span class=\"n\">countState<\/span><span class=\"o\">.<\/span><span class=\"na\">update<\/span><span class=\"o\">(<\/span><span class=\"n\">count<\/span><span class=\"o\">);<\/span>\n\n        <span class=\"c1\">\/\/ If this is the first element, register an event-time timer for end-of-window<\/span>\n        <span class=\"c1\">\/\/ (Timers are set at window end timestamp, so when watermark passes window.end, onEventTime will fire)<\/span>\n        <span class=\"k\">if<\/span> <span class=\"o\">(<\/span><span class=\"n\">count<\/span> <span class=\"o\">==<\/span> <span class=\"mi\">1<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n            <span class=\"kt\">long<\/span> <span class=\"n\">windowEnd<\/span> <span class=\"o\">=<\/span> <span class=\"n\">timeWindow<\/span><span class=\"o\">.<\/span><span class=\"na\">getEnd<\/span><span class=\"o\">();<\/span>  <span class=\"c1\">\/\/ end timestamp of this TimeWindow<\/span>\n            <span class=\"n\">triggerContext<\/span><span class=\"o\">.<\/span><span class=\"na\">registerEventTimeTimer<\/span><span class=\"o\">(<\/span><span class=\"n\">windowEnd<\/span><span class=\"o\">);<\/span>\n        <span class=\"o\">}<\/span>\n\n        <span class=\"c1\">\/\/ Check if we've reached 5 events in this window<\/span>\n        <span class=\"k\">if<\/span> <span class=\"o\">(<\/span><span class=\"n\">count<\/span> <span class=\"o\">&gt;=<\/span> <span class=\"mi\">5<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n            <span class=\"c1\">\/\/ Fire (emit the window) *now*, but do NOT purge (we return FIRE, not FIRE_AND_PURGE).<\/span>\n            <span class=\"c1\">\/\/ This means the window contents remain, and the window will possibly fire again at end-of-window.<\/span>\n            <span class=\"k\">return<\/span> <span class=\"nc\">TriggerResult<\/span><span class=\"o\">.<\/span><span class=\"na\">FIRE<\/span><span class=\"o\">;<\/span>\n        <span class=\"o\">}<\/span> <span class=\"k\">else<\/span> <span class=\"o\">{<\/span>\n            <span class=\"c1\">\/\/ Not yet reached 5, so continue accumulating<\/span>\n            <span class=\"k\">return<\/span> <span class=\"nc\">TriggerResult<\/span><span class=\"o\">.<\/span><span class=\"na\">CONTINUE<\/span><span class=\"o\">;<\/span>\n        <span class=\"o\">}<\/span>    <span class=\"o\">}<\/span>\n\n    <span class=\"nd\">@Override<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"nc\">TriggerResult<\/span> <span class=\"nf\">onProcessingTime<\/span><span class=\"o\">(<\/span><span class=\"kt\">long<\/span> <span class=\"n\">timestamp<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TimeWindow<\/span> <span class=\"n\">timeWindow<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TriggerContext<\/span> <span class=\"n\">triggerContext<\/span><span class=\"o\">)<\/span> <span class=\"kd\">throws<\/span> <span class=\"nc\">Exception<\/span> <span class=\"o\">{<\/span>\n        <span class=\"c1\">\/\/ We don't use processing-time timers in this trigger.<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nc\">TriggerResult<\/span><span class=\"o\">.<\/span><span class=\"na\">CONTINUE<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n\n    <span class=\"nd\">@Override<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"nc\">TriggerResult<\/span> <span class=\"nf\">onEventTime<\/span><span class=\"o\">(<\/span><span class=\"kt\">long<\/span> <span class=\"n\">timestamp<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TimeWindow<\/span> <span class=\"n\">timeWindow<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TriggerContext<\/span> <span class=\"n\">triggerContext<\/span><span class=\"o\">)<\/span> <span class=\"kd\">throws<\/span> <span class=\"nc\">Exception<\/span> <span class=\"o\">{<\/span>\n        <span class=\"c1\">\/\/ This is called when the event-time timer for the window fires (i.e., watermark reached window end).<\/span>\n        <span class=\"k\">if<\/span> <span class=\"o\">(<\/span><span class=\"n\">timestamp<\/span> <span class=\"o\">==<\/span> <span class=\"n\">timeWindow<\/span><span class=\"o\">.<\/span><span class=\"na\">getEnd<\/span><span class=\"o\">())<\/span> <span class=\"o\">{<\/span>\n            <span class=\"c1\">\/\/ Window end reached, so fire the window result.<\/span>\n            <span class=\"c1\">\/\/ We return FIRE_AND_PURGE to emit the result and clear the window state.<\/span>\n            <span class=\"k\">return<\/span> <span class=\"nc\">TriggerResult<\/span><span class=\"o\">.<\/span><span class=\"na\">FIRE_AND_PURGE<\/span><span class=\"o\">;<\/span>\n        <span class=\"o\">}<\/span>\n        <span class=\"c1\">\/\/ If it's not the window-end timer (e.g., some other timer), we ignore.<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nc\">TriggerResult<\/span><span class=\"o\">.<\/span><span class=\"na\">CONTINUE<\/span><span class=\"o\">;<\/span>        <span class=\"o\">}<\/span>\n\n    <span class=\"nd\">@Override<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">clear<\/span><span class=\"o\">(<\/span><span class=\"nc\">TimeWindow<\/span> <span class=\"n\">timeWindow<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TriggerContext<\/span> <span class=\"n\">triggerContext<\/span><span class=\"o\">)<\/span> <span class=\"kd\">throws<\/span> <span class=\"nc\">Exception<\/span> <span class=\"o\">{<\/span>\n        <span class=\"c1\">\/\/ Clean up the count state when the window is purged\/closed.<\/span>\n        <span class=\"nc\">ValueState<\/span><span class=\"o\">&lt;<\/span><span class=\"nc\">Integer<\/span><span class=\"o\">&gt;<\/span> <span class=\"n\">countState<\/span> <span class=\"o\">=<\/span> <span class=\"n\">triggerContext<\/span><span class=\"o\">.<\/span><span class=\"na\">getPartitionedState<\/span><span class=\"o\">(<\/span><span class=\"n\">countStateDesc<\/span><span class=\"o\">);<\/span>\n        <span class=\"n\">countState<\/span><span class=\"o\">.<\/span><span class=\"na\">clear<\/span><span class=\"o\">();<\/span>\n        <span class=\"c1\">\/\/ We don't need to manually delete the event-time timer for window end \u2013 Flink does that when window closes.<\/span>\n    <span class=\"o\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u06cc\u0646 \u0631\u0627 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0647\u0631 \u0639\u0646\u0635\u0631:<\/p>\n<ol>\n<li>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u062a\u0627\u06cc\u0645\u0631 \u0632\u0645\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u067e\u0627\u06cc\u0627\u0646 \u067e\u0646\u062c\u0631\u0647 \u0647\u0646\u06af\u0627\u0645 \u0648\u0631\u0648\u062f \u0628\u0647 \u0627\u0648\u0644\u06cc\u0646 \u0639\u0646\u0635\u0631 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u062f (\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u067e\u0646\u062c\u0631\u0647 \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0634\u0644\u06cc\u06a9 \u0645\u06cc \u0634\u0648\u062f \u0627\u06af\u0631 \u0645\u0627\u0634\u0647 \u0634\u0645\u0627\u0631\u0634 \u0642\u0628\u0644\u0627\u064b \u0622\u062a\u0634 \u0646\u06af\u0631\u0641\u062a\u0647 \u0628\u0627\u0634\u062f)-\u0645\u0634\u0627\u0628\u0647 \u0622\u0646\u0686\u0647 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u067e\u06cc\u0634 \u0641\u0631\u0636 Flink \u062f\u0631 \u062f\u0627\u062e\u0644 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0631 \u0634\u0645\u0627\u0631\u0634 \u0628\u0647 5 \u0628\u0631\u0633\u062f \u060c \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u062f <code>TriggerResult.FIRE<\/code>\u0628\u0634\u0631 \u0645\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>FIRE<\/code> (\u0646\u0647 <code>FIRE_AND_PURGE<\/code>) \u0628\u0647 \u0637\u0648\u0631\u06cc \u06a9\u0647 \u0645\u062d\u062a\u0648\u0627\u06cc \u067e\u0646\u062c\u0631\u0647 \u0627\u0632 \u0628\u06cc\u0646 \u0646\u0631\u0648\u062f. \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0639\u0646\u0627\u0635\u0631 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0647\u0646\u0648\u0632 \u0647\u0645 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0631\u0627\u06cc \u062e\u0631\u0648\u062c\u06cc \u0646\u0647\u0627\u06cc\u06cc \u062c\u0645\u0639 \u0634\u0648\u0646\u062f. \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062a\u0635\u0645\u06cc\u0645 \u0628\u06af\u06cc\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u0645 \u0647\u0631 5 \u0631\u0648\u06cc\u062f\u0627\u062f \u062f\u06cc\u06af\u0631 \u0631\u0627 \u0634\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u0645 \u060c \u062d\u0627\u0644\u062a \u0634\u0645\u0627\u0631\u0634 \u0631\u0627 \u0628\u0647 0 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645 \u060c \u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0645\u0627 \u0641\u0642\u0637 \u06cc\u06a9 \u0628\u0627\u0631 \u062f\u0631 5 \u0633\u0627\u0639\u062a \u062f\u0631 5 \u0622\u062a\u0634 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0628\u0647 \u062a\u0627\u06cc\u0645\u0631 \u0646\u0647\u0627\u06cc\u06cc \u062a\u06a9\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<\/li>\n<li>\n<p>\u062f\u0631 <code>onEventTime()<\/code>\u060c \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 Watermark \u0628\u0647 Window End Timestamp \u0628\u0631\u062e\u0648\u0631\u062f \u0645\u06cc \u06a9\u0646\u062f \u060c \u0645\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u06cc\u0645 <code>FIRE_AND_PURGE<\/code>\u0628\u0634\u0631 \u0627\u06cc\u0646 \u0646\u062a\u06cc\u062c\u0647 \u067e\u0646\u062c\u0631\u0647 \u0646\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0627\u0632 \u0648\u0636\u0639\u06cc\u062a \u067e\u0646\u062c\u0631\u0647 \u067e\u0627\u06a9 \u0645\u06cc \u0634\u0648\u062f ( <code>clear()<\/code> \u0631\u0648\u0634 \u0628\u0631\u0627\u06cc \u0631\u0647\u0627 \u06a9\u0631\u062f\u0646 \u062d\u0627\u0644\u062a \u0634\u0645\u0627\u0631\u0634 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062e\u0648\u0627\u0647\u062f \u0634\u062f). \u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>FIRE_AND_PURGE<\/code> \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0632\u06cc\u0631\u0627 \u067e\u0633 \u0627\u0632 \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u067e\u0646\u062c\u0631\u0647 \u060c \u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u06cc\u062f \u0628\u0633\u062a\u0647 \u0634\u0648\u062f \u0648 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u0646\u06af\u0647 \u0646\u062f\u0627\u0631\u062f.<\/p>\n<\/li>\n<li>\n<p>\u062f\u0631 <code>clear()<\/code> \u0631\u0648\u0634 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0645\u0627 \u062a\u0639\u062f\u0627\u062f \u0631\u0627 \u0627\u0632 \u062d\u0627\u0644\u062a \u062e\u0627\u0631\u062c \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0627\u0632 \u0646\u0634\u062a \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u0645. \u0641\u0644\u06cc\u0646\u06a9 \u062a\u0645\u0627\u0633 \u062e\u0648\u0627\u0647\u062f \u06af\u0631\u0641\u062a <code>clear()<\/code> \u067e\u0633 \u0627\u0632 \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u067e\u0646\u062c\u0631\u0647 (\u06cc\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0622\u062a\u0634 \u0646\u0647\u0627\u06cc\u06cc \u0645\u0627 \u06cc\u0627 \u0627\u06af\u0631 \u067e\u0646\u062c\u0631\u0647 \u0628\u0647 \u0647\u0631 \u062f\u0644\u06cc\u0644\u06cc \u062f\u0641\u0639 \u0634\u0648\u062f).<\/p>\n<\/li>\n<\/ol>\n<p>\u0627\u06cc\u0646 \u0645\u0627\u0634\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u062a\u0631\u06a9\u06cc\u0628 \u0634\u0631\u0627\u06cc\u0637 \u0634\u0645\u0627\u0631\u0634 \u0628\u0627 \u06cc\u06a9 \u0645\u0627\u0634\u0647 \u067e\u0646\u062c\u0631\u0647 \u0632\u0645\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0627\u0633\u062a. <strong>\u0628\u062f\u0648\u0646 \u06cc\u06a9 \u0645\u0627\u0634\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u060c \u062f\u0633\u062a\u06cc\u0627\u0628\u06cc \u0628\u0647 &#8220;5 \u0631\u0648\u06cc\u062f\u0627\u062f \u06cc\u0627 \u067e\u0627\u06cc\u0627\u0646 \u067e\u0646\u062c\u0631\u0647&#8221; \u0628\u0647 \u062a\u0646\u0647\u0627\u06cc\u06cc \u0628\u0627 \u0633\u0627\u062e\u062a\u0647\u0627\u06cc \u0641\u0644\u06cc\u0646\u06a9 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0646\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f<\/strong><\/p>\n<p>\u0627\u06af\u0631 \u0645\u062b\u0627\u0644 \u0641\u0648\u0642 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u06cc\u062f \u060c \u0628\u0627\u06cc\u062f \u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>\u06a9\u0627\u0631\u0628\u0631 user_1 5 \u0631\u0648\u06cc\u062f\u0627\u062f \u062f\u0627\u0634\u062a <span class=\"k\">\u062f\u0631 <\/span>\u067e\u0646\u062c\u0631\u0647 <span class=\"o\">[<\/span>2025-02-01 00:00:00.0,2025-02-01 01:00:00.0<span class=\"o\">)<\/span>\nUser user_1 had 6 events <span class=\"k\">in <\/span>window <span class=\"o\">[<\/span>2025-02-01 00:00:00.0,2025-02-01 01:00:00.0<span class=\"o\">)<\/span>\nUser user_2 had 5 events <span class=\"k\">in <\/span>window <span class=\"o\">[<\/span>2025-02-01 00:00:00.0,2025-02-01 01:00:00.0<span class=\"o\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>Enter fullscreen mode<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>Exit fullscreen mode<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Notice here that the window gets triggered for <code>user_1<\/code> when it gets 5 events and also when the window ends. <\/p>\n<h3><span class=\"ez-toc-section\" id=\"Example_2_Session_Inactivity_With_Event_Signals\"><\/span>\n<p>  Example 2: Session Inactivity With Event Signals<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Scenario:<\/strong> Now let\u2019s consider a session window example. In many applications, events are grouped by sessions (a period of user activity separated by inactivity). Flink\u2019s session windows can close a window after a period of inactivity. However, sometimes a session might also end due to a specific event \u2013for example, a user explicitly <code>logs out<\/code> or completes a <code>checkout<\/code>. <\/p>\n<p>In an e-commerce or login-based app, you may define a session to end either after 30 minutes of inactivity or when a <strong>\u201clogout\u201d<\/strong> or <strong>\u201ccheckout complete\u201d<\/strong> event occurs. <\/p>\n<p>Flink\u2019s built-in session windows don\u2019t know about the semantics of a logout event, they\u2019d only close based on the timeout. We can create a custom trigger to handle both: fire the window when a special session-end event is seen, or if the session times out with no activity.<\/p>\n<p>The important part is within the <code>SessionEndTrigger<\/code> class:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code> <span class=\"nd\">@Override<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"nc\">TriggerResult<\/span> <span class=\"nf\">onElement<\/span><span class=\"o\">(<\/span><span class=\"nc\">UserEvent<\/span> <span class=\"n\">userEvent<\/span><span class=\"o\">,<\/span> <span class=\"kt\">long<\/span> <span class=\"n\">timestamp<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TimeWindow<\/span> <span class=\"n\">timeWindow<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TriggerContext<\/span> <span class=\"n\">triggerContext<\/span><span class=\"o\">)<\/span> <span class=\"kd\">throws<\/span> <span class=\"nc\">Exception<\/span> <span class=\"o\">{<\/span>\n        <span class=\"c1\">\/\/ Register an event-time timer for the end-of-window (session timeout)<\/span>\n        <span class=\"n\">triggerContext<\/span><span class=\"o\">.<\/span><span class=\"na\">registerEventTimeTimer<\/span><span class=\"o\">(<\/span><span class=\"n\">timeWindow<\/span><span class=\"o\">.<\/span><span class=\"na\">getEnd<\/span><span class=\"o\">());<\/span>\n        <span class=\"c1\">\/\/ If this event is a session terminating event, fire and purge the window<\/span>\n        <span class=\"k\">if<\/span> <span class=\"o\">(<\/span><span class=\"s\">\"LOGOUT\"<\/span><span class=\"o\">.<\/span><span class=\"na\">equals<\/span><span class=\"o\">(<\/span><span class=\"n\">userEvent<\/span><span class=\"o\">.<\/span><span class=\"na\">getEventType<\/span><span class=\"o\">())<\/span> <span class=\"o\">||<\/span> <span class=\"s\">\"CHECKOUT_COMPLETE\"<\/span><span class=\"o\">.<\/span><span class=\"na\">equals<\/span><span class=\"o\">(<\/span><span class=\"n\">userEvent<\/span><span class=\"o\">.<\/span><span class=\"na\">getEventType<\/span><span class=\"o\">()))<\/span> <span class=\"o\">{<\/span>\n            <span class=\"k\">return<\/span> <span class=\"nc\">TriggerResult<\/span><span class=\"o\">.<\/span><span class=\"na\">FIRE_AND_PURGE<\/span><span class=\"o\">;<\/span>\n        <span class=\"o\">}<\/span>\n        <span class=\"c1\">\/\/ Otherwise, continue<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nc\">TriggerResult<\/span><span class=\"o\">.<\/span><span class=\"na\">CONTINUE<\/span><span class=\"o\">;<\/span>    <span class=\"o\">}<\/span>\n\n    <span class=\"nd\">@Override<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"nc\">TriggerResult<\/span> <span class=\"nf\">onProcessingTime<\/span><span class=\"o\">(<\/span><span class=\"kt\">long<\/span> <span class=\"n\">timestamp<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TimeWindow<\/span> <span class=\"n\">timeWindow<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TriggerContext<\/span> <span class=\"n\">triggerContext<\/span><span class=\"o\">)<\/span> <span class=\"kd\">throws<\/span> <span class=\"nc\">Exception<\/span> <span class=\"o\">{<\/span>\n        <span class=\"c1\">\/\/ not used in this trigger<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nc\">TriggerResult<\/span><span class=\"o\">.<\/span><span class=\"na\">CONTINUE<\/span><span class=\"o\">;<\/span>    <span class=\"o\">}<\/span>\n\n    <span class=\"nd\">@Override<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"nc\">TriggerResult<\/span> <span class=\"nf\">onEventTime<\/span><span class=\"o\">(<\/span><span class=\"kt\">long<\/span> <span class=\"n\">timestamp<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TimeWindow<\/span> <span class=\"n\">timeWindow<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TriggerContext<\/span> <span class=\"n\">triggerContext<\/span><span class=\"o\">)<\/span> <span class=\"kd\">throws<\/span> <span class=\"nc\">Exception<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">if<\/span> <span class=\"o\">(<\/span><span class=\"n\">timestamp<\/span> <span class=\"o\">==<\/span> <span class=\"n\">timeWindow<\/span><span class=\"o\">.<\/span><span class=\"na\">getEnd<\/span><span class=\"o\">())<\/span> <span class=\"o\">{<\/span>\n            <span class=\"c1\">\/\/ Session inactivity timeout reached, fire and purge the window<\/span>\n            <span class=\"k\">return<\/span> <span class=\"nc\">TriggerResult<\/span><span class=\"o\">.<\/span><span class=\"na\">FIRE_AND_PURGE<\/span><span class=\"o\">;<\/span>\n        <span class=\"o\">}<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nc\">TriggerResult<\/span><span class=\"o\">.<\/span><span class=\"na\">CONTINUE<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n\n    <span class=\"nd\">@Override<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">onMerge<\/span><span class=\"o\">(<\/span><span class=\"nc\">TimeWindow<\/span> <span class=\"n\">window<\/span><span class=\"o\">,<\/span> <span class=\"nc\">OnMergeContext<\/span> <span class=\"n\">ctx<\/span><span class=\"o\">)<\/span> <span class=\"kd\">throws<\/span> <span class=\"nc\">Exception<\/span> <span class=\"o\">{<\/span>\n        <span class=\"c1\">\/\/ If windows merge, register a new timer for the new window end and let the old timers lapse.<\/span>\n        <span class=\"c1\">\/\/ (Flink will call onEventTime for the exact timestamps that occur; by re-registering the new end we ensure final firing.)<\/span>\n        <span class=\"n\">ctx<\/span><span class=\"o\">.<\/span><span class=\"na\">registerEventTimeTimer<\/span><span class=\"o\">(<\/span><span class=\"n\">window<\/span><span class=\"o\">.<\/span><span class=\"na\">getEnd<\/span><span class=\"o\">());<\/span>\n    <span class=\"o\">}<\/span>\n\n    <span class=\"nd\">@Override<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"kt\">boolean<\/span> <span class=\"nf\">canMerge<\/span><span class=\"o\">()<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"kc\">true<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n\n    <span class=\"nd\">@Override<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">clear<\/span><span class=\"o\">(<\/span><span class=\"nc\">TimeWindow<\/span> <span class=\"n\">timeWindow<\/span><span class=\"o\">,<\/span> <span class=\"nc\">TriggerContext<\/span> <span class=\"n\">triggerContext<\/span><span class=\"o\">)<\/span> <span class=\"kd\">throws<\/span> <span class=\"nc\">Exception<\/span> <span class=\"o\">{<\/span>\n        <span class=\"n\">triggerContext<\/span><span class=\"o\">.<\/span><span class=\"na\">deleteEventTimeTimer<\/span><span class=\"o\">(<\/span><span class=\"n\">timeWindow<\/span><span class=\"o\">.<\/span><span class=\"na\">maxTimestamp<\/span><span class=\"o\">());<\/span>\n    <span class=\"o\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>Enter fullscreen mode<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>Exit fullscreen mode<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Let&#8217;s break this down. On each element:<\/p>\n<ol>\n<li>\n<p>We register a timer, which ensures an event-time timer is set for the current end-of-window. (If the session window extends or merges, <code>window.getEnd()<\/code> will be updated accordingly on each trigger invocation.)<\/p>\n<\/li>\n<li>\n<p>We then check the event\u2019s type. If it is a designated end-of-session event (in this case, <code>\"LOGOUT\"<\/code> or <code>\"CHECKOUT_COMPLETE\"<\/code>), we immediately return <code>FIRE_AND_PURGE<\/code>. This emits the window\u2019s results and clears the window state right away, effectively closing the session as soon as that event is encountered.<\/p>\n<\/li>\n<li>\n<p>If it\u2019s not an end signal, we return <code>CONTINUE<\/code> to keep collecting events.<\/p>\n<\/li>\n<li>\n<p>In <code>onEventTime()<\/code>, we check if the timer is at the window\u2019s end timestamp. If yes, that means the watermark has reached the session\u2019s end (i.e., no new events for 15 minutes), so we return <code>FIRE_AND_PURGE<\/code> to close out the session. (If the timer firing is for some other timestamp, we ignore it with <code>CONTINUE<\/code>.)<\/p>\n<\/li>\n<li>\n<p>We don\u2019t use <code>onProcessingTime()<\/code> here, so it just continues.<\/p>\n<\/li>\n<li>\n<p>The <code>clear()<\/code> method doesn\u2019t have to do much because we didn\u2019t use manual state (timers will be cleaned up by Flink after purging). If we had used any ValueState in the trigger, we\u2019d clear it here.<\/p>\n<\/li>\n<\/ol>\n<p>If you run the code above you should see the following output:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>Session <span class=\"k\">for <\/span>user user_1 <span class=\"o\">[<\/span>2025-02-01 00:20:00.0,2025-02-01 00:35:20.0<span class=\"o\">)<\/span> -&gt; Events: <span class=\"o\">[<\/span>login, click, click, LOGOUT]\n\n\u062c\u0644\u0633\u0647 <span class=\"k\">\u0628\u0631\u0627\u06cc <\/span>\u06a9\u0627\u0631\u0628\u0631 \u06a9\u0627\u0631\u0628\u0631_2 <span class=\"o\">[<\/span>2025-02-01 02:31:35.0,2025-02-01 02:48:19.0<span class=\"o\">)<\/span> -&gt; Events: <span class=\"o\">[<\/span>login, click, CHECKOUT_COMPLETE]\n\n\u062c\u0644\u0633\u0647 <span class=\"k\">\u0628\u0631\u0627\u06cc <\/span>\u06a9\u0627\u0631\u0628\u0631 \u06a9\u0627\u0631\u0628\u0631_1 <span class=\"o\">[<\/span>2025-02-01 01:20:00.0,2025-02-01 01:35:25.0<span class=\"o\">)<\/span> -&gt; Events: <span class=\"o\">[<\/span>login, click, click]\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u067e\u0646\u062c\u0631\u0647 \u0641\u0642\u0637 \u062f\u0631 \u0635\u0648\u0631\u062a \u0648\u0642\u0627\u06cc\u0639 \u062e\u0627\u0635 \u0645\u0627\u0646\u0646\u062f \u0622\u062a\u0634 \u0633\u0648\u0632\u06cc \u0645\u06cc \u0634\u0648\u062f <code>LOGOUT<\/code> \u0645\u0627\u0634\u0647 \u0631\u0627 \u062f\u0631\u0633\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%BE%D8%A7%DB%8C%D8%A7%D9%86\"><\/span>\n<p>  \u067e\u0627\u06cc\u0627\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 Apache Flink \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u067e\u0646\u062c\u0631\u0647 \u0641\u0631\u0627\u062a\u0631 \u0627\u0632 \u0632\u0645\u0627\u0646 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u06cc\u0627 \u0633\u06cc\u0627\u0633\u062a\u0647\u0627\u06cc \u0634\u0645\u0627\u0631\u0634 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u060c \u0645\u0627 \u062f\u06cc\u062f\u06cc\u0645 \u06a9\u0647 \u0645\u062d\u0631\u06a9 \u0647\u0627 \u062a\u0635\u0645\u06cc\u0645 \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f \u06a9\u0647 \u0646\u062a\u0627\u06cc\u062c \u06cc\u06a9 \u067e\u0646\u062c\u0631\u0647 \u0633\u0627\u0637\u0639 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0686\u0646\u062f\u06cc\u0646 \u0628\u0627\u0631 \u0634\u0644\u06cc\u06a9 \u06a9\u0646\u062f \u06cc\u0627 \u062d\u0627\u0644\u062a \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u067e\u0627\u06a9 \u06a9\u0646\u062f. \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u0641\u0644\u06cc\u0646\u06a9 (\u0632\u0645\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u060c \u0632\u0645\u0627\u0646 \u067e\u0631\u062f\u0627\u0632\u0634 \u060c \u062a\u0639\u062f\u0627\u062f \u0648 \u063a\u06cc\u0631\u0647) \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0627\u0633\u0627\u0633\u06cc \u0631\u0627 \u062a\u0623\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0627\u0645\u0627 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0627 \u0634\u0631\u0627\u06cc\u0637 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631\u06a9\u06cc\u0628 \u06cc\u0627 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0622\u0646\u0647\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f. \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u0645\u0627\u0634\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631 \u0627\u06cc\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627 \u063a\u0644\u0628\u0647 \u06a9\u0646\u06cc\u062f &#8211; \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u0634\u0644\u06cc\u06a9 \u0632\u0648\u062f\u0631\u0633 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062a\u0639\u062f\u0627\u062f \u0639\u0646\u0627\u0635\u0631 \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 <strong>\u0647\u0646\u0648\u0632 \u0647\u0645 \u0645\u0631\u0632\u0647\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f<\/strong>\u060c \u06cc\u0627 \u067e\u0627\u06cc\u0627\u0646 \u062f\u0627\u062f\u0646 \u0628\u0647 \u06cc\u06a9 \u067e\u0646\u062c\u0631\u0647 \u0648\u0642\u062a\u06cc a <strong>\u0631\u0648\u06cc\u062f\u0627\u062f \u062e\u0627\u0635 \u062f\u0627\u0645\u0646\u0647 \u0631\u062e \u0645\u06cc \u062f\u0647\u062f<\/strong>\u0628\u0634\u0631<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D8%BA%D8%B0%D8%A7%DB%8C_%DA%A9%D9%84%DB%8C%D8%AF%DB%8C_%D9%88_%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86_%D8%B1%D9%88%D8%B4%D9%87%D8%A7\"><\/span>\n<p>  \u063a\u0630\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u0647\u0627:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u2705 <strong>\u0686\u0631\u062e\u0647 \u0639\u0645\u0631 \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u062f\u0631\u06a9 \u06a9\u0646\u06cc\u062f:<\/strong> \u0645\u0627\u0634\u0647 \u0627\u06cc \u06a9\u0647 \u0622\u062a\u0634 \u0645\u06cc \u06af\u06cc\u0631\u062f (\u0628\u0627\u0632 \u0645\u06cc \u06af\u0631\u062f\u062f <code>FIRE<\/code>) \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u0646\u0645\u06cc \u0628\u0646\u062f\u062f. \u067e\u0646\u062c\u0631\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u0631\u0627 \u062c\u0645\u0639 \u06a9\u0646\u062f \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0622\u062a\u0634 \u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u0628\u0633\u062a\u0646 \u0622\u0646 \u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>FIRE_AND_PURGE<\/code> \u06cc\u0627 \u0645\u0627\u0634\u0647 \u0631\u0627 \u0637\u0631\u0627\u062d\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u0634\u0648\u062f (\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0632\u0645\u0627\u0646 \u0648\u06cc\u0646\u062f\u0648\u0632 \u06cc\u0627 \u0634\u06a9\u0627\u0641 \u062c\u0644\u0633\u0647 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u06cc\u0645).<\/p>\n<p>\u2705 <strong>\u0631\u0648\u0634\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/strong> \u062f\u0631 \u062d\u062f\u0627\u0642\u0644 \u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646 <code>onElement<\/code>\u0628\u0627 <code>onEventTime<\/code>\u0628\u0627 <code>onProcessingTime<\/code>\u0648\u062a <code>clear<\/code>\u0628\u0634\u0631 \u0628\u0631\u0627\u06cc \u0627\u062f\u063a\u0627\u0645 \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u067e\u0646\u062c\u0631\u0647 (\u0645\u0627\u0646\u0646\u062f \u062c\u0644\u0633\u0627\u062a) \u0627\u0632 Onmerge \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u062f\u0627\u0648\u0645 \u062a\u0627\u06cc\u0645\u0631\u0647\u0627 \u0631\u0627 \u0627\u062f\u0627\u0631\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u2705 <strong>\u0627\u0632 TriggerContext \u0628\u0631\u0627\u06cc \u062d\u0627\u0644\u062a \u0648 \u062a\u0627\u06cc\u0645\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/strong> \u0627\u06af\u0631 \u0645\u0646\u0637\u0642 \u0634\u0645\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0634\u0645\u0627\u0631\u0634 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u06cc\u0627 \u0631\u062f\u06cc\u0627\u0628\u06cc \u067e\u0631\u0686\u0645 \u062f\u0627\u0631\u062f \u060c \u0627\u0632 \u062d\u0627\u0644\u062a \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 \u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>TriggerContext<\/code>\u0628\u0634\u0631 \u0647\u0645\u06cc\u0634\u0647 \u062d\u0627\u0644\u062a \u0631\u0627 \u067e\u0627\u06a9 \u06a9\u0646\u06cc\u062f <code>clear()<\/code> \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0646\u0634\u062a<\/p>\n<p>\u2705 <strong>\u0686\u0647 \u0645\u0648\u0642\u0639 \u0627\u0632 \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/strong> \u0627\u0632 \u0622\u0646\u0647\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f-\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u0634\u0631\u0627\u06cc\u0637 \u062a\u0631\u06a9\u06cc\u0628\u06cc (\u0632\u0645\u0627\u0646 + \u062a\u0639\u062f\u0627\u062f) \u060c \u0634\u0644\u06cc\u06a9 \u0646\u0627\u0645\u0646\u0638\u0645 \u0631\u0648\u06cc\u062f\u0627\u062f \u0645\u062d\u0648\u0631 \u060c \u0646\u062a\u0627\u06cc\u062c \u0632\u0648\u062f\u0631\u0633 \u0648 \u0627\u0641\u0632\u0627\u06cc\u0634\u06cc \u06cc\u0627 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0631\u0641\u062a\u0627\u0631\u0647\u0627\u06cc \u067e\u06cc\u0634 \u0641\u0631\u0636 (\u06cc\u06a9 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0634\u062a\u0631\u06a9 \u060c \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0648\u0642\u0648\u0639 \u0627\u0648\u0627\u062e\u0631 \u0628\u0627 \u0646\u0648\u0634\u062a\u0646 \u0645\u0627\u0634\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0639\u0646\u0627\u0635\u0631 \u062f\u06cc\u0631 \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0645\u06cc \u06af\u06cc\u0631\u062f). \u0627\u06af\u0631 \u06cc\u06a9 \u0645\u0627\u0634\u0647 \u062f\u0627\u062e\u0644\u06cc \u0633\u0627\u062f\u0647 \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u06af\u06cc \u0628\u0627 \u0622\u0646 \u0628\u0686\u0633\u0628\u06cc\u062f. \u0627\u0645\u0627 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u060c \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0642\u0648\u0627\u0646\u06cc\u0646 \u062a\u062c\u0627\u0631\u06cc \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645 \u062f\u0631 \u0645\u0646\u0637\u0642 \u062c\u0631\u06cc\u0627\u0646 \u062f\u0631\u062e\u0634\u0634 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u062d\u0631\u06a9 \u0647\u0627\u06cc \u067e\u0646\u062c\u0631\u0647 \u0622\u067e\u0627\u0686\u06cc \u0641\u0644\u06cc\u0646\u06a9 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u0646\u062f \u06a9\u06cc \u0645\u062d\u0627\u0633\u0628\u0647 \u067e\u0646\u062c\u0631\u0647 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u067e\u0631\u062f\u0627\u0632\u0634 \u062c\u0631\u06cc\u0627\u0646 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc \u0634\u0648\u062f (\u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u067e\u0627\u06a9 \u0645\u06cc \u0634\u0648\u062f). \u0647\u0631 \u067e\u0646\u062c\u0631\u0647 \u062f\u0631 \u0641\u0644\u06cc\u0646\u06a9 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0645\u0627\u0634\u0647 \u0645\u0631\u062a\u0628\u0637 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0631 \u0639\u0646\u0635\u0631 \u0648\u0631\u0648\u062f\u06cc \u0648 \u0647\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f \u062a\u0627\u06cc\u0645\u0631 \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0627 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u062a\u0635\u0645\u06cc\u0645 \u0628\u06af\u06cc\u0631\u062f FIRE (\u0627\u0646\u062a\u0634\u0627\u0631 \u0646\u062a\u0627\u06cc\u062c) \u060c PURGE &hellip;<\/p>\n","protected":false},"author":2,"featured_media":99458,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media2.dev.to\/dynamic\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F033ew3nrepcs7yroexcw.png","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-99457","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/99457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=99457"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/99457\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/99458"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=99457"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=99457"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=99457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}