What about KnowledgeSync?
The first thing that I get asked about Process Orchestration is: Does it replace KnowledgeSync. The answer is: “It depends”. It really does depend on how you use KnowledgeSync. Can Process Orchestration do some of the things that KnowledgeSync does? Yes. Does it do them all in the same manner? no and no.
First Process Orchestration is hosted through the Process Host portal from SalesLogix. This makes it a web application. Web applications are meant to be accessed via a web protocol like http. The reason this is important to understand is that web applications are stateless and have no “scheduled task” abilities. This means you cannot schedule them to run at a certain time and day.
Moving past all of that we have a few pieces to Process Orchestration:
- DB Eventing – used to track changes to the database and “kick off” the appropriate tasks in PO
- Process Host Portal – this is used as an integration point for the web clients and db eventing
- The Process Libraries themselves – these are the bits you pull into Visual Studio to create an actual process of your own
I am sure I am missing something, so comment and I will edit the post
So PO is not a replacement for KnowledgeSync and you cannot run it like a scheduled task, so what is it good for? The next question is – it is a replacement for Contact Processes or Sales Processes? Again the answer is it can be and it is not.
What can you do with PO?
Without going into code or showing any videos, which are all available in the developers subscription or the advanced web developers course, let’s see what we can do with Process Orchestration:
You can:
(lets check out the processstart.xml file to see what you CAN do:
<!--
This file is used to configure the execution of workflows based on data events.
<event name="{EVENT TYPE}">
<entityType name="{ENTITY TYPE}" memberFilter="{PROPERTY LIST}">
<runProcess name="{WORKFLOW NAME}" />
</entityType>
</event>
<event ...>
{EVENT TYPE} indicates the type of notification for which to run the configured workflows
Created => Raise an event when a new entity is created
Deleted => Raise an event when an existing entity is deleted
PropertyChanged => Raise an event when an existing entity is updated, based on the subscribed properties in the memberFilter attribute
{ENTITY TYPE} should be a fully qualified .NET type name indicating the entity to watch
1 or more elements may be present.
{PROPERTY LIST} is a comma separated list of properties on the {ENTITY TYPE} that are being watched for changes.
It is important to note that only properties mapped to database columns can be watched.
These entries are case sensitive.
{WORKFLOW NAME} specifies the class name of the workflow to be executed.
1 or more elements may be present.
The processLib.xml must be configured with the appropriate assembly which this workflow is contained within.
-->
- <!-- Example
<event name="PropertyChanged">
<entityType name="Sage.Entity.Interfaces.IAccount, Sage.Entity.Interfaces" memberFilter="Type,SubType,AccountName">
<runProcess name="AccountTypeChangedWorkflow" />
</entityType>
</event>
-->
- <event name="PropertyChanged">
- <entityType name="Sage.Entity.Interfaces.IAccount, Sage.Entity.Interfaces" memberFilter="Division,AccountName">
<runProcess name="Workflow1" />
</entityType>
</event>
</processStartConfiguration>
So you can see:
Created => Raise an event when a new entity is created
Deleted => Raise an event when an existing entity is deleted
PropertyChanged => Raise an event when an existing entity is updated, based on the subscribed properties in
How does it know where your workflow or process is? That is in the processLib.xml:
<?xml version="1.0" encoding="utf-8" ?>
- <processLib>
- <!-- <assembly name="WorkflowTestLib" />
-->
<assembly name="MyWorkflows" />
</processLib>
This means you need to place your process in the bin directory of the process host portal in order for it to be utilized.
What will this look like? Nothing. It will only run when something changes in :
- <entityType name="Sage.Entity.Interfaces.IAccount, Sage.Entity.Interfaces" memberFilter="Division,AccountName">
The Account.Division or Account.AccountName
Simple as that. It will run from start to finish and do whatever it is to do once.
Now this is just a simple sequential flow. Starting on slide 75 of the following linked document:
http://download.saleslogix.com/v75/SalesLogix_v75_SneakPeek_July2008.ppt
You can see that there are also Goal driven processes in the toolbox:
These appear in the web client in the area normally used for the tasks area (bottom right). The data for these goal driven processes is stored in the database and persisted from session to session. This means if you need to change a goal driven process that is currently “in process” by anyone, all of that data must be removed – by you.
So does PO replace KS? no. But it can do a lot. Check out either the adv. web class and/or the developers subscription for more details. I will probably post more information as the 7.5.2 PO enhancements make their way into my radar.


September 14, 2009
[...] basically update the processstart.xml. In a previous post I talked about the processstart and processlib xml files. Process lib is used to list and register [...]