Table – ConfigLists

Purpose

Used to cache exploded configuration lists used by the Dynamic Page Builder.

Configuration Lists are created within Functionality maintained by the UX Creator application. They are hierarchic lists that contain an ordered set of values that can be rendered as options in list fields by the Dynamic Page Builder.

Definition

CREATE TABLE [dbo].[ConfigLists](
	[ListGUID] [UNIQUEIDENTIFIER] NOT NULL,
	[ItemGUID] [UNIQUEIDENTIFIER] NOT NULL,
	[Level] [INT] NOT NULL,
	[Name] [VARCHAR](500) NOT NULL,
	[Sequence] [VARCHAR](50) NOT NULL,
 CONSTRAINT [PK_ConfigLists] PRIMARY KEY CLUSTERED 
(
	[ListGUID] ASC,
	[ItemGUID] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

Column Definitions

The ListGUID stores the InstanceGUID of the Configuration List.

The ItemGUID stores the InstanceGUID of the Configuration List Item.

The Level indicates the hierarchy level of the Item within the List starting at 1.

The Name contains the InstanceName of the Configuration List Item Instance record.

The Sequence determines the ordering of the Item within the List.

Key Functionality

The ConfigLists table is maintained by the GI_RefreshConfigLists TSQL Stored Procedure.

CREATE OR ALTER PROCEDURE [dbo].[GI_RefreshConfigLists] 
(
	@SessionGUID AS UNIQUEIDENTIFIER,
	@UserGUID AS UNIQUEIDENTIFIER,
	@InstanceGUID AS UNIQUEIDENTIFIER	
)
AS -- DECRYPT
-- WITH ENCRYPTION AS
BEGIN

	DECLARE @ReturnStatus AS INTEGER
	DECLARE @Rows AS INTEGER

	BEGIN TRY
	
		-- Try to validate the session data...
		EXECUTE @ReturnStatus = dbo.GI_ValidateSession @SessionGUID, @UserGUID
		IF @ReturnStatus <> 0
		BEGIN
			
			-- Log and raise the error...
			EXECUTE @ReturnStatus = dbo.GI_LogEvent @UserGUID, 'dbo.GI_RefreshConfigLists - Invalid session', 1, NULL
			RAISERROR ('dbo.GI_RefreshConfigLists - Invalid session.', 16, 1)
			RETURN 100 + @ReturnStatus
				
		END

		TRUNCATE TABLE dbo.ConfigLists

		INSERT INTO dbo.ConfigLists (ListGUID, ItemGUID, [Level], Name, [Sequence])
		SELECT CL.InstanceGUID, CI.InstanceGUID, 1, CI.Name, FORMAT(CI.[Sequence], '000')
		FROM dbo.vw_ZSO_ConfigList CL WITH (NOLOCK)
		INNER JOIN dbo.vw_ZSO_ConfigItem CI WITH (NOLOCK) ON CL.InstanceGUID = CI.ParentGUID

		INSERT INTO dbo.ConfigLists (ListGUID, ItemGUID, [Level], Name, [Sequence])
		SELECT CL.ListGUID, CI.InstanceGUID, 2, CL.Name + ' ' + CI.Name, CL.[Sequence] + FORMAT(CI.[Sequence], '000')
		FROM dbo.ConfigLists CL WITH (NOLOCK)
		INNER JOIN dbo.vw_ZSO_ConfigItem CI WITH (NOLOCK) ON CL.ItemGUID = CI.ParentGUID
		WHERE CL.[Level] = 1 AND CL.Name IS NOT NULL AND CI.Name IS NOT NULL AND CI.Sequence IS NOT NULL

		INSERT INTO dbo.ConfigLists (ListGUID, ItemGUID, [Level], Name, [Sequence])
		SELECT CL.ListGUID, CI.InstanceGUID, 3, CL.Name + ' ' + CI.Name, CL.[Sequence] + FORMAT(CI.[Sequence], '000')
		FROM dbo.ConfigLists CL WITH (NOLOCK)
		INNER JOIN dbo.vw_ZSO_ConfigItem CI WITH (NOLOCK) ON CL.ItemGUID = CI.ParentGUID
		WHERE CL.[Level] = 2 AND CL.Name IS NOT NULL AND CI.Name IS NOT NULL AND CI.Sequence IS NOT NULL

		INSERT INTO dbo.ConfigLists (ListGUID, ItemGUID, [Level], Name, [Sequence])
		SELECT CL.ListGUID, CI.InstanceGUID, 4, CL.Name + ' ' + CI.Name, CL.[Sequence] + FORMAT(CI.[Sequence], '000')
		FROM dbo.ConfigLists CL WITH (NOLOCK)
		INNER JOIN dbo.vw_ZSO_ConfigItem CI WITH (NOLOCK) ON CL.ItemGUID = CI.ParentGUID
		WHERE CL.[Level] = 3 AND CL.Name IS NOT NULL AND CI.Name IS NOT NULL AND CI.Sequence IS NOT NULL

		INSERT INTO dbo.ConfigLists (ListGUID, ItemGUID, [Level], Name, [Sequence])
		SELECT CL.ListGUID, CI.InstanceGUID, 5, CL.Name + ' ' + CI.Name, CL.[Sequence] + FORMAT(CI.[Sequence], '000')
		FROM dbo.ConfigLists CL WITH (NOLOCK)
		INNER JOIN dbo.vw_ZSO_ConfigItem CI WITH (NOLOCK) ON CL.ItemGUID = CI.ParentGUID
		WHERE CL.[Level] = 4 AND CL.Name IS NOT NULL AND CI.Name IS NOT NULL AND CI.Sequence IS NOT NULL

		INSERT INTO dbo.ConfigLists (ListGUID, ItemGUID, [Level], Name, [Sequence])
		SELECT CL.ListGUID, CI.InstanceGUID, 6, CL.Name + ' ' + CI.Name, CL.[Sequence] + FORMAT(CI.[Sequence], '000')
		FROM dbo.ConfigLists CL WITH (NOLOCK)
		INNER JOIN dbo.vw_ZSO_ConfigItem CI WITH (NOLOCK) ON CL.ItemGUID = CI.ParentGUID
		WHERE CL.[Level] = 6 AND CL.Name IS NOT NULL AND CI.Name IS NOT NULL AND CI.Sequence IS NOT NULL

		TRUNCATE TABLE dbo.LU_ConceptParents

		INSERT INTO dbo.LU_ConceptParents (ConceptGUID, ParentConceptGUID)
		SELECT DISTINCT F.InstanceGUID AS ParentConceptGUID, dbo.GI_GetXMLAttributeString('ListConcepts', 'GUID', D.InstanceData) AS ConceptGUID
		FROM dbo.vw_ZSO_FormDefinition F WITH (NOLOCK)
		INNER JOIN dbo.vw_ZSO_FieldDefinition D WITH (NOLOCK) ON F.InstanceGUID = D.ParentGUID
		WHERE F.Subform = 'Concept'
		AND D.Subform = 'ChildList'
		AND dbo.GI_GetXMLAttributeString('ListConcepts', 'GUID', D.InstanceData) IS NOT NULL

		RETURN 0

	END TRY
	BEGIN CATCH

		-- Log and raise the error...
		DECLARE @ErrorMessage AS VARCHAR(1000) = ERROR_MESSAGE()
		EXECUTE @ReturnStatus = dbo.GI_LogEvent '00000000-0000-0000-0000-000000000000', 'dbo.GI_RefreshConfigLists - Unknown error', 1, @ErrorMessage
		RAISERROR ('dbo.GI_RefreshConfigLists - Unknown error', 16, 1)
		RETURN 1
	
	END CATCH

END

The GI_RefreshConfigLists stored procedure is called when a UX Creator wishes to execute either “Clear Configuration Lists” or “Clear Application State” commands.

The ConfigLists table is used by the Dynamic Page Builder when it is asked to render a Form Definition that has not yet been cached in the DeepXML table.

Updated on November 23, 2022

Was this article helpful?

Related Articles

Need Support?
Can’t find the answer you’re looking for? Don’t worry we’re here to help!
Contact Support

Leave a Comment