SDK


External Applications

  • Calling Decisions Flows / Rules from Code

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

  • 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 > Features...

  • Installing Decisions SDK with NuGet in Visual Studio

    You can install the Decisions SDK as a NuGet package in Visual Studio. Note: the Decisions SDK .msi file is not being updated. Always use the NuGet package to ensure a current version.   To install...

  • Embed Decisions Form in a Web App

    Overview This document shows how to embed a form that’s used to kick off a workflow, or an In Session Form. In another web app this is done by running the form via URL on the Decisions application server....


ORM

  • ORM Basics: Adding Indexes

    Adding Index to Field Indexes can be declared on fields that have been marked to be stored by the ORM. An index name and a flag to say if index is unique can be added to this. Below is an example of...

  • ORM Basics: Adjusting SQL Data Types

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

  • ORM Basics

    ORM Base Classes There are three ORM base classes that you can inherit from in order to create an ORM object. They are as follows: [crayon-5c106d213d3c9379185371-i/] - adds logical delete functionality to...

  • Using Simple ORM Objects

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

  • 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,...


Security & Permissions

  • Accessing system settings (settings.xml)

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


Actions

  • 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 to grant users the ability to create these entities in any folder,...

  • About Flow Behavior

    Overview Flows in Decisions can be assigned something called a Flow Behavior. A Flow Behavior acts like an interface definition for a flow. It can enforce expected inputs and outputs as well as create...


Reports

  • Reporting Data Source Factory

    Overview Creating custom data sources for reports is useful when you know ahead of time what all of the data sources will be. When the list of data sources can only be known at runtime, it's useful to create...

  • Custom Reporting Data Source (Simple)

    Overview 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 in Visual Studio.   Add a reference...


Steps

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

    When writing an advanced step, your class must inherit from [crayon-5c106d214c698121205944-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 that...

  • 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...

  • Property Editor Basics: Changing Property Classification

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

  • Property Editor Basics: Specifying Editors

    Overview You can change how property editors display in the tool. For example, a property editor that appears as a text box may be converted to a drop down menu. You can make these changes by decorating...

  • 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...

  • Custom Element Serialization [Writable]

    Serialization of elements (like flow steps and page elements) is handled by a mechanism called Writable.   This mechanism has two ways of being accessed: Attributes marking up an object IWritable...

  • 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...

  • 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.   *Note custom codes are...

  • 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.   *Note custom codes are located...

  • 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.   *Note custom codes are located...

  • 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. These may include having multiple outcome...


Debugging & Testing

  • Debugging server side code in Visual Studio

    After writing your own code for Decisions, you will often want to debug this code. To do so follow the steps outlined below.   1) Build and deploy your code.   2) Run Visual Studio as Administrator     3)...

  • Using logging

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

  • Unit Testing & Debugging

    When creating a flow there is the ability to create Sample Data to make sure that the flow is operating correctly. Sample Data or automated tests are called Unit tests and can be located and created from...


Setup

  • 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...

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

    Overview 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...

  • Creating Settings Objects

    Overview 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...

  • 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   ...


Messaging

  • Setting Up Messaging Overview

    Intro Here's how to set up Decisions to work with a messaging system.  Decisions Messaging is a pluggable system that can be extended via our SDK, available since Decisions 3.2.x.  The built in messaging...


Modules

  • Anatomy of a Module

    For reference on Building a Module, please refer to: Building A Module (Advanced) Module Anatomy - These are the folders that are unpacked from any module that gets installed.  Not all of these...

  • Resetting Local Modules To Remove Or Update Custom DLL

    This tutorial demonstrates how to reset Local Modules to remove or update custom DLLs using Decisions.LocalModuleReset.exe tool. To learn how to deploy custom DLLs, please click here. This tool is important...

  • Building module (advanced)

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


Extensions & Behaviors

  • Rule Behavior

    [crayon-5c106d2164a8e908972911-i/], much like [crayon-5c106d2164a98439121819-i/] allows for the customization of the behavior of the rule editor. [crayon-5c106d2164a9b827340672/]  

  • 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'...

  • Creating Custom Folder Behavior

    Overview 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...


Reference

  • 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    ...

  • 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

  • Blank Project Template File

    The link below is a blank project with references set up 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...