cancel
Showing results for 
Search instead for 
Did you mean: 

How to allow each tenant to customize business processes?

jasonw
Champ in-the-making
Champ in-the-making
I am building a SaaS product and each tenant will probably have different business processes (from slight to dramatic variations).

I have several ideas in mind and would like feedback from the group on viability, pros/cons, etc.

Assumptions:
================
a.) Our SaaS product will have out-of-the-box, "canned" business processes.  So, it will just work for the tenant without the need for customization.
b.) During integration of the tenant, our consultants (e.g., process modelers) will do business process discovery and configure the customizations for the tenant.

Customization Options so far:
====================
1. Complete Customization - We would expose BMPN 2.0 to the fullest.  This allows our process modelers to completely deploy a different process for each tenant.  Allows custom Java, Web Service calls, and even Scripts to be deployed in the BAR (scary to me and seems hard to manage custom code deployments with 99.999% uptime to all SaaS tenants.)


2. Controlled Customization - Our modelers could use only certain the BPMN 2.0 notations and change the out-of-the-box models within a set of guidelines (e.g., no custom scripts, >>> which could cause a security breach to other customers, etc.).


3. Limited Customization - In this option, we would not even expose BPMN 2.0 to the end users even though we are running Activiti Process Engine.  We'd just provides hooks into our out-of-the-box processes to allow them to do certain things.    This is similar to SaaS giant, Workday.  It takes user inputs and "generates" the process model, but does not allow process modeling directly. Perhaps, after a step, you can:
- call a web service of your choice with the process instance variables available
- send an notification to X people
- etc.

However, we'd limit the ability to call completely new sub-processes, or run custom scripts, etc.

TIA,
Jason
5 REPLIES 5

martin_grofcik
Confirmed Champ
Confirmed Champ
Hi Jason,

I think it is feasible with already implemented multi-tenancy. (when we take into account inly processes) process instances call external services and mult-itenancy has to be propagated to these calls too. Another aspect is identity management.

Regards
Martin

jasonw
Champ in-the-making
Champ in-the-making
Hi Martin,

Let me use an example to be more clear on my original post. 
In our SaaS product, when a tenant pushes a "button" labeled, "Report Violence", it will kick off a business process, called "Report Violence".  However, each tenant may do this "Report Violence" process differently.

Example:

Tenant A: Uses the out-of-the-box SaaS provided process, for "Report Violence".  It does this:
1. Issue an emergency Ambulance
2. Tell the police to go to the location

Tenant B says that doesn't work for them.  The customize it.

Tenant B:  The "Report Violence" process is customized to instead:
1. Send an SMS alert to members of the public, who are subscribed to "neighborhood violence" alerts in their city.
2. Next, send a notification to the Police to do to the location (Once on site, perhaps they assess whether injuries occurred)
3. Third, if injuries occurred, notify emergency Ambulance to go to location.

=========================
To be more clear on the original post, I'm more looking for recommendations on how to enable each tenant to create/customize/configure an Activiti business process, to account for these differences in the business processes across the tenants.  In other words, how do you recommend I allow Tenant B to change the out-of-the-box "Report Violence" process for themselves? (I listed 3 ways that I've been thinking of so far: Complete Customization, Controlled Customized, Limited Customization as per original post above)

On a side note, if they customize it, is it literally a different Activiti process name?


martin_grofcik
Confirmed Champ
Confirmed Champ
Hi,

You can specify tenantId for each deployment. It means that deployment is accessible only for given tenant. (another tenants can not access deployed process definitions).

Regards
Martin

jasonw
Champ in-the-making
Champ in-the-making
Hi Martin,

I understand the technical separation using Activiti Engine's multi-tenancy feature set.  I think I need to ask the question differently because I am not getting the answer I am looking for.  Or, perhaps, this is the wrong forum.  In which case, please do tell and I will re-post to proper audience.


Question:
Is there a way in Activiti IDE (Eclipse) to limit what options the process modeller can choose to a "set" palette of BMPN constructs?  I want tenants to have some ability to customize processes, yet I am not comfortable with each tenant building completely wild processes and deploying them into my SaaS product.  If so, what do I look for to begin customizing my version of the process modeler UI to limit it?




martin_grofcik
Confirmed Champ
Confirmed Champ
Hi Jason,

I think I understand now.

The problem is that Eclipse Designer is not aware of tenants. We are using our own web based design tool in our products. In this case you can create palette dynamically for each user and tenant.

Regards
Martin