{"id":11580,"date":"2017-09-18T10:57:23","date_gmt":"2017-09-18T08:57:23","guid":{"rendered":"https:\/\/blog.zhaw.ch\/icclab\/?p=11580"},"modified":"2017-09-18T10:57:23","modified_gmt":"2017-09-18T08:57:23","slug":"cyclops-3-0-release-with-rule-engine","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/","title":{"rendered":"Cyclops 3.0 release with rule engine"},"content":{"rendered":"<p>Our flagship open-source framework for cloud billing \u2013 Cyclops has matured to version 3.0 today. Over the past several months, <a href=\"http:\/\/icclab.github.io\/cyclops\/contact.html\" target=\"_blank\" rel=\"noopener\">Cyclops team<\/a> at <a href=\"https:\/\/blog.zhaw.ch\/icclab\/category\/labs\/splab\/\" target=\"_blank\" rel=\"noopener\">SPLab<\/a> has gathered community feedback, updated the architecture, changed the database backends and improved the reliability of the framework.<\/p>\n<p>Cyclops 3.0 release includes:<\/p>\n<ul>\n<li>New pricing and billing rule engine<\/li>\n<li>PostgreSQL\/TimescaleDB database backend<\/li>\n<li>HTTPS support and message acknowledgments<\/li>\n<li>More robust and failure resilient microservices<\/li>\n<\/ul>\n<p><!--more--><\/p>\n<figure id=\"attachment_11581\" aria-describedby=\"caption-attachment-11581\" style=\"width: 584px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-11581 size-large\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed-1024x435.png\" alt=\"\" width=\"584\" height=\"248\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed-1024x435.png 1024w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed-300x128.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed-768x327.png 768w, https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed-500x213.png 500w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><figcaption id=\"caption-attachment-11581\" class=\"wp-caption-text\">Cyclops 3.0 architecture<\/figcaption><\/figure>\n<p>For the first time, we open source a rule engine that allows for flexible pricing and billing, as well as customisable discounting. The rule engine micro service utilizes Drools inference engine and its forward chaining data-driven rule execution. Thus the system is completely reactional, where individual facts are asserted into memory and based on pattern matching appropriate rules are fired.<\/p>\n<p>The most prominent features of the rule engine are:<\/p>\n<ul>\n<li>Rule templates and their instantiation<\/li>\n<li>Rule instances and their execution<\/li>\n<li>Stateless and stateful sessions<\/li>\n<li>Counters and helper objects<\/li>\n<li>Sync and Async messaging<\/li>\n<li>Output controlled by rules<\/li>\n<li>Facts persisted via JTA<\/li>\n<li>Logging and auditing<\/li>\n<li>Alarm notifications<\/li>\n<li>Stream processing<\/li>\n<li>Batch processing<\/li>\n<li>State recovery<\/li>\n<\/ul>\n<p>Cyclops 3.0 release can be downloaded from our git repo <a href=\"https:\/\/icclab.github.com\/cyclops\" target=\"_blank\" rel=\"noopener\">https:\/\/icclab.github.com\/cyclops<\/a>, and its documentation is available on the GitHub wiki at <a href=\"https:\/\/github.com\/icclab\/cyclops\/wiki\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/icclab\/cyclops\/wiki<\/a>.<\/p>\n<p>This version also comes with an essential collector developed by us. OpenStack events collector that taps into OpenStack messaging sub-system.<\/p>\n<p>For latest news on Cyclops, follow us on twitter: <a href=\"https:\/\/twitter.com\/rcb_cyclops\" target=\"_blank\" rel=\"noopener\">@rcb_cyclops<\/a><\/p>\n<div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/cyclops\/\">Cyclops<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/openstack\/\">openstack<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/release\/\">release<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/rule-engine\/\">rule engine<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>Our flagship open-source framework for cloud billing \u2013 Cyclops has matured to version 3.0 today. Over the past several months, Cyclops team at SPLab has gathered community feedback, updated the architecture, changed the database backends and improved the reliability of the framework. Cyclops 3.0 release includes: New pricing and billing rule engine PostgreSQL\/TimescaleDB database backend [&hellip;]<\/p>\n","protected":false},"author":220,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[420,240,605,786],"features":[],"class_list":["post-11580","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-cyclops","tag-openstack","tag-release","tag-rule-engine"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Cyclops 3.0 release with rule engine - Service Engineering (ICCLab &amp; SPLab)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cyclops 3.0 release with rule engine\" \/>\n<meta property=\"og:description\" content=\"Our flagship open-source framework for cloud billing \u2013 Cyclops has matured to version 3.0 today. Over the past several months, Cyclops team at SPLab has gathered community feedback, updated the architecture, changed the database backends and improved the reliability of the framework. Cyclops 3.0 release includes: New pricing and billing rule engine PostgreSQL\/TimescaleDB database backend [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2017-09-18T08:57:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed-1024x435.png\" \/>\n<meta name=\"author\" content=\"skov\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"skov\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/\"},\"author\":{\"name\":\"skov\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/8b7fede5121e922f9967491667d6c0c5\"},\"headline\":\"Cyclops 3.0 release with rule engine\",\"datePublished\":\"2017-09-18T08:57:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/\"},\"wordCount\":249,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed-1024x435.png\",\"keywords\":[\"Cyclops\",\"openstack\",\"release\",\"rule engine\"],\"articleSection\":[\"*.*\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/\",\"name\":\"Cyclops 3.0 release with rule engine - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed-1024x435.png\",\"datePublished\":\"2017-09-18T08:57:23+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/8b7fede5121e922f9967491667d6c0c5\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#primaryimage\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed.png\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed.png\",\"width\":3654,\"height\":1554,\"caption\":\"Cyclops 3.0 architecture\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cyclops 3.0 release with rule engine\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/\",\"name\":\"Service Engineering (ICCLab &amp; SPLab)\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/8b7fede5121e922f9967491667d6c0c5\",\"name\":\"skov\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f1b79ba6d811b3b4570a0ae437958b1d3644c013db0b0293cdf77f69f8996bcb?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f1b79ba6d811b3b4570a0ae437958b1d3644c013db0b0293cdf77f69f8996bcb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f1b79ba6d811b3b4570a0ae437958b1d3644c013db0b0293cdf77f69f8996bcb?s=96&d=mm&r=g\",\"caption\":\"skov\"},\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/skov\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cyclops 3.0 release with rule engine - Service Engineering (ICCLab &amp; SPLab)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/","og_locale":"en_US","og_type":"article","og_title":"Cyclops 3.0 release with rule engine","og_description":"Our flagship open-source framework for cloud billing \u2013 Cyclops has matured to version 3.0 today. Over the past several months, Cyclops team at SPLab has gathered community feedback, updated the architecture, changed the database backends and improved the reliability of the framework. Cyclops 3.0 release includes: New pricing and billing rule engine PostgreSQL\/TimescaleDB database backend [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2017-09-18T08:57:23+00:00","og_image":[{"url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed-1024x435.png","type":"","width":"","height":""}],"author":"skov","twitter_card":"summary_large_image","twitter_misc":{"Written by":"skov","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/"},"author":{"name":"skov","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/8b7fede5121e922f9967491667d6c0c5"},"headline":"Cyclops 3.0 release with rule engine","datePublished":"2017-09-18T08:57:23+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/"},"wordCount":249,"commentCount":0,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed-1024x435.png","keywords":["Cyclops","openstack","release","rule engine"],"articleSection":["*.*"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/","url":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/","name":"Cyclops 3.0 release with rule engine - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed-1024x435.png","datePublished":"2017-09-18T08:57:23+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/8b7fede5121e922f9967491667d6c0c5"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#primaryimage","url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed.png","contentUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2017\/09\/architecture_detailed.png","width":3654,"height":1554,"caption":"Cyclops 3.0 architecture"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/cyclops-3-0-release-with-rule-engine\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"Cyclops 3.0 release with rule engine"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/icclab\/#website","url":"https:\/\/blog.zhaw.ch\/icclab\/","name":"Service Engineering (ICCLab &amp; SPLab)","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/8b7fede5121e922f9967491667d6c0c5","name":"skov","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f1b79ba6d811b3b4570a0ae437958b1d3644c013db0b0293cdf77f69f8996bcb?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f1b79ba6d811b3b4570a0ae437958b1d3644c013db0b0293cdf77f69f8996bcb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f1b79ba6d811b3b4570a0ae437958b1d3644c013db0b0293cdf77f69f8996bcb?s=96&d=mm&r=g","caption":"skov"},"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/skov\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/11580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/users\/220"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=11580"}],"version-history":[{"count":2,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/11580\/revisions"}],"predecessor-version":[{"id":11583,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/11580\/revisions\/11583"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=11580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=11580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=11580"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=11580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}