Sets a cache value.
Purpose
Sets a cache value for the given scope. Globally-scoped cached values are available to all Schedules. Locally-scoped variables are only available to this Schedule. The value's type (String, Integer, Double, Decimal, Boolean, DateTime, DateTimeOffset, Guid, JObject or JArray) is stored with it, so that Cache.Get returns a value of the same type. For more information on using caches, click here.
Compatibility
The macro can be used in all input document types and in Report Studio.
Updates
Cached values now preserve their type when stored and loaded. Values supplied from typed variables using late evaluation (e.g. value={=myVariable}) keep their type automatically; the optional 'type' parameter stores plain text as a given type.
Mandatory (4)
| Parameter | Type | Purpose | Options | Default |
| DateTimeOffset | The expiry date-time in UTC. | N/A | N/A | |
| String | The key. | N/A | N/A | |
| CachedValueScope | The scope, determining whether only this report schedule can get the value, or whether it is available to all reports. |
|
N/A | |
| Object | The value. Values supplied from typed variables using late evaluation (e.g. {=myVariable}) keep their type; other values are stored as strings unless the 'type' parameter is specified. | N/A | N/A |
Behaviour (8)
| Parameter | Type | Presence | Purpose | Options | Default |
| List<ExecutionResult> | Optional | If specified, asserts the expected execution result of the macro. Accepts a single value or a semicolon-separated list of acceptable values (e.g. 'Success;Warning'). The macro executes normally; if the actual result matches any of the desired values, the result is converted to Success. If the actual result does not match, the result is converted to MacroError with a descriptive message. This is primarily used for testing and diagnostic purposes. Valid values are: 'Unknown', 'Success', 'MacroError', 'WorkerStopped', 'Running', 'Warning', 'NeverRun', 'Cancelled', 'Pending', 'Paused', 'SystemError', 'Deferred' and 'Stopped'. |
|
N/A | |
| Boolean | Optional | Should NCalc expression evaluation throw error on Overflow |
|
true | |
| String | Optional | If specified, asserts the expected output type of the macro result. The macro executes normally; if the actual type does not match, a macro error is generated. Requires 'storeAs', 'storeAsHidden', or 'storeFormattedValueAs' to be set for typed validation. Valid types include CLR names (e.g. Int32, Int64, Single, Double, Boolean, String, JArray, JObject) and C# keyword aliases (e.g. int, long, float, double, bool, string, uint, ulong, short, ushort, byte, sbyte, decimal, char, object). The special value 'Number' matches any numeric type. | N/A | N/A | |
| String | Optional | If specified, asserts the expected output value of the macro result. The macro executes normally; if the actual value does not match, a macro error is generated. When 'storeAs' or 'storeAsHidden' is set, the stored variable value is compared. Otherwise, the document output text is compared. | N/A | N/A | |
| String | Optional | The condition that must be true in order for the macro to be executed/evaluated. Must either evaluate to true or false, for example: "3+5=8" or "contains('abcd', 'z'). | N/A | true | |
| MacroMode | Optional | The mode in which variables are stored. In the legacy mode (default for Schedules), the variable created is a string and formatted. In the normal mode (default for Report Studio), the output variable is stored as a strongly-typed theObject, e.g. an Int32 or a List |
|
Legacy | |
| ObfuscationType | Optional | Obfuscation type. Use obfuscation to write reports where sensitive data is hidden. When used, ReportMagic guarantees that the same input string will map to the same output string for the whole of the report (but the next time the report runs, it will most likely map to a different value). If you use obfuscation, the property in your macro will not show up and instead, you will see a fake item of the obfuscation type chosen. |
|
None | |
| String | Optional | If specified, adds a warning message for this macro. This is processed as an NCalc, and the warning message will ALWAYS be present and will be the value of the evaluated NCalc expression. | N/A | N/A |
Output (2)
| Parameter | Type | Presence | Purpose | Options | Default |
| String | Optional | The text to display should the macro fail to execute. Note that a poorly-specified macro (e.g. omitting mandatory parameters) will still result in an error message. | N/A | N/A | |
| String | Optional | The name of a variable to create should the macro fail to execute. The variable will be a text variable, and will contain either the failure text (only if the failureText parameter is set), otherwise it will contain the exception / failure message. | N/A | N/A |
General (6)
| Parameter | Type | Presence | Purpose | Options | Default |
| DateTimeOffset | Mandatory | The expiry date-time in UTC. | N/A | N/A | |
| String | Mandatory | The key. | N/A | N/A | |
| CachedValueScope | Mandatory | The scope, determining whether only this report schedule can get the value, or whether it is available to all reports. |
|
N/A | |
| Object | Mandatory | The value. Values supplied from typed variables using late evaluation (e.g. {=myVariable}) keep their type; other values are stored as strings unless the 'type' parameter is specified. | N/A | N/A | |
| String | Optional | Add a comment to make your document template more readable. The comment is discarded in the output document. | N/A | N/A | |
| CachedValueType | Optional | The type to store the value as: String, Integer, Double, Decimal, Boolean, DateTime, DateTimeOffset, Guid, JObject or JArray. If omitted, the type of the supplied value is used. |
|
N/A |
Examples (4)
Example 1
Plain text values are stored as strings. This example also demonstrates unsetting a value:
[Cache.Set: key=abc, value=def, scope=Global, expires=2027-08-15][Cache.Unset: key=abc][Cache.IsSet: key=abc]Example 2
Values supplied from typed variables using late evaluation keep their type. Here a Calculate macro stores an integer variable, which is then cached and later retrieved as an integer:
[Calculate: value=6 * 7, storeAsHidden=intVariable]
[Cache.Set: key=theAnswer, value={=intVariable}, scope=Global, expires=2027-08-15]
[Cache.Get: key=theAnswer]Example 3
The 'type' parameter stores a plain-text value as a stated type (String, Integer, Double, Decimal, Boolean, DateTime, DateTimeOffset, Guid, JObject or JArray). Here the value is stored as a Double, which displays using the standard two-decimal-place format on retrieval:
[Cache.Set: key=unitPrice, value=42.5, type=Double, scope=Global, expires=2027-08-15][Cache.Get: key=unitPrice]Example 4
JSON values can be stored and retrieved as JObjects or JArrays, then used like any other object variable. Use backticks around values containing commas or square brackets:
[Cache.Set: key=config, value=`{ "threshold": 5 }`, type=JObject, scope=Global, expires=2027-08-15]
[Cache.Get: key=config, =>Config, hidden=true]
[Object.Property: value={=Config}, jsonPath="$.threshold"]