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

  1. Always

Create
  1. create package folders

in
  1. within the Workflow Studio Source control. A project folder

is
  1. serves as a container that

provides
  1. offers a logical

structure
  1. organization for workflow applications and

all
  1. their associated components.

Don’t use
  1. Avoid using the stock packages folder

of
  1. provided by the EmpowerID product.

  2. When

altering
  1. modifying a stock workflow, it is a best practice

is
  1. to

make
  1. create a copy of the workflow and then modify the copied

workflow
  1. version.

If the
  1. Modifying stock workflows

are modified, future EID product upgrades might overwrite those workflows. Please consider
  1. directly may result in future EmpowerID product upgrades overwriting the modified workflows. Consider following the naming conventions provided

here
  1. in the below Naming Conventions section of this article.

  2. 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.

  3. Not

just the workflow, while
  1. only for workflows, but it's also important to follow the same approach when extending or altering any stock components

, please create
  1. . Create a copy, save it with a

proper
  1. suitable name

following
  1. according to the Naming Conventions

and modify it
  1. , and then make your modifications.

  2. Customizing and extending EmpowerID components

requires
  1. involves inheriting and referencing stock libraries

(Class, interface). Please
  1. , such as classes and interfaces. You can find the instructions

here
  1. for doing so in the Extend EmpowerID topic.

Anchor
NamingConventions
NamingConventions
Naming Conventions

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 situations

The 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

Insert excerptIL:WFS Folder StructureIL:WFS Folder StructurenameWFSFolderStructurenopaneltrue

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
languagec#
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
stylefloat:left; position:fixed;
idarticleNav

IN THIS ARTICLE

Table of Contents
maxLevel4
minLevel2
stylenone
printablefalse

Insert excerpt
IL:External Stylesheet
IL:External Stylesheet
nopaneltrue