Question


CNO
US
Last activity: 6 Jun 2019 18:30 EDT
Application structure /ECS
Assume that Org1 wants to build workflow platform to serve its client 1, client 2 ...client n
There are some predefined generic workflows and business rules. Org1 want to maintain client 1 case data separately and don't want to mix it up with other clients. Also, Rep is going to work on one client at a time.
Please suggest an approach to solve the issue.
Solution 1: Have a Framework application and then separate client application built on a framework.
What are the disadvantages of solution one approach?
-
Like (0)
-
Share this page Facebook Twitter LinkedIn Email Copying... Copied!


Coforge Technologies (Erstwhile Incessant Technologies)
GB
Here Org1 framework can be maintained with genric flows and business rules, Client1,Client2...Clientn can be treated as divisions and can have seperate divisional implementations with their specific data.


CXForward
US
My experience on building a similar project with similar approach you mentioned.Initially when we start we assume there is no workflow customization and over the period things will change and we tend to customize workflows or other artifacts at the implementation layer. Some of the pain points with this approach
1) if you allow workflow customization for each client then it will become difficult to maintain and need more dev resources
2) Regression testing each client needs more testing resources.
3) Onboarding a new client needs Development effort unless you build wizards to setup the client.
We re-wrote the same application after 10 years running the application in PROD with just building the framework layer and use ABAC to secure data , reporting and allowing little bit of customization like Correspondence


Pegasystems Inc.
US
Curious what is meant by "just building a framework layer" yet deployed to Production? Then it would also be the implementation layer.
The original requirement sounds like a multi-tenant situation - Data separation within the same database. This is a possibility depending on your business model. The "boutique" business model can be appropriate for mid-size consulting firms. For example in the US there are firms that support boutique 401(k) retirement plans.
If security is the primary reason for clients wanting case data stored "separately" the client should be assured that Pega supports multiple ways to enforce data security such as RBAC and ABAC. In the same database only case data would be stored separately, data classes such as assignments would still be stored in the same table.
-
Brendan Horan Amanda Bullerwell


CNO
US
You are right, concern here is data separation but RBAC and ABAC will not suffice. Client wants there data should not mix up with other clients and should be different database.
-
Rafael Uriel Ortega Mena Renato Bottini Mounika uppala


Pegasystems Inc.
US
It is possible to have one database with multiple schemes that contain the same set of tables according to:
https://www.oreilly.com/library/view/oracle-distributed-systems/1565924320/ch01s04.html
I have never heard of anyone doing anything like that with Pega, i.e., the same PegaRULES Schema used by different applications that utilize a different PegaDATA Schema. That would only work if you have different tables that could then be mapped to a different schemas but to do that you need different class names for everything, not just case types.
Separate databases are fine but this entails having to support multiple production environments.


CXForward
US
In my scenario, yes you can call it as implementation layer because that's where cases are being created, but we call it as framework layer, thinking towards future of the our business if we have to implement for different regions / clients where there will be a significant workflow customization.


Pegasystems Inc.
US
That is fine. Any implementation can potentially become the base/model/framework/template/blueprint/foundation for other applications.
You can accommodate customization within the same application as well. Either way the workpool class does not need to be changed
Perhaps case type specialization would meet your needs. Inheritance would also work in conjunction with DCR. Again, this can be done without changing the workpool class.
Pattern inheritance customization seems more straightforward and maintainable to me than direct inheritance when wanting to remain in the same application and workpool class.
You may have noticed that when creating a new Data Type in 8.1 App Studio, pattern inheritance is used to extend whichever base class you select after expanding the "Advanced" section.


Conduent
US
I also have the same problem/situation. Basically, I want one common layer for all of my clients but I want to be able to select different requirements/modules for each client. The rules I want to give to each client will be different and also the data shouldn't overlap. According to your post, are you saying it is possible to customize in the same application what is given to each client? Can you explain a little more on the process or point me to where I can learn more about configuring whether a part of the application will be given to a specific client?


Pegasystems Inc.
US
The assumption is that your backbone process is the same for every client.
You want to customize behavior at particular points in this process for particular clients, perhaps every client, i.e., the boutique business model.
The Visitor design pattern comes to mind.
At each extension point in your process you can call VisitClient(Client, Stage, Step, WorkPage).
The caller is "WorkPage". The callee is "Client".
The Client object observes that the case (WorkPage) is at a certain Stage and Step within its process.
The Client can then invoke its own logic against the WorkPage on its own behalf.
The question becomes: "where and how is this done?"
One way is to use pattern-inheritance. The Client appends it's unique shortName to the WorkPage's pxObjClass then invokes rules defined within that pxObjClass.
The backbone process would be completely unaware that those Client-specific rules are being executed because it is not "in charge" during the "visit", the Client is.