Skip to main content

Global Variable Value Query in Stream

DECLARE @VARIABLEKEY AS NVARCHAR(75)
DECLARE @VARIABLENAME AS NVARCHAR(75)
DECLARE @PROCESSID AS INT
DECLARE @JSONDATA AS NVARCHAR(MAX)
DECLARE @PERSISTENCEID AS INT
SET @VARIABLENAME = {{VariableName}} -- e.g. 'varTaskStatus'
SET @PROCESSID = {{ProcessId}} -- Ex: 45253

SELECT
@JSONDATA = Data,
@PERSISTENCEID = PersistenceId
FROM E_TESTPROJECT_Workflow -- E_[PROJECTNAME]_Workflow
WHERE
JSON_VALUE(Data,'$. General.ProcessId') = @PROCESSID

SELECT @VARIABLEKEY = flowObjects. [Key]
FROM OPENJSON(@JSONDATA, '$. Steps.Metadata')
WITH ([Key] UNIQUEIDENTIFIER '$. Key', [Name] NVARCHAR(50) '$. Name') flowObjects
WHERE flowObjects.Name = @VARIABLENAME;

SELECT JSON_VALUE(j2.value,'$. Value')
FROM OPENJSON((SELECT Data From E_TESTPROJECT_Workflow WHERE PersistenceId = @PERSISTENCEID), '$. Steps.Variables') AS j1 -- E_[PROJECTNAME]_Workflow
CROSS APPLY OPENJSON(j1.value) AS j2
WHERE j1. [key] = LOWER(@VARIABLEKEY)
AND j2. [key] = 'ValueOptions'

On the flow side, it's the query used to see the value of variables that aren't tied to an object on the form. It can be used by changing the variable name, process number, and project name information.