IssueNet Online Help System

www.elsitech.com

Reference Materials

Modified: 2009/12/30 16:27 by Sean White - Uncategorized

Edit

1 IssueNet Workflows

For an overview of IssueNet workflows, please see the How To Video Workflow Planning and Implementation.

Edit

2 IssueNet Variables

IssueNet Variables help define: workflow elements, conditions, triggers, form rules, queries, and scripts by providing a consistent way to specify information that dynamically changes. IssueNet supports the use of variables anywhere required information cannot be specified as a literal value.

For example, a condition to test the group membership of the current user would use the variable $(CurrentUserID). Without a variable, an individual condition would be required for each user in the system. In other words, variables provide a way to use a name instead of a literal value.

IssueNet provides built-in variables that can be accessed by business rules. In addition, business rules and scripts can define their own variables. For example, an action to create a new object such as a task might assign the new task to a variable. This allows other business rules to then access the new task as a variable. The value of any given variable persists for the lifetime of the IssueNet session or until the variable is assigned a different value. For example, the variable $(WorkflowTask)is assigned a value when a task is transitioned from one workflow state to another and its value persists until another task is transitioned.

Any type of value can be assigned to a variable. In the case of the $(WorkflowTask) variable, a task object is assigned to the variable. The $(Now) variable is a date/time value and the $(CurrentUserID) variable contains an object identifier. Objects expose all of their properties and relationships as nested variables that can also be referenced. This means that properties and relationships of object variables can also be accessed as variables. For example, the resource assigned to a task can be accessed using the following syntax: $(WorkflowTask.AssignID).

IssueNet variables are statements formed using a syntax which allows you to reference items such as issues or tasks or values of items such as the status of an issue. The most common use of variables is to help define and enforce workflow processes. For example, variables can be used to answer questions like: “Does a task in a workflow have a value for the estimated time?” Variables can also be used to set values during a workflow process. For example, a variable can be used to set the assigned resource for a task based on the project the task is created in and the correct resource role.

Variables are used in several other ways as well. For example, variables can be used to set default values for new items, to generate dynamic values for timestamps and item IDs, and to determine the recipients of e-mail notifications. In general, variables can be used anywhere in IssueNet where using a literal value does not provide the necessary flexibility.

Given the wide variety of cases in which you can use variables, one of the advantages of IssueNet is that the same variable syntax is used throughout the IssueNet platform. Once you have leaned to use variables in one context you can apply the same set of skills elsewhere in the platform.

Edit

3 Using the IssueNet Variable Editor

The IssueNet variable editor is designed to make creating variables simple. This section is designed to help you use the editor to create a wide variety of variables. The variable editor consists of a box into which the variable name is placed and a helper button to the left. Because every variable is enclosed in brackets and prefixed by “$”, the variable name box is enclosed by those elements of the syntax and they are applied to the variable name when it is inserted. The helper button allows you to easily insert common variable operators into the variable name.

Edit

3.1 The Basic Variable Syntax and Variable Types

All IssueNet variables share a common syntax:  $(VariableName). Every variable begins with a “$” and is enclosed in parenthesis. Variables are case sensitive. For example, a variable that would return the ID of the currently logged on user would be:  $(CurrentUserID)

Edit

3.2 Selecting a Variable Type

To begin creating a variable, click in the variable name box. When you click in the box the editor will produce a pop-up menu you can use to select the object or object ID you want the variable to reference. For example, if you want to use a variable to reference a property of an issue linked to a task during a workflow transition, you would pick “WorkflowIssue”. If you simply want to access a property of an item a user or process is updating you would pick “CurrentObject”. There are also built-in variable names for the ID of the current user or the ID current user’s contact record.

Edit

3.3 Variables Set at Logon

Some variables are set during the logon process and maintain the same value for the duration of the session. The variables set at logon are a fixed set that consists of:
  • $(CurrentUserID)
  • $(CurrentContactID)
In each case the ID returned by the variable is the object ID which is a GUID. By itself a GUID is not particularly useful. However, as we will see, a variable name that returns a GUID can be combined with other elements of the variable syntax to provide more useful information such as the groups the user is a member of or a property of the current contact like a the first or last name.

Edit

3.4 Variables Set by the Current Object

Whenever a form is opened or an object updated that object is set as the current object. The variable values for that object are reset when another form is opened or another item is updated. The most common use of current object variables is to reference a value of a property of an object. However, as we will see there are may other kinds of information that can be accessed using current object variables. Before moving to the more advanced uses of current object variables, it is useful to review some examples of basic current object variables and their uses.

Every current object variable has the following syntax:
  • $(CurrentObject.PropertyName)

The value that you specify as the “PropertyName” can be any property that is either local or inherited by the class you are using the variable for. So, for example, since every IssueNet class is a child of  the AppObject class and the AppObject class has the property “Description” the following variable could be used to access the description of any item in the system:
  • $(CurrentObject.Description)

On the other hand only members of the Issue class or derived classes have the property “Status”. So the following variable would only return a value if the current object is a member of the Issue class or member of a class derived from Issue:
  • $(CurrentObject.Status)

There is no need for concern if you use a variable that attempts to reference a property that does not exist for the class the object is a member of. In that case the variable will simply return NULL when you use it.

Edit

3.5 Variables Set by the Current Workflow

In addition to logon variables and current object variables, other variables are set when a workflow or a workflow transition is executed. Workflow variables are useful because they allow you to access information specific to the current workflow process. When a workflow or workflow transition is executed it always occurs within the context of four kinds of required objects:

  • The current workflow: The workflow that is being executed.
  • The current task: The task from which the workflow or workflow transition is executed.
  • The current issue: The issue to which the task is linked.
  • The current project: The project that is the parent of the task.

Just like session variables, workflow variables can be used to access properties of these objects. However, the syntax is slightly different. The part of the variable name to the left of the member selector, the part that is used to specify the object the variables refers to, uses the keyword “Workflow” to designate that the variable is one set by the execution of the last workflow or workflow transition. The syntax for each of the four types of workflow variables are respectively:

  • $(Workflow.PropertyName)
  • $(WorkflowTask.PropertyName)
  • $(WorkflowIssue.PropertyName)
  • $(WorkflowProject.PropertyName)

Edit

3.6 Adding Variable Operators

Once you have selected object or object ID you want to reference, you can then use operators to determine what kind of information you want to reference from that object. When creating variables every object or object ID is followed by an operator that determines that kind of information the variable will return.

  • Property Selector Operator: “.” :
If the variable name begins with a reference to an object you will want to use the selector operator “.”. You can add the selector operator by clicking on the helper button or simply typing it in.

Once you add the selector operator, the variable editor will display all of the valid properties you can reference based on the object type you have selected. If you select a specific object type such as WorkflowTask, the editor will only display properties that are specific to the task class or any parent of the task class such as; Workflow, CurrentState, AssignID, or Description. If you add the selector operator after the CurrentObject, type the editor will display all properties from all classes because the variable is non-specific. In any case, however, the variable editor will display each property with a suffix in brackets that indicates the class on which the property is defined. If you select CurrentObject as the object type for the variable, you can be assured that the property you select after the member selector is valid for the class you intend to use the variable for by the suffix. For example, if you create a variable that references the current object and is intended to access the SubmittedByID property of an Issue you can be assured that you are selecting a valid property by verifying the (Issue) suffix on the property to select. In this example, the variable described would be created as: $(CurrentObject.SubmittedByID).

  • The ID Lookup Operator: “->” :
In some instances the variable name you want to create may begin with a reference to an object ID as opposed to an object. The most common example of this is when you want to reference an object by its ID value in a list. For example, you may want a workflow condition that checks the status of the project a task is associated with. You could use this condition to prevent a workflow transition if the project is in a particular status such as “inactive”. In this case the ParentID is the task property that identifies the project. Because the ParentID is an ID and not an object we need the variable to lookup the object based on the ID so that the variable can then get the value of the status property.

To do this you would use the use both the object property selector operator and the ID lookup operator. This variable would be constructed as: $( WorkflowTask.ParentID->Status). In this case the ID lookup operator does the work of finding the correct object based on ID. Once the object has been identified its properties can be referenced as they would in any other variable.

  • The Array Selector Operator: “:
Sometimes the property you want to reference may return more than one value. In other words, it may return an array. This is almost always the case when the property you want to reference is a relationship to another kind of item. For example, suppose you want to use a variable to assign a task to a resource that has the role “Project Lead” in the current project. In this case you will use a variable to reference the resources linked to the current project. However, because you want to pick a specific resource based on role you will need the variable to look through all of the resources related to the project and find the correct one. In this case the array selector operator allows you to pick out a specific member of an array based on one of its properties. In this case the variable would be the following: WorkflowProject.ResourcesRole='ProjectLead'.ObjectID. In this variable the property selector is used to return the resources related to the current workflow project based on the resources relationship between the project and resource class. The array selector operator is then used to pick the resource where the Role property of the resource has the value “Project Lead”. After the array selector, the property selector is used again to get the ObjectID of that resource to use for the task assignment.

  • The Property Version Operator: “:”:
In some instances it is useful to be able to compare values of an item before and after a modification. Comparing values is particularly useful when creating conditions that determine when e-mail notifications are sent. For example, by comparing the priority values of an issue before and after an update you can create a notification rule that would send a notification only if the priority changed from “High” to “Low”. Similarly you can create a notification rule that would send a notification only when the description of an item changes.

You can compare values of a property using the property version operator: “:”. When placed after a property name the operator allows you to use the keywords “original” and “current” to compare the values before and after a modification. A variable that would get the initial priority value of an item, such as an issue, would be the following: $( CurrentObject.Priority:Original). Similarly, the counterpart variable to return the new values would be: $( CurrentObject.Priority:Current).

A condition that determined if an issue priority was changed from high to low would have the following statement: If $(CurrentObject.Priority:Original) is equal to "High" and $(CurrentObject.Priority:Current) is equal to "Low".  In this instance the condition simply evaluates two variables using the property version operator.

Edit

4 The Connection Wizard

Edit

4.1 Web Services

Edit

4.2 Direct Connection

Edit

6 IssueNet Central

When you install the IssueNet platform, the installer creates a web site named "IssueNetCentral" which can be loaded from a URL such as: http://localhost/issuenetcentral. Clicking the “Launch IssueNet” button will load the latest version of IssueNet. When you need to deploy an upgrade or an update to IssueNet simply install the update on the computer running the IssueNet Central site. The next time users launch the software using IssueNet Central they will launch the new version. By using IssueNet Central you can provide your users the advantages of a rich client with the ease of use, accessibility, and deployment of a browser based application. Edit

7 Notification Templates

Edit

7.1 What are Templates?

IssueNet Send Notification Actions contain the template which is sent when a Send Notification Action is executed. This template defines the Recipient, the Priority of the email, the Subject and the Body. Edit

7.2 Editing the Email Subject

The text for the email subject is entered in the Subject field of the template editor. The email subject is always interpreted as and should be edited as text. Any special formatting tags you enter will be displayed as text when a notification is generated.

Edit

7.3 Editing the Email Body

The email body is entered in the Body field of the template editor The email body can be edited as text or HTML. Those two formats are the formats IssueNet officially supports. However, because IssueNet simply substitutes the content of the body field when the notification is generated, you should have success with other formats supported by your target email client.

To create a text email template, simply enter text into the body field – no special tags are necessary. To create a HTML template, begin and end the template with the standard HTML and start and end tags.

To add content to your HTML template simply type between the tags as you would for any HTML document.

Edit

7.4 Using IssueNet Variables

The templates you create and edit will contain many standard elements such as text, tables, images, and links to other content. While these elements are essential to a well designed and aesthetically pleasing template they cannot be used to provide any content specific to the item a notification is about. For example, you cannot include the text of the issue subject in your email notifications using HTML tags or text.

To allow you to incorporate the specific values of an item in your notifications, IssueNet allows you to include Variables anywhere in a template. A variable is a specially formatted element. Every variable is prefixed by a “$” symbol and encloses the tag name in parenthesis. Every tag name consists of the tag name type followed by a period “.” and the tag name value. For example, if you wanted to include the issue description in your template you would include the tag: $(Property.Description). When a template containing this tag is used to generate a notification IssueNet will look for a property named “Description” belonging to the class the notification is about and substitute the correct value. As a result this same tag could be used to include the description in a template for Contact notifications. In a similar fashion, to include the Issue Status in a notification, you would simply include the tag: $(Property.Status).

Note: When entering Variables, once you have entered the '$(' characters, a type ahead editor will appear which allows you to navigate the IssueNet objects available.

Edit

7.5 Using IssueNet Constants

In addition to Variables for class properties, the editor also features tags for common, or boilerplate, information most organizations would include in every template. Instead of adding the information to each template you can define the Constant and then add the Constant to each template where necessary. Whenever you want to change the information included in the template, you can simply edit the Constant value instead of editing each template.

The values for the Constants are defined in the System Options|Constants section accessed by selecting Tools|Options in the IssueNet Administrator. On the Constants tab you can edit the following tags as well as creating new constants:

  • NotificationHeader - Common text used to identify the type and origin of the notification. For example, “Elsinore Technologies, Inc. – Issue Notification”
  • NotificationFooter- Common text at the bottom of the Notification
  • NotificationCopyright - Copyright information for the information contained in the notification
  • NotificationURL - A common URL value to be used throughout the notification
  • NotificationLogo - A URL for referencing a logo image to be included in each notification email Address
  • NotificationEmail - Typically, this would be the email address of the IssueNet Administrator
  • NotificationPrivacy - Text for a privacy policy statement to be included in each notification