Skip to main content

Config.WorkQueues

persistent class Config.WorkQueues extends %Library.Persistent, Config.CommonMultipleMethods, Config.CommonProperties, %SYSTEM.Help

SQL Table Name: Config.WorkQueues

This class allows you to modify and view the [WorkQueues] section of the CPF file through programatic APIs. While properties are usually modified through the System Management portal, there may be some occasion where modifying them through the API's is best for your system. In all the Config methods, if you do not specify the CPFFile parameter, the currently active CPF file is used. If you wish to modify a CPF file which is not the currently active one, then specify the CPFFile you wish to modify in the method call.
The Flags parameter does not normally need to be specified; the defaults are usually sufficient for most cases.
You can use either the provided API's (Create/Get/Modify/Delete) to modify the properties by passing in the correct parameters, or use Object syntax to open and directly manipulate the config objects (Open() and Exists()). Most objects created here need only to specify the Name of the object, and 1 or 2 properties since the the defaults are what are commonly used for most cases.

EXAMPLE:

; Use class methods to create an instance
%SYS>s Name="TEST"
%SYS>s Properties("MaxActiveWorkers")=8
%SYS>s Status=##Class(Config.WorkQueues).Create(Name,.Properties)
%SYS>i 'Status w !,"Error="_$SYSTEM.Status.GetErrorText(Status)
; Use class methods to modify properties
%SYS>s Status=##Class(Config.WorkQueues).Get(Name,.Properties)
%SYS>i 'Status w !,"Error="_$SYSTEM.Status.GetErrorText(Status)
%SYS>zw Properties
Properties("DefaultWorkers")=0
Properties("MaxWorkers")=0
Properties("MaxActiveWorkers")=8
%SYS>s Properties("MaxActiveWorkers")=4
%SYS>s Status=##Class(Config.WorkQueues).Modify(Name,.Properties)
%SYS>i 'Status w !,"Error="_$SYSTEM.Status.GetErrorText(Status)
; Now use Objects to modify properties
%SYS>s Obj=##Class(Config.WorkQueues).Open(Name)
; We could have used i ##Class(Config.WorkQueues).Exists(Name,.Obj) instead of Open()
%SYS>w Obj.MaxActiveWorkers
4
%SYS>s Obj.MaxWorkers=2
%SYS>s Status=Obj.%Save()
%SYS>i 'Status w !,"Error="_$SYSTEM.Status.GetErrorText(Status)
; Now delete the object we just created
%SYS>s Status=##Class(Config.WorkQueues).Delete(Name)
%SYS>i 'Status w !,"Error="_$SYSTEM.Status.GetErrorText(Status)

Property Inventory

Method Inventory

Parameters

parameter CAPITALNAME = 0;
WorkQueue name is not capitalized.

Properties

property AlwaysQueue as %Boolean [ InitialExpression = 0 ];
If true makes this a true queue where you need to wait for the work group request to get to the head of the queue in order to get a worker assigned. When AlwaysQueue=0 for a category when a new WQM group is created we allocated at least one worker immediately to make progress on the work even if the rest of the work unit are in a queue waiting for additional workers to free up.
Property methods: AlwaysQueueDisplayToLogical(), AlwaysQueueGet(), AlwaysQueueGetStored(), AlwaysQueueIsValid(), AlwaysQueueLogicalToDisplay(), AlwaysQueueLogicalToXSD(), AlwaysQueueNormalize(), AlwaysQueueSet(), AlwaysQueueXSDToLogical()
property DefaultWorkers as %Integer (MINVAL = 0) [ InitialExpression = 0 , Required ];
When a work group in this category is created and no worker job count is specified this is the default number of worker jobs we will assign to the group. 0 = Dynamic.
Property methods: DefaultWorkersDisplayToLogical(), DefaultWorkersGet(), DefaultWorkersGetStored(), DefaultWorkersIsValid(), DefaultWorkersLogicalToDisplay(), DefaultWorkersNormalize(), DefaultWorkersSet(), DefaultWorkersXSDToLogical()
property MaxActiveWorkers as %Integer (MINVAL = 0) [ InitialExpression = 0 , Required ];
Maximum number of active worker jobs we will keep in the pool of jobs servicing requests in this category. Idle jobs are detected and new jobs are started automatically to keep the maximum active job number around this limit. 0 = Dynamic, -1 = unlimited.
Property methods: MaxActiveWorkersDisplayToLogical(), MaxActiveWorkersGet(), MaxActiveWorkersGetStored(), MaxActiveWorkersIsValid(), MaxActiveWorkersLogicalToDisplay(), MaxActiveWorkersNormalize(), MaxActiveWorkersSet(), MaxActiveWorkersXSDToLogical()
property MaxTotalWorkers as %Integer (MINVAL = 0) [ InitialExpression = 0 ];
If none-zero specifies the maximum number of workers we will start in this category. Even if all existing workers are blocked we will not start more workers once we reach this limit. This is useful for IO intensive workloads where we expect workers to be blocked and are not trying to control the amount of CPU a worker uses.
Property methods: MaxTotalWorkersDisplayToLogical(), MaxTotalWorkersGet(), MaxTotalWorkersGetStored(), MaxTotalWorkersIsValid(), MaxTotalWorkersLogicalToDisplay(), MaxTotalWorkersNormalize(), MaxTotalWorkersSet(), MaxTotalWorkersXSDToLogical()
property MaxWorkers as %Integer (MINVAL = 0) [ InitialExpression = 0 , Required ];
When a work group in this category is created specifying the number of worker jobs wanted and the number requested is greater than this limit then we will use this limit value instead. 0 = Dynamic
Property methods: MaxWorkersDisplayToLogical(), MaxWorkersGet(), MaxWorkersGetStored(), MaxWorkersIsValid(), MaxWorkersLogicalToDisplay(), MaxWorkersNormalize(), MaxWorkersSet(), MaxWorkersXSDToLogical()

Methods

classmethod IsSystemWorkQueue(Name As %String) as %Boolean
Returns whether
classmethod MaxWorkersAvailable() as %Integer
Maximum Number of Queue Manager Workers for the system

Queries

query List(Names As %String = "*", CPFFile As %String = "", Flags As %Integer = 0, Format As %Integer = 0)
Selects Name As %String, MaxActiveWorkers As %Integer, DefaultWorkers As %Integer, MaxWorkers As %Integer, MaxTotalWorkers As %Integer, AlwaysQueue As %Boolean
List WorkQueues in a CPF file.

Parameters:
Names - Comma separated list of WorkQueue names
"*" - All records match
"String,String1" - Any records matching one of these elements
"String*" - Any record starting with "String"
"String,String1*,String2" - Any record matching one of these elements, or starting with "String1"
CPFFile - Name of the CPF file to use. A null string means use the active CPF file.
Flags - Currently ignored.
Format
0 - Standard report list format
1 - ^CONFIG global format
2 - CPF file format format
Note: This query may change in future versions
query ListFilter(Filter As %String = "", CPFFile As %String = "", Flags As %Integer = 0, Format As %Integer = 0)
Selects CategoryName As %String, MaxActiveWorkers As %Integer, DefaultWorkers As %Integer, MaxWorkers As %Integer, MaxTotalWorkers As %Integer, AlwaysQueue As %Boolean
List WorkQueues in a CPF file.

Parameters:
Filter - Filter to select columns
CPFFile - Name of the CPF file to use. A null string means use the active CPF file.
Flags - Currently ignored.
Format
0 - Standard report list format
1 - ^CONFIG global format
2 - CPF file format format
Note: This query may change in future versions

Indexes

index (CPFNameSectionHeaderName on CPFName,SectionHeader,Name) [IdKey, Type = key, Unique];
Index methods: CPFNameSectionHeaderNameCheck(), CPFNameSectionHeaderNameDelete(), CPFNameSectionHeaderNameExists(), CPFNameSectionHeaderNameOpen(), CPFNameSectionHeaderNameSQLCheckUnique(), CPFNameSectionHeaderNameSQLExists(), CPFNameSectionHeaderNameSQLFindPKeyByConstraint(), CPFNameSectionHeaderNameSQLFindRowIDByConstraint()

Inherited Members

Inherited Properties

Inherited Methods

Storage

Storage Model: Storage (Config.WorkQueues)

^|"^^"_$ZU(12)|SYS("CONFIG")(ID)
=
%%CLASSNAME
Comments
DefaultWorkers
MaxActiveWorkers
MaxWorkers
MaxTotalWorkers
AlwaysQueue
FeedbackOpens in a new tab