Learn about our latest SMARTS release – Marrakesh!

on April 23, 2014
SMARTS™ Marrakesh Release

Our latest SMARTS release, Marrakesh is out!  This release introduces a significant number of improvements and enhancements, primarily driven by customer requests.  This release is a bit like a souk (an open-air marketplace) in Marrakesh where there are lots of interesting things to see and something useful for everyone!


Browse through the list of new features in Marrakesh, and see if something doesn’t catch your eye!

Support for Functions – You can now define functions in the SMARTS form and invoke them in your decision logic.  Functions are like computations that allow you pass arguments when you invoke them.  Two types of functions are supported, local functions and remote functions.

A good use for local functions is formatting an output message with additional details from your input data and/or a date/timestamp.  The message itself could be passed to the function as a parameter.   In the screen shot below, we pass a message as a parameter to the Message function.

The formatted output from the function is shown in the Decision Outcome section including the name of the applicant and date the application was submitted.

Remote functions are used when you need to retrieve information from an external service as part of decision evaluation.  Remote functions are defined with a JSON-RPC 2.0 service entry point.  Obviously, you should exercise some caution when invoking functions in rule conditions as they can be executed many times resulting in poor performance.

Support for Decimal types – Decimal types allow you to define the format and precision of your data.  Formats supported include Currency, Scientific, Percent, Hexadecimal and more.  The decimal data type supports up to 29 significant digits.  It is particularly suitable for financial calculations that require a large number of digits and can’t tolerate rounding errors.

In the screen shot below, the field Premium has been defined as Currency with two decimals.

Segmented Simulations – SMARTS has always had the ability to run local simulations, allowing you to execute your decision logic against the currently loaded data sample and produce reports in the SMARTS dashboard.  In our Honolulu release, nearly two years ago, we introduced the ability to run remote simulations against very large data samples with potentially millions of records.  These remote simulations execute asynchronously on the server using the SMARTS out-of-the-box MapReduce framework.   New in this release is the ability to run segmented simulations.  A segmented simulation allows you to select one or more segmentation fields (included computed fields).  SMARTS segments the data sample based on the distinct values in the field(s) and executes the simulation against each segment.  You can then view the dashboard reports for each segment in addition to the overall simulation results for the entire data sample.

The screen shot below shows a dashboard report, Decision Outcome,  produced by executing a segmented simulation by state, showing the decision outcome (number of applications approved, referred, and denied) for the entire data sample (in blue) and the number for each unique state.

Customized Form Import – SMARTS makes it easy to define your decision inputs, outputs, and intermediate values.  In SMARTS  you can import a data sample (from a JSON, XML, or CSV file)  and automatically create a form describing the structure (sections and fields) of the data sample.  SMARTS  infers the field type based on the values in the data sample.  Once the form is imported,  you can modify the form to make it more readable and business-friendly by renaming fields and adding new fields, including computations.  New in Marrakesh is the ability to customize the form on import, allowing you to change the display name, data type, or cardinality.  This is a convenient feature that can save you some time when starting a new project.

Disable/Enable Rules and Rule sets –  During development and testing you may need to disable some rules or rule sets to help you understand how your changes are impacting your decision results.  One way to do this is to temporarily add a guard condition (setting the guard to false) to keep the decision logic from executing.  Prior to Marrakesh, this was the only option.   In this release you now have an option in the rule and rule set menus to explicitly disable and enable.  Disabling a rule or rule set makes it invisible to compilation and execution, so you can temporarily remove rules or rule sets from the decision’s execution.

Guards are different- they are compiled and evaluated at execution time so that the rule or ruleset will only execute if the guard condition evaluates to true.  You can use guards when you need to dynamically determine whether or not to apply a rule or rule set to the current document or transaction.

Assume you want to disable your Senior / Low Mileage rule for testing.  In the screen shot below, you can see the menu item to disable the rule.

Once the rule is disabled, the name of rule (or rule set) will have a line through it as shown here:

Markdown in Descriptions – The ability to maintain traceability from a rule or rule set to its source requirements is a common requirement in business rule and decision management applications.  Many of you requested the ability to provide a link to an external document or repository containing the source policy, regulation, or requirement.  In Marrakesh, we now support Markdown in descriptions for decision artifacts.   Markdown syntax is very readable, easy to learn, and can be converted into HTML.  So now, you can include hyperlinks in your descriptions and you can format your descriptions too!


In addition, Marrakesh includes some exciting new features and enhancements to BluePen, the analytics module for SMARTS.

Improved Scalability and Performance – You can now run analytics jobs against much larger data samples.  Also, many of the key algorithms for rules generation have been enhanced for better scalability and performance.

More Algorithms – new algorithms have been implemented for variable identification, variable discretization, and rules generation.

Segmented Analytics Jobs – Just as for simulations, you can now run segmented analytics jobs, selecting one or more segmentation variables and triggering jobs that will execute against each one of the corresponding segments.  This will potentially yield results that are better tailored to each segment.

Streaming Rules Generation Algoritms –  Beta support for streaming rules generation algorithms has been added.  These algoritms don’t require that all the documents in the data sample be in memory and therefore can scale to very big data sizes with very little memory.

We hope you enjoy our latest SMARTS release.  We  appreciate all the suggestions you provided that shaped this release.  Please let us know what you think.

If you haven’t yet used SMARTS, some of the new feature descriptions likely lack context.  SMARTS is the most intuitive and powerful decision management offering on the market.  Attend one of our product tour webinars or sign-up for a free trial to learn more!



Search Posts by Category


Sparkling Logic Inc. is a Silicon Valley-based company dedicated to helping organizations automate and optimize key decisions in daily business operations and customer interactions in a low-code, no-code environment. Our core product, SMARTS™ Data-Powered Decision Manager, is an all-in-one decision management platform designed for business analysts to quickly automate and continuously optimize complex operational decisions. Learn more by requesting a live demo or free trial today.