Template Attributes



Summary

Template Attributes allow administrators to use the Razor templating language to construct dynamic text or hyperlinks. They are also often used to calculate values based on client-specific business rules which are then used as inputs to other pieces of configuration.

See also: Template DO's and DONT's



Overview

Template Attributes allow administrators to use the Razor templating language to construct dynamic text or hyperlinks. They are also often used to calculate values based on client-specific business rules which are then used as inputs to other pieces of configuration.





Attributes

To access Workflow Attributes in a Template, use the Model.<Entity> syntax, which is sometimes called "entity-scoped syntax".

For instance, to access an Attribute belonging to the Activity Instance entity, you would do:

@Model.ActivityInstance.AttributeName





"Attributes" properties

Workflow Attribute values are exposed via the Attributes keyword in a Template.

The template editor displays a list of known values, and values can be mocked out in preview mode.



WorkflowTemplateRenderModel

Model.Environment = the environment string ("DEV", "PROD", etc) applied to the current configuration



"Model" properties

These elements are accessed as Model in a Template. They come from WorkflowTemplateRenderModel.

They are NOT exposed in the sidebar of available attributes and cannot be mocked out in preview mode.



Extensions

SourceAddressAttribute.GetDistanceTo(TargetAddressAttribute, DistanceUnit.Miles) - Distance between two Validated Address Attributes (with Latitude and Longitude values)

Uses System.Device.Location.GeoCoordinate to make the distance calculation

Sample Template
@using Heuristics.LearningBuilder.WorkflowAttributes @DistanceFrom() @functions { public string DistanceFrom() { try { var address1 = Model.MemberRole.GetAttribute<AddressAttribute>("Address_1"); var address2 = Model.MemberRole.GetAttribute<AddressAttribute>("Address_2"); if (address1 == null || address2 == null || address1.AddressId == 0 || address2.AddressId == 0) { return string.Empty; } return address1.GetDistanceTo(address2, DistanceUnit.Miles).ToString("N2") + " miles"; } catch(Exception a) { return a.Message; } } }