View other parts:
- SharePoint Workflow Designer Tips P1
- SharePoint Workflow Designer Tips P2
- SharePoint Workflow Designer Tips P3
- SharePoint Workflow Designer Tips P4
I want to start this part by talking about the rule of abstraction. Again, it is best practice to not hard-code any values inside your workflow code. Your workflow code should read at execution time all needed configuration values from external source. This is what we talked about in the previous part of workflow designer tips.
There is another place where abstraction can be applied. Inside your workflow code, you may need to interact with user values and groups. Usually you interact with users and groups in two places:
- When you assign a task, you usually assign it to user or a group of users.
- When you send email notification, you send it to a mail enabled user or group.
First tip is to avoid working with users and instead work with groups. This is the first level of abstraction. When you work with groups, you can externally modify the membership of the group and the magic happens right away. Even if you are assigning a task for a single user, you can assign it to a group that contains only that user. Later when that user leave the company and there is a need to change the task assignee, you can just change the membership of that group.
The second part of abstraction is to create a separate SharePoint list called Workflow Subscriptions for example, that contains two columns:
- Subscription. (Data Type: Single line of text)
- Subscriber. (Data Type: Person or Group)
Now, you can fill that list with values you wish. For example, if your workflow is sending email notifications to a group of people upon finishing the process of a new hire, you could create for example a new SharePoint or Active Directory group called (New Hire Notification Group), that contains the people that should be notified upon a new hire, and then create an entry in the Workflow Subscriptions like this:
- Subscription: New Hire Notification.
- Subscriber: New Hire Notification Group.
Now inside your workflow designer, when you want to send email to notify people for a new hire, you do the following:
The same applies if you want to assign a task to a group, you create an entry in the Workflow People list after you create a group called (New Hire First Approval Group):
- Subscription: First Approval.
- Subscriber: New Hire First Approval Group.
You can see that we talked in the previous part about the Configuration List and now we are talking about Workflow People list. The main difference between them is the data type of the columns. The Configuration list has two single line of text columns, while the Workflow People has one column with single line of text column, and the other is People of Group column. Together, these two lists will give you enough abstraction to remove any hard-coding from your workflow code, and makes your workflow code safe from direct changes.