Change Business Process Flow Based on Form Type Using Java Script.
There are situations where you might need different business process flows based on the form type you choose let us take an example.
Consider you want a Business Process flow on the lead entity Such that
- Lead form will show –BPF with stage Discover, Demo, Propose
- Sales Lead form will show – BPF with stage Discover, Requirement Gathering, Qualify
- The case be achieved by doing the following.
Lets begin with the implementation.
Solution –
Step 1: Make a Solution for your customizations and add the lead entity in your solution.
Step 2: Make 2 main forms for the lead entity namely “Lead form” and “Sales Lead form”
Step 3: Go to process – > Add a new process -> names It Lead creation.
Step 4: In the same solution under lead entity add a field of type single line of text namely “Form Type”.
Step 5: Add this new field on the lead form and the sales lead form.
Note : This field will carry the form type of the form hence will be kept hidden and locked on both the forms.
Step 6 : Next step is to get the form type in our form type field to achieve this we will use a web resource that
is a java script code
Step 7 : By doing so we successfully bring the form type written in our single line of text field.
Step 8 : Next step is to create a business process flow in the solution go to process and make a new business process flow.
Step 9 : The above snapshot shows the business process flow to achieve the functionality here the create stage we take the form type as a parameter this is then passed to the condition to check the form type
Step 10 : So, if the form type is Lead form it will be true and take business process flow for lead form.
Step 11 : Else it will be false and will take the business process flow for the sales lead form.
Note: – Make sure to add the business process flow as an entity to the solution and select the form and the business process flow in the site map of the app designer.
Java Script code : (Onload of the Form)
ChangeBPFByType = (executionContext) => {
debugger;
try {
let formContext = executionContext.getFormContext();
const selectedFormName = formContext.ui.formSelector.getCurrentItem().getLabel();
const getFormIdFromTxtBox = formContext.getAttribute(“cfs_formtype”).getValue();
//formContext.getControl(“header_process_cf_leadform”).setVisible(false);
if (formContext.data.entity.getId() == “”) {
formContext.getAttribute(“cfs_formtype”).setValue(selectedFormName);
}
else {
var getAllForms = formContext.ui.formSelector.items.get();
let navigateFormGuid = “”;
for (var i = 0; i < getAllForms.length; i++) {
if (getFormIdFromTxtBox == getAllForms[i]._label) {
navigateFormGuid = getAllForms[i]._id.guid;
break;
}
}
if (getFormIdFromTxtBox != selectedFormName) {
formContext.ui.formSelector.items.get(navigateFormGuid).navigate();
}
}
} catch (e) {
alert(“Something went wrong please try again later”);
}
}
Hope that helps.!