Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
This document provides guidelines you can follow while The guidelines provided in this document aim to assist you and your developer team in developing new components and extending the existing EmpowerID functionality using Workflow Studio. These guidelines are about the include naming conventions and tips that to help you avoid known issues while developing components using the Workflow Studioduring development.
The Please note that the information provided is intended for the customers and their developer teams. These are merely prescriptions or suggestions which would make a good structure, and The guidelines are recommendations that can lead to a well-structured design, but developers can establish their own conventions or modify conventions prescribed here the suggested ones to suit their requirementsspecific needs.
General Tips
Always
create package folders
within the Workflow Studio Source control. A project folder
serves as a container that
offers a logical
organization for workflow applications and
their associated components.
Avoid using the stock packages folder
provided by the EmpowerID product.
When
modifying a stock workflow, it is a best practice
to
create a copy of the workflow and then modify the copied
version.
Modifying stock workflows
directly may result in future EmpowerID product upgrades overwriting the modified workflows. Consider following the naming conventions provided
in the below Naming Conventions section of this article.
When modifying a stock workflow, it is recommended to create a copy of the workflow and make changes to the copied version. Directly modifying stock workflows may result in them being overwritten during future EID product upgrades. Adhering to the naming conventions outlined in the Naming Conventions section is also advised.
Not
only for workflows, but it's also important to follow the same approach when extending or altering any stock components
. Create a copy, save it with a
suitable name
according to the Naming Conventions
, and then make your modifications.
Customizing and extending EmpowerID components
involves inheriting and referencing stock libraries
, such as classes and interfaces. You can find the instructions
for doing so in the Extend EmpowerID topic.
Anchor | ||||
---|---|---|---|---|
|
We While developing components in Workflow Studio, you will work with various items while developing components in Workflow studio. A . Following a standard naming convention followed properly will help read, understand and maintain the code betterhelps improve readability, understanding, and maintenance of the code. This section discusses how we can to sensibly name the WFS items like Workflow, FormWorkflow Studio items such as Workflows, Forms, and Properties within those items.
Placeholders: Please find the description of the placeholders The following placeholders are used in explaining the naming conventions.:
{CompanyInitial} - It can be – Represents the initials of your company, Ee.g., CI is an initial for the imaginary company Circle International.
{Verb} - Verb is simply – Represents an action to perform, Ee.g., Create, Edit.
{TargetResourceType} - Resource the Action – Represents the resource the action is being performed on, e.g., Person, Mailbox.
{TargetResourceTypeAbbrevation} - Abbreviation – Represents an abbreviation for an EmpowerID object, for e.g., MR for Management Roles, BRL for Business Role Locations.
Workflow
Naming Conventions This section discusses how you can name a workflow and its activities with examples of patterns you can use in certain situationsThe table below outlines the naming conventions for workflows and activities, providing pattern examples and guidance for specific use cases.
Component | Pattern | Example | Description |
---|---|---|---|
Workflow | {CompanyInitial}{Verb}{TargetResourceType} | CICreateMailbox, CIEditMailbox, CIDeletePerson, CIUpdatePerson | To name When naming a workflow, start begin with the company initials and be preceded , followed by the verb, and then the target resource type. For In the case of the CICreateMailbox workflow called CICreateMailboxexample, "CI is " represents the company initialinitials, "Create is the Action" denotes the action being performed, and "Mailbox is " signifies the target resource type. |
{CompanyInitial}{Verb}{TargetResourceType} | CIUpdatePerson | Some For workflows execute that perform multiple actions against the on a single resource type, e.g., such as add and remove. To name such workflows with multiple actions start with , begin the name with the company initials and preceded by the Verb like update and , followed by a verb that encompasses both actions, like "update," and then the target resource type. For In the example of the CIUpdatePerson workflow CIUpdatePerson, "CI is " represents the company initialinitials, "update indicates " signifies the Actioncombined actions, and Mailbox "Person" is the target resource type. Always Be sure to choose a verb that makes sense of both actionsaccurately reflects the multiple actions being performed. | |
{CompanyInitial}{Verb}{TargetResourceTypeAbbrevation} | CIDeleteMRMembership | Microsoft Windows allows only has a file path character limit of 255-260 characters for a file path. Shortening the name using abbreviations will overcome the limitation and increase the code readability. Some examples of abbreviations are MR for Management Roles, BRL for Business Roles, and Locations. To name such . Using abbreviations in workflow names can help overcome this limitation and improve code readability. For example, "MR" can represent Management Roles, and "BRL" stands for Business Roles and Locations. When naming workflows with multiple actions, start begin with the company initials and preceded , followed by the Verb verb and an abbreviation of for the target resource type. For In the case of the CIUpdateMRMembership workflow, "CI" represents the company initials, "Update" is the company initialaction performed, and Delete is the Action Done against MR "MRMembership" is the abbreviated target resource type for Management Role Membership. | |
{CompanyInitial}{Verb}{TargetResourceType1}{TargetResourceType2} | CIAddAccountToGroup, CIRemoveAccountFromGroup | To name a workflow executing Action against that performs actions on multiple objects, start with the company initials, preceded followed by the Verb verb and the name names of both target resource types. For CIAddAccountToGroup, CI is the company initial, and Add is the Action Done against Management Role MembershipIn the case of the CIAddAccountToGroup workflow example, "CI" represents the company initials, "Add" is the action performed, and "AccountToGroup" indicates that the action is being done on both Account and Group resource types. | |
Workflow > Workflow Activity | {CompanyInitial}{Verb}{TargetResourceType}Activity {CompanyInitial}{Verb}{TargetResourceTypeAbbrevation} | CIResetPasswordActivity CIUpdateMRActivity | To name an activity, start begin with the company initials and be preceded , followed by the Verbverb, target resource type, and the word "Activity. At last, to denote it as " to indicate it's a workflow activity. For example, in CIResetPasswordActivity, "CI is " represents the company initialinitials, and "Reset" is the Action Done against Password. You can also use a Verb-like update when the activity is performing multiple actionsaction performed, and "Password" is the target resource type. When the activity performs multiple actions, you can use a verb like "update" to reflect the various actions being carried out. |
Form and Controls
This section will discuss the patterns to name the Form and its controls like data source and LookupThe table below presents the naming conventions for forms, as well as their associated controls, such as data sources and lookups.
Component | Pattern | Example | Description |
---|---|---|---|
Form | {CompanyInitial}{Verb}{TargetResourceType}Form | CIEditPersonAddressform | To name a Form, start begin with the company initials and preceded , followed by the verb and target resource type ending , and conclude with the word "Form." For example, in the Form CIEditPersonAddressformCIEditPersonAddressForm, "CI is " represents the company initialinitials, "Edit" is the Verbverb, and "PersonAddress" is the target resource type. |
Form > Data Source | {ObjectName}Datasource | CountryDatasource | To name a Data Source, start begin with the a descriptive name that best describes effectively represents the data source and precedes , followed by the word "DataSource. A Datasource named CountryDatasource ". For example, a DataSource named "CountryDataSource" is self-explanatory, explaining indicating that the data source can get you provides a list of countries. |
Form > Lookup | {ObjectName}Lookup {ObjectName}SingleLookup {TargetResourceAbbrevation}SingleLookup {TargetResourceAbbrevation}MultiLookup | DisabledPersonsLookup MRSingleLookup BRLMultiLookup | To name a lookup, start begin with a meaningful object name and end with append the word lookup "Lookup" at the end. For example, a lookup called "DisabledPersonLookup, " has the word "Lookup indicates " indicating the control and is binding the , and it binds to persons who are disabled to for login. You can use single /or multiple words to indicate if it is a single or multiple dropdown. You Additionally, you can also use abbreviations like "MR" and "BRL" to keep the name short concise and workaround the ms-windows work around the Microsoft Windows file path character limitation for a file path. Microsoft Windows allows only 255-260 characters for a file path. Shortening the name using abbreviations will overcome the limitation and increase the Using abbreviations helps overcome this limitation and enhances code readability. |
Form > Form Data | Target{ResourceType} | TargetPerson TargetAccount TargetExchangeMailbox | To name a Form Datathe data object for a form, always start begin with the word "Target" followed by the resource type. For a Form Data named Target Person, the word Target is preceded by the resource type Person. example, if the data object of a form is a person, you would use "TargetPerson." |
Class Libraries & Connectors
This section will discuss the patterns to name the connector and the The table below presents the naming conventions for connectors and class libraries.
Component | Pattern | Example | Description |
---|---|---|---|
Class Library Project | {CompanyInitial}Connector | CIHRConnector | To name a class library, use a friendly descriptive name to describe represent the class library, preceded followed by the word connector at last"Connector" at the end. For CIHRConnector, CI stands for the company initials, and HR connector HRConnector indicates the connector used to connect to an HR system. A custom connector would also be developed inside a class. |
CustomConnector | {ObjectName}Connector | CustomConnector | To name a Custom Connector, use a friendly descriptive name to describe represent the connector and add append the word connector at last"Connector" at the end. A connector would be a class inside within the class library. For example, in CustomConnector, "Custom would describe " describes the type of connector, with a word connector at lastthe word "Connector" following it. You can create a custom connector by adding a new implementation of the connector in Workflow Studio as shown in the below image. Image Added |
Class Name | Follow any accepted naming convention consistently. |
Folder Structure
Tracing
Developers can build a tracing system using the class provided by EmpowerID. The implementation of TdnfTrace class will log the In Workflow Studio, the workflow applications and other objects you develop are classified as solution items and placed in folders you create on your local development machine. These folders act as containers for holding and organizing the items you are developing and are represented as nodes in the Source Control tree. Whenever you create a new workflow, activity, user interface element, or other objects, Workflow Studio prompts you for the folder in which the object should be placed, placing it within a Source Control folder underneath the selected folder.
Source Control folders exist for each item type that can be created in Workflow Studio:
Source Control Folder | Folder Purpose |
---|---|
Adaptive Auth Rules | Organizing Adaptive Auth Rules created in Workflow Studio |
Alert Receivers | Organizing Alert Receivers created in Workflow Studio |
APIs | Organizing APIs created in Workflow Studio |
Azure Functions V1 | Organizing Azure Functions V1 apps |
Azure Functions V3 | Organizing Azure Functions V3 apps |
Azure Functions V5 | Organizing Azure Functions V5 apps |
Azure WebJobs v3 | Organizing Azure Web Job V3 apps |
Business Rules | Organizing Business Rule apps |
Class Libraries | Organizing Class Library apps |
Console Applications | Organizing Console Apps |
Microservice V3 | Organizing Microservice V3 apps created in Workflow Studio |
Microservice V5 | Organizing Microservice V5 apps created in Workflow Studio |
Microservices v6 | Organizing Microservice V6 apps created in Workflow Studio |
OAuth Extensions | Organizing OAuth Extensions created in Workflow Studio |
SAML Extensions | Organizing SAML Extensions created in Workflow Studio |
SCIM Microservices V2 | Organizing SCIM Microservices V2 apps created in Workflow Studio |
SCIM Microservices V5 | Organizing SCIM Microservices V5 apps created in Workflow Studio |
STS Extensions | Organizing STS Extensions created in Workflow Studio |
UMA Extensions | Organizing UMA Extensions created in Workflow Studio |
User Interface > Forms | Organizing Forms created in Workflow Studio |
User Interface > Lookup Controls | Organizing Lookup Controls created in Workflow Studio |
User Interface > UI Pages | Organizing UI Pages created in Workflow Studio |
User Interface > Adaptive Cards | Organizing Adaptive Cards created in Workflow Studio |
Workflows > Activities | Organizing Workflow Activities created in Workflow Studio |
Workflows > Applications | Organizing Workflow Applications created in Workflow Studio |
Workflows > Composites | Organizing Composite Workflows created in Workflow Studio |
Workflow Rules | Organizing Workflow Rules created in Workflow Studio |
Tracing
Developers can construct a tracing system utilizing the TdnfTrace class provided by EmpowerID. Implementing the TdnfTrace class allows for logging information into the Windows event log. The TdnfTrace logger logs the information inside EventViewer → records information within the Event Viewer under the path: Application and Services Logs → EmpowerIDEmpowerID.
Developers can creatively formulate customize the logging information as per requirement and better understand the to suit their requirements and gain a better understanding of errors. A sample code snippet of for using the TdnfTrace class is provided below.:
Code Block | ||
---|---|---|
| ||
if (ex.Message.Contains("Timeout")) TdnfTrace.Current.TraceData(TraceEventType.Warning, 9900, "Rbac refreshing resource role review compiled operation took too long refreshing but will resume: " + Environment.NewLine + ex.ToString()); else TdnfTrace.Current.TraceData(TraceEventType.Error, 10000, "Rbac refreshing resource role review compiled operation: " + Environment.NewLine + ex.ToString()); |
Warning |
---|
Only Make sure to use EventID EventIDs greater than 9500 and lesser less than 15000. The EID EmpowerID product uses utilizes numbers below 9500. |
Div | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
IN THIS ARTICLE
|
Insert excerpt | ||||||
---|---|---|---|---|---|---|
|