=====Variable-Related Analyses=====
==== Process variable template ====
Variables bundled in groups of three perform better. It is better to use multiple groups of three than one giant group. It is even better if the //values// (Indices) from the view_instance can be employed.
SELECT Variablen1.1,Variablen1.3,Variablen1.3
FROM
(
SELECT var1.stringvalue AS "1", var2.stringvalue AS "2", var3.stringvalue AS "3", inst.ID
FROM view_instance inst
LEFT JOIN view_variable var1 ON inst.ID = var1.instanceID AND var1."name" = ''
LEFT JOIN view_variable var2 ON inst.ID = var2.instanceID AND var2."name" = ''
LEFT JOIN view_variable var3 ON inst.ID = var3.instanceID AND var3."name" = ''
) as Variablen1
INNER JOIN
(
SELECT var1.stringvalue AS "1", var2.stringvalue AS "2", var3.stringvalue AS "3", inst.ID
FROM view_instance inst
LEFT JOIN view_variable var1 ON inst.ID = var1.instanceID AND var1."name" = ''
LEFT JOIN view_variable var2 ON inst.ID = var2.instanceID AND var2."name" = ''
LEFT JOIN view_variable var3 ON inst.ID = var3.instanceID AND var3."name" = ''
) as Variablen2
ON Variablen1.ID = Variablen2.ID
==== Prozessinstanzen inklusive beliebig vielen Prozessvariablen auflisten ====
==== Listing Processinstances as well as any amount of processvariables ====
With the following statement a list with processintances as well as a presentation of indexvariables and any processvariables can be created.
//Notice: To presort the resulting list the whole SQL-Query has to be bosed as a INNER-SELECT and then sorted. //
SELECT DISTINCT
pi."name",
/*
Selecting the indexvariables from 1 to 10, if desired:
*/
CASE WHEN pi.value1 IS NOT NULL THEN pi.value1 ELSE '-' END AS "Index 1",
CASE WHEN pi.value2 IS NOT NULL THEN pi.value2 ELSE '-' END AS "Index 2",
CASE WHEN pi.value3 IS NOT NULL THEN pi.value3 ELSE '-' END AS "Index 3",
/*
Selecting the required processvariables:
- A processVariables.- Line has to be added for every variable
*/
processVariables.VARIABLE_1_WITHOUT_SPACE AS "Header Variable 1",
processVariables.VARIABLE_2_WITHOUT_SPACE AS "Header Variable 2",
processVariables.VARIABLE_3_WITHOUT_SPACE AS "Header Variable 3",
identP.name AS "StarterID",
pi.definitionName AS "Prozessdefinition",
pi.id AS "ProzessID"
FROM view_instance pi
LEFT JOIN view_identity identP ON pi.creationUserId = identP.id
LEFT JOIN (
SELECT piInner.id,
/*
Creating a MAX(...) line for every desired variable
*/
MAX( CASE WHEN var.name = 'PROZESSVARIABLE 1' THEN var.stringvalue ELSE '-' END ) as VARIABLE_1_WITHOUT_SPACE,
MAX( CASE WHEN var.name = 'PROZESSVARIABLE 2' THEN var.stringvalue ELSE '-' END ) as VARIABLE_2_WITHOUT_SPACE,
MAX( CASE WHEN var.name = 'PROZESSVARIABLE 3' THEN var.stringvalue ELSE '-' END ) as VARIABLE_3_WITHOUT_SPACE
FROM view_instance piInner
/*
In the following IN(...) statement all variablenames have to be listed, that are to be selected:
*/
LEFT JOIN view_variable var ON var.instanceId = piInner.id AND var.name IN ('PROZESSVARIABLE 1', 'PROZESSVARIABLE 2', 'PROZESSVARIABLE 3')
GROUP BY piInner.id
) processVariables ON pi.id = processVariables.id