SDK


External Applications

  • External Applications: Calling Flows

    Summary There are two ways that flow can be executed from an external application: (1) via call to a generated service (specific to this flow), or (2) via call to a generic Flow Execution Service.   Example CALLING...

  • Calling Decisions Flows / Rules from Code

    [crayon-64739ed9844d1270806785/] Multiple Approaches: 1. Rest / POST / GET // Run rule as GET Stopwatch ruleGET = newStopwatch(); for (int i = 0; i < iterations; i++)            ...

  • External Applications: Calling Rules (REST)

    Summary A rule can be made into a REST web service that supports either HTTP GET or POST methods. REST calls to a rule require either (1) valid user session ID, or (2) valid user authentication ID. The...

  • External Applications: Calling Flows (REST)

    Summary A flow can be made into a REST web service that supports either HTTP GET or POST methods. REST calls to a flow require either (1) valid user session ID, or (2) valid user authentication ID. The...

  • External Applications: Authentication

    Summary Calls into Decisions may require being authentication by a sessionId . An example of such a call is calling a flow via REST service. This example shows how to get a session Id using a set of...


ORM

  • Creating Settings Objects

    Summary If your application requires its own set of settings, you can create new settings via code. After creating these settings, the values of these settings can be fetched and set via code (see Accessing...

  • Creating Custom Folder Entities

    Custom Folder Entities are special objects that can 'reside' in a Decisions folder. If you are just looking to easily store data in a table a simple ORM object (described i) may be all you need. However,...

  • Using Simple ORM Objects

    Typesafe vs. non typesafe ORM accessors   There are 2 classes that represent access to the ORM storage - ORM<T> - DynamicORM   The difference between these classes is the generic one adds...

  • ORM Basics: Adding Indexes

    Adding index to field Like marking up fields to be stored by the ORM, indexes can also be declared on fields. An index name and a flag to say if index is unique can be added to this. Below is an example...

  • ORM Basics: Adjusting SQL Data Types

    Using overrides to the [crayon-64739eda54246930442332-i/] attribute, you can set what database type is used to store a field. For more on writing ORM types see ORM Basics   Here is an example showing...

  • ORM Basics

    ORM BASE CLASSES There are three ORM base classes that you can inherit from to create an ORM object. They are as follows. [crayon-64739eda544e6612995477-i/] - adds logical delete functionality to...


Security And Permissions

  • Accessing System Settings (user settings)

    What is a settings object A settings object is a collection of values that a portal user can edit and which can be used by code. Many times these settings are used to store things like connection information...

  • Accessing system settings (settings.xml)

    The system settings are stored in the settings.xml file which is found at [crayon-64739ed98522f430390333-i/]  in a default Decisions installation. Any of the values of this file can be accessed and...


Actions

  • Creating Custom Folder Behavior

    Summary New folder behaviors can be created to modify the default folder behavior. Many aspects of a folder's behavior can be modified. All the overridable methods for a folder's default behavior are...

  • Adding Create Actions [Advanced]

    There are 2 mechanisms for adding 'add actions' to a folder.   1. Adding this interface to a 'service' that is created. if you want users to be able to create these entities in any folder, create actions.... [crayon-64739eda5724a685670944/]  2....


Reports

  • Custom SQL Reporting Overview

    The primary difference between a Custom Datasource and a SQL Datasource is that a Custom Datasource is responsible for producing the data needed for reporting engine while a SQL Datasource produces a...

  • Custom Reporting Data Filters

    Custom reporting data filters involve deciding which rows to include... example:  Common types filter.   Custom reporting filters are used in conjunction with custom data sources. Usually a custom...

  • Custom Reporting Data Sources

    Custom data sources can also be created via interfaces/subclassing - specifying resulting cols - specifying when they apply - generating data   To write your own custom data source, create a class...

  • Custom Reporting Data Source (Simple)

    Summary Report data sources can be easily created for use in Decisions by tagging public classes with an attribute.   Example Create a new Class Library project is Visual Studio.   Add a reference...


Steps

  • Custom Element Serialization [Writable] (advanced)

    In addition to marking up the object with attributes, there are a few interfaces that allow for customization of the storage and hooking events around the storage.   1. specifying custom serialization   ...

  • Custom Element Serialization [Writable]

    Serialization of elements (like flow steps, page elements) is handled by a mechanism called 'Writable'.   This mechanism has 2 ways of being accessed: - attributes marking up an object - IWritable...

  • Property Editor Basics: Changing Property Classification

    Summary The way that step properties show up in the designer can be modified using the [crayon-64739eda5d24e826134226-i/] attribute. This document shows how to use this attribute.   The following...

  • Property Editor Basics: Specifying Editors

    - editors can be created   Summary Normally step properties show up in the designer as text box inputs. This default UI can be changed by decorating properties with property editor attributes.   Example For...

  • Flow Steps and Rule Steps (Advanced): Custom Validation

    Summary Using the techniques described below, you can cause validation messages to appear on the properties and inputs of your steps at design time. These validations can evaluate only the value of a...

  • Flow Steps and Rule Steps (Advanced) : Default Mappings

    Summary One of the primary reasons to create custom step is to be able to setup the initial state of an element right. This often means setting up the right types of mappings. This document shows how...

  • Flow Steps and Rule Steps (Advanced) : Consuming Data

    When writing an advanced step, your class must inherit from [crayon-64739eda5e02d218715805-i/] if you want your step to have input data that you can map in at run time. The below line of code illustrates...

  • Rule Steps (Advanced)

    Although it is easier to write simple rules (see Rule steps (simple)) for instructions on registering simple public bool methods as rules), you may want to take the time to write an advanced rule which...

  • Flow Steps (Advanced)

    Summary While creating simple steps using the Public Static method is easier, you may want to write a full Decisions step if you need to do complex things like have multiple outcome paths or validate...

  • Flow Steps and Rule Steps (Simple): Creating Custom Data Types

    Summary You can easily create new datatypes to be used in Decisions by creating classes in a class file project. This article will show you how to accomplish this.     Example Create a new Class...

  • Flow steps and rule steps (simple) : default parameters and custom editors

    Summary When creating simple decisions steps by registering public methods, you may also set default values for the inputs of those methods. This allows Designers to still change these input values, but...

  • Rule steps (simple)

    Summary You can easily create new rules to be used in Decisions by creating public methods in a class file project. This article will show you how to accomplish this.   Example Create a new Class...

  • Flow steps (simple)

    Summary You can easily create new steps to be used in Decisions by creating public static methods in a class file project. This article will show you how to accomplish this.   Example Create a new Class...


Debugging And Testing

  • Debugging server side code in Visual Studio

    After writing your own code for Decisions, you'll often want to debug this code. To do so follow the steps outlined below   Build and deploy your code on the same machine. Run Visual Studio as Administrator   In...

  • Using logging

    Summary The Decisions server logs are stored in a csv file on the server at  [crayon-64739ed985669444515177-i/]. Utilizing these logs can be extremely important to debugging code that you've written....


Setup

  • Deploying server side extensions

    There are 2 ways that additional functionality can be added to the platform through the SDK.  Deploy a dll into the ‘Local’ module Create and deploy a module DEPLOY A DLL INTO THE 'LOCAL'...

  • Empty template

    This is a blank project with references setup correctly.  Also, the following build file and bat files have been included: build.proj - This file is called by the bat files. It is configured to...

  • Setting Up Environment

    Most of the examples and sdk functionality described in this document involve providing a DLL (library) that has additional functionality in it.  This DLL can be built in any tool or language that can...


Messaging

  • Setting Up Messaging Overview

    Intro How to setup Decisions to work with a messaging system.  Decisions Messaging is a pluggable system that can be extended via our SDK. It is available in the Decisions Platform 3.2.x.  The built...


Modules

  • Calling Decisions Services from .NET

    Decisions Services have Integration Details Page that contain an assisting information about how to implement a desirable operation. To view this page we navigate to System > Administration > Modules...

  • Building module (advanced)

    SummaryA module is a zip file that contains files and folders Service Host Manager interprets and places in the correct places. This zip file can either be created manually or using the [crayon-64739eda64b9e528988054-i/] tool...


Extensions And Behaviors

  • Text Merge Extensions

    Decisions includes a number of built-in text merge fields like "Capitalize," "Lower," and "Insert Current Date." These merge fields can be used to dynamically manipulate strings or insert data from other...

  • Text Merge Behavior

    Similar to Flow Behavior and Folder Behavior, Text Merges can be given a behavior which can be used to create Text Merges with predefined inputs, limit whether or not inputs are visible to the user,...

  • Flow Behavior

    Summary Decisions flows can be assigned something called a Flow Behavior. This Flow Behavior acts like an interface definition for a flow. It can enforce expected inputs and outputs as well as create...


Reference

  • Appendix A: Common Actions

    Get String Get String (Long) Get String (Rich) Title/Description Title/Description/File Get Boolean Get DateTime Get File Navigate Navigate to URL Edit Object Simple Confirm

  • Appendix B: Common Property Editors

    The following is a list of the most commonly used property attributes:   (in namespace DecisionsFramework.Design.Properties.) LongTextPropertyEditorAttribute SelectStringEditorAttribute NumericEditorAttribute    ...