Skip to main content

Case metadata

Info

Mercury is a repository of metadata about objects along with definitions of GUI controls enabling the generation of GUI forms. Metadata is structured information used to describe objects (cases) - it describes the logical and physical relationship between parts of a complex object (see Describing digital objects, October 21, 2016 [accessed 2020-07-01]). Mercury DB in its structures also allows for storing the necessary data allowing for the generation of edit forms and presentation pages of stored objects. Metadata is stored in a relational database (SQL). A synonym for the definition of case metadata is the case type. Below is a description of the entity.

TypeCase

Layers usedLogic
TypeEntity
complexTypeTypeCase

An entity representing a case type. An object used in the logical layer services. Below is a diagram of TypeCase relationships with other entities described in this document.

Entity Relationship Diagram

List and meaning of individual fields
FieldDescriptionTypeRequiredAllowed values ​​
idType identifier. Unique value within the repository.LongYes
accountNumberDefault accounting account code assigned to a given type. This data is the basis for generating a unique inventory number.StringNo
checkStoreCounterWhether to check the counter counting the number of documents of a given type. Counting via triggers in case object modification mechanisms.BooleanNoDefault value false
codeType code – a simple name grouping all versions of the typeTypeCodeYes
descriptionDescription of the type versionStringNo
fromDateValidity of the type version – date from. Parameter used to narrow down search results (to a set of cases in types occurring in a given time period)CalendarNo
isActiveIs the type active?BooleanNoDefault value true
isDocumentTypeIs the given type a document type? In connection with the CMIS Electronic Document Archive, information whether the type is a document type.BooleanNo
isEditableIs the type modifiable?. Document types are not modifiable, because they will be synchronized with the AE (Electronic Archive, a document repository in the CMIS standard). Issue types, on the other hand, can be subject to changes introduced by the user.BooleanNoDefault value true
isLatestVersionIs this the currently valid version of the given type.BooleanNo
kindType group identifierTypeKindYes
sourceOfObjectNames of data sources of the type definition origin.List<String>NoData can be passed via the context object.
subTypesList of complex types associated with appropriate parametersSet<SubType>No
sumControlChecksum calculated based on the names of the definitions of all parameters - it is one of the bases for identifying the same types.StringNo
toDateType version validity - date to. Parameter used to narrow down search results (to a set of issues in types occurring in a given time period)CalendarNo
typeNameType nameStringYes
typeParamsList of type parametersList<TypeParam>Yes
versionType version numberLongNo

TypeParam

Layers usedLogic
TypeEntity
complexTypeTypeParam

An object representing a type parameter. An object used in the services of the logical layer. Below is a diagram of the relationships between the TypeParam object and other entities described in this document.

Entity Relationship Diagram

List and meaning of individual fields
FieldDescriptionTypeRequiredAllowed values ​​
idThe type parameter identifier. A unique value within the repository.TypeParamPKYes
paramDefinitionParameter identifierParamDefinitionYes
labelLabel of the field appearing on the GUI formStringNo
tooltipUser action tooltip associated with the field on the GUI formStringNo
updateableCan the field be edited/changed using the GUI formStringNoDefault value true
withEmptyOptionCan a GUI form field contain an empty option?BooleanNo
isRequiredIs it mandatory or is it required to fill in the value? Control field for form generation mechanisms.BooleanNoDefault value false
isSearchDataIs it available in search?BooleanNoDefault value true
hasMultiValues ​​Can we insert multiple values ​​into a field, regardless of whether we are dealing with a regular simple field, e.g. INTEGER or a multilist.BooleanNoDefault value false
arg1Universal argument no. 1. Control field for GUI form generation mechanisms.StringNo
arg2Universal argument no. 2. Control field for GUI form generation mechanisms.StringNo
arg3Universal argument no. 3. Control field for GUI form generation mechanisms.StringNo
arg4Universal argument no. 4. Control field for GUI form generation mechanisms.StringNo
arg5Universal argument no. 5. Control field for GUI form generation mechanisms.String No
xmlIdXML identifier - a field added to XML needed to identify fields with the same names but different labelsStringYes
actionsList of Javascript actions assigned to the field on the GUI form. Control field for form generation mechanismsSet<TypeParamAction>No

TypeParamPK

Layers usedLogic
TypeEntity
complexTypeTypeParamPK

Primary key of the TypeParam entity (type parameter) binding the type identifier and the position where the parameter occurs.

List and meaning of individual fields
FieldDescriptionTypeRequiredAllowed values ​​
typeCase type identifier (reference to TypeCase entity).TypeCaseYes
positionField number to which the parameter is related, default position on the GUI form in vertical configuration.IntegerYesNumeric field with values ​​from 1 to 128 (maximum number of parameters).

Control fields and their value definitions for GUI presentation generation mechanisms

Below, fields whose control meaning is not apparent from the description in the table with the object description will be listed. Some generation actions are supplementary to control fields defined in the associated ParamDefinition entity.

isRequired

Control field for form generation mechanisms. The value true means that the field is required. The value false means that the field is not required. If the ParamDefinition indicates that the field represents a SELECT control (HTML tag <select> ) or MULTI (HTML tag <select multiple>) on a GUI form, and the field value is false, the option list will be expanded with an empty value of --- select ---.

arg1

The field represents universal argument no. 1. Depending on what data is contained in ParamDefinition, the field obtains different control meanings:

  • For SELECT or MULTI controls, this is information whether the value or name should be extracted from the option element. The value true means getting the value attribute.
  • For a control representing TEXTAREA, this is the number of columns (characters in the horizontal direction).
  • For a control representing a simple input, this is its type: text or password
  • For a control representing an entered date, this is the JavaScript date format, e.g. yyyy MM dd
  • For a control representing an entered number, this is the number format.
  • For a control representing a file, this is the value representing the type of the loaded file. Possible values ​​are [img|doc|xls|pdf|unknown]

arg2

The field represents universal argument no. 2. Depending on what data is contained in ParamDefinition, the field obtains different control meaning:

  • For SELECT or MULTI controls, this is information representing the size attribute.
  • For a control representing TEXTAREA, this is the number of lines (characters vertically).
  • For a control representing simple input, this is the size of this field.
  • For a control representing an entered date, this is the position of the calendar icon (value left – on the left side of the form field, right – on the right side)
  • For a control representing a file, this is the size of the field

arg3

The field represents universal argument no. 3. Depending on what data is contained in ParamDefinition, the field obtains a different control meaning:

  • For SELECT or MULTI controls, this is information whether the concatenation of value and name (value{separator}name, where the value {separator} defaults to the value of the stick character |) should be extracted from the list, the value true means that yes.
  • For a control representing a simple input, this is the maximum number of characters.

arg4

The field represents universal argument no. 4. Depending on what data is included in the ParamDefinition, the field obtains different control meanings:

  • For controls representing LOB type data, these are data concerning metadata describing this object (used to present the object preview): JSON, ANY, FILE, XML, HTML, TEXT.

arg5

The field represents universal argument no. 5. Depending on what data is included in the ParamDefinition, the field obtains different control meanings:

  • For controls representing LOB type data, these are the object's mimeType data (used to present the object preview):
public String getDefaultContentType() {
switch (this) {
case JSON:
return "application/json";
case XML:
return "application/xml";
case HTML:
return "text/html";
case FILE:
return "application/octet-stream";
default:
return "text/plain";
}
}

actions

A list of JavaScript actions/functions assigned to a field on a GUI form. See the description of the TypeParamAction entity.

TypeCode

Layers used inLogic
TypeEntity
complexTypeTypeCode

Code that groups different versions of the same type.

List and meaning of individual fields
FieldDescriptionTypeRequiredAllowed values ​​
nameIdentifier, name of the type code.StringYes
aliasFor presentation on forms or to show that a type is derived from another type - most useful for codes describing packages.StringNo
colorBackground color. For presentation on forms or lists: color presented in RGB hexadecimalStringNoHTML color in RGB hexadecimal, e.g. ffdecc
fgcolorText color. For presentation on forms or lists: color presented in RGB hexadecimalStringNoHTML color in RGB hexadecimal, e.g. 010101
icoSrcLogo/icon representing the given issue type. For presentation on forms or lists: HTML source (for SRC tag). Can be presented as URL or appropriate base64StringNoIndication of http source.
labelLabel representing the given issue type. For presentation on forms. Can be empty.StringNo
publishVersionThe version is changed with each update - needed to identify whether a given entry has already been published.StringNoGenerated value
uniqueConstraintParamNameField name that contains unique values ​​within a given typeStringNoField name that appears in the set of parameters for the representation of the case type.
retentionTimeMilisTime, expressed in milliseconds, after which the case object of a given type will be deleted, counted from the time/date of its creation.LongNo
useArchivizationFlag indicating whether the case archiving method should be used when deleting a case of a given type.BooleanNotrue or false
subjectFormulaFormula for building the subject of a case of a given type. This formula is a definition of the concatenation of field names of a given type.StringNo
partitionNameThe name of the root partition of the Case entity, where case data of a given type is stored.StringNo

Control fields and their value definitions for GUI presentation generation mechanisms

The TypeCode entity contains control fields that can be used to create GUI presentation mechanisms.

GUI_prezentation_typecode

The above illustration shows how issue types can be presented in a presentation layer application. It also shows how the values ​​of the color, fgcolor, icoSrc and label fields can be used when building a GUI.

Field icoSrc

A logo/icon representing a given issue type used for presentation on forms. The GUI implementation, which was presented in the previous illustration, uses iconography from the Font Awesome version 4 collection. The field accepts sample values: fa-thumbs-o-up, fa-bars, fa-address-book, fa-gavel, fa-user-secret etc. On the GUI side, the field value is retrieved to generate the following code:

Example of using Font Awesome
<html>
<head>
<link type="text/css" rel="stylesheet" href="/mercury-gui-portal/static/css/font-awesome.min.css"/>
</head>
<body>
<i class="fa fa-thumbs-o-up fa-3x" aria-hidden="true"></i>
</body>
</html>

Field subjectFormula

Formula for building a value representing the subject of a case of a given type. This formula is a definition of concatenation of fields of a given type and literal values. The formula is used to present the value of the subject field of the CaseNarrative object, which is an element used in the presentation of search results in the GUI presentation layer.

GUI_prezentation_cases

Below are examples of values that the field can take to present teasers1 of cases:

Example 1: Teaser of stored cases representing tasks (activities) of the BPM (Business Process Manager) process instance
activityName||':'||bpmProcessInstanceId||'<br/>'||bpmGroupDisplayName||'<br/>'||bpmTaskStatus||'<br/>'||userFullName
Example 2: Teaser of a case representing an address object.
city||' '||street
Example 3: Teaser of a case representing an address object.
county||' '||community||' '||city||' '||street||' '||buildingNumber
Example 4: Teaser of a case representing an invoice object.
'FV:'||invoceNo||'<br/>'||documentNo||' '||category

TypeKind

Layers usedLogic
TypeEntity
complexTypeTypeKind

Kind of type / category of type.

List and meaning of individual fields
FieldDescriptionTypeRequiredAllowed values ​​
nameThe identifier, name of the type type.StringYes
descriptionA description of the type.StringNo

Examples of types:

  • INW - Inventory
  • ASSETS - Fixed assets
  • GEN - Generated type definitions

SubType

Layers usedLogic
TypeEntity
complexTypeSubType

Data about the dependent case type and the dependent case form position on the main form (parent case).

List and meaning of individual fields
FieldDescriptionTypeRequiredAllowed values ​​
idSubtype identifier. Unique value within the repository.LongYes
parentTypeCase type identifierTypeCaseYes
codeType codeTypeCodeYes
isSearchDataAvailable in search?BooleanNotrue or false
labelHeader of dependent case form presentation.StringNo
isListAre dependent cases presented as a list?BooleanNotrue or false
fieldNameName of the parent case field to which the given dependent case form is associated.StringNo
tooltipUser action tooltip associated with a field on the GUI formStringNo
updateableIs the dependent case form (data) changeable?StringNotrue or false

TypeParamAction

Layers usedLogic
TypeEntity
complexTypeTypeParamAction

A collection of actions along with JavaScript code that are associated with GUI form fields.

List and meaning of individual fields
FieldDescriptionTypeRequiredAllowed values ​​
idAction identifier. Unique value within the repository.LongYes
typeParamPointer to type parameterTypeParamYes
jsEventNameThe name of the JavaScript event associated with the field of the given type.StringYesHTML event names2
jsFunctionBodyJavaScript code implementing the function.LOBYes

ParamDefinition

Layers usedLogic
TypeEntity
complexTypeParamDefinition

An entity representing basic information about the name of a field, its simple or complex type. ParamDefinition is an element that is used repeatedly as a definition of a case type parameter, and can appear in many different types. It is a definition of a case type parameter. For example, a field named name can be used in many different types defining a user object, car, plane, computer.

List and meaning of individual fields
FieldDescriptionTypeRequiredAllowed values ​​
idParameter definition identifier. Unique value within the repository. Composite key.ParamDefinitionPKYes
descriptionParameter descriptionStringNo
alternateNameAlternative name of the parameter.StringNo
recommendedLabelRecommended label describing the given definition.StringNo
isLatestVersionIs this the latest version of the field definition?BooleanYestrue or false
isIndexableIs the field indexed in the Lucene index, or is it possible to search for this field using Lucene mechanisms.BooleanNotrue or false
htmlControlNameName of the HTML control type, a field on a GUI form.StringYesValues ​​representing the HtmlSupportedControl object described later in the document.
paramTypeParameter type, valueStringYesValues ​​representing the AttributeType object described later in the document.
subTypeInformation for complex types and what type the element is.StringNoName of the case type (TypeCase object) representing the dependent case assigned to the field.
timeToLiveSecondsThe parameter is optionally defined and defines the expiration time of the attribute cache.LongNoNumeric value
valueDefinitionOptional definition of the parameter value (when dealing with dictionary values).StringNo
sourceTypeOptional field for dictionary types - information about what type the value definition is.StringNoValue representing the SourceType object described later in the document.
sourceThe name/definition of the source from which the dictionary data for the select fields comes.StringNo
sourceJndiNameThe general JNDI name of the source with exceptions.StringNo
sourceJ2CNameName indicating the identity and password of users used by the Java(TM) 2 Connector technology link security architecture.StringNo
presentationUrlPrefixURL prefix (HTTP, HTTPS paths) that is generated during value presentation (the field value is appended to the end of the URL).StringNo
complexClassThe name of the Java class that represents the complex object stored in the given field.StringNo
defaultValueThe default value of the parameter fieldStringNo
fromDateType version validity – date from. Parameter used to narrow down search results (to a set of issues in types occurring in a given time period)CalendarNo
toDateType version validity – date to, Parameter used to narrow down search results (to a set of issues in types occurring in a given time period)CalendarNo
isEditableWhether the field data (of the ParamDefinition object) can be modifiedBooleanNotrue or false
sourceOfObjectThe name of the source from which the field name comes.StringNo
mimeTypeAdditional information about mimeType. A value supplementing the data about the LOB field, stored in the knownLobMetadata fieldStringNomimeType definitions e.g.: application/json, application/xml, text/html, application/octet-stream, text/plain

ParamDefinitionPK

Layers usedLogic
TypeEntity
complexTypeParamDefinitionPK

Definition of the primary key of the ParamDefinition entity.

List and meaning of individual fields
FieldDescriptionTypeRequiredAllowed values ​​
definitionNameUnique field name.StringYes
versionField version.LongYesValue generated automatically after identifying a parameter definition change.

Control fields and their value definitions for GUI presentation generation mechanisms

Below is a description of enumerators, whose data is included in the ParamDefinition entity description, and on which the rules for building HTML controls during form generation are based.

HtmlSupportedControl

The htmlControlName control field describes a single HTML control associated with a given form field. Below is a list of values ​​that influence the selection of the appropriate GUI form control:

ValueDescription
TEXTlong text, presented in TEXTAREA
INTEGERInteger. Input field with integer format validation
CURRENCYFloating-point number with additional information about the currency (currency code, e.g. PLN, USD, GBP, etc.)
NUMBERFloating-point number. Input field with integer format validation
STRINGshort text, presented in a regular INPUT TYPE="text" field
CHECKtype presented as a CHECKBOX field
RADIOType presented as a RADIO field
DATEDate type, field with datePicker
URLText field to which a link can be entered.
FILEText field to which the location of a local (workstation) file can be entered.
SELECTSingle-select drop-down list, but it can be made a multi-select field by setting the appropriate value.
MULTIMultiple-select drop-down list
GROUPEDSELECTSingle-select drop-down list, but the list presents grouped name-value pairs
GROUPEDMULTIDrop-down list with multiple selections, but the list displays grouped name-value pairs, but you can make it a multi-select field by setting the appropriate value.
LOVSELECTDrop-down list field with single selection, but the list is displayed in a separate window (LOV - List OF Values)
LOVMULTIDrop-down list field with multiple selections, but the list is displayed in a separate window (LOV - List OF Values), but you can make it a multi-select field by setting the appropriate value.
GROUPEDLOVSELECTDrop-down list field with single selection, but the list is displayed in a separate window (LOV - List OF Values), but the list displays grouped name-value pairs, but you can make it a multi-select field by setting the appropriate value.
GROUPEDLOVMULTIField with a drop-down list, with the option to select multiple values, but the list is presented in a separate window (LOV - List OF Values), but the list presents grouped name-value pairs
SUBFORMGeneration of a GUI subform/dependent case presentation. For the paramType field with the value SUBCASE - see the description AttributeType.
SUBTABLEGeneration of lists/tables, for dependent case lists. For the paramType field with the value SUBCASE - see the description AttributeType.

AttributeType

The attributeType control field defining the types of form fields. It can be the basis for building a value validator. Below is a list of values ​​that affect the construction of the appropriate GUI form control.

ValueType nameJava implementationDescription
BOOLEANBooleanjava.lang.BooleanList of values ​​corresponding to true and false;
BOOLEAN_INTEGERBooleanIntegerjava.lang.IntegerList of values ​​corresponding to true and false with a numeric value;
TEXTTextjava.lang.StringLong text - characters (words, sentences, etc.);
STRINGStringjava.lang.StringShort text - characters (word, sentence, etc.)
PASSWORDPasswordjava.lang.Stringshort text, presented in a regular field with a mask hiding the entered value
NUMBERNumberjava.lang.DoubleFloating-point number; #########0.####
DECIMALDecimaljava.lang.DoubleFloating-point number; #########0.####
DOUBLEDoublejava.lang.DoubleFloating-point number; #########0.####
FLOATFloatjava.lang.FloatFloating-point number; ########0.####
CURRENCYCurrencypro.ibpm.mercury.attrs.javax
.CurrencyValue
Number in currency format, with two decimal places; #########0.##
INTEGERIntegerjava.lang.LongInteger
DATEDatepro.ibpm.mercury.attrs.javax
.DateInString
Simple date in DD-MM-YYYY format
DATE_LONGDateLongpro.ibpm.mercury.attrs.javax
.DateInString
Date with time (hour) in DD-MM-YYYY HH24:MI:SS format
TIMETimepro.ibpm.mercury.attrs.javax
.DateInString
Date with time (hour) in the format DD-MM-YYYY HH24:MI:SS
URLURLpro.ibpm.mercury.attrs.javax
.URLValue
HTTP address
SELECTn/ajava.util.CollectionAttribute with lists. Multi-valued field.
COMPLEXn/ajava.lang.ObjectComplex type, for a field of this type a form will be generated based on data defined in an object meeting the ComplexValue interface. The complex type can also be supported by an HTML control of the SELECT type - then value contains an appropriately prepared form representing the value (based on the implementation of the ComplexValue#encode(Object, String, String) method)
LOBLobjava.lang.StringLarge object
SUBCASEn/ajava.lang.Objectdependent case
JSON_NVPJSONNameValuePairpro.ibpm.mercury.attrs.sub
.JSONNameValuePairSubType
Subtype representing a JSON object with fields name and value
obsolete, currently in use is NameValuePair
NVPNameValuePairpro.ibpm.mercury.attrs.sub
.NameValuePairSubType
Subtype representing an object with a pair of name and value (with fields name and value)
ENTRYEntrypro.ibpm.mercury.attrs.sub
.EntrySubType
Subtype representing an Entry object with a pair of key and value (with key and value fields)
MAPMappro.ibpm.mercury.attrs.sub
.MapSubType
Subtype representing a list of Entry objects
ANYANYpro.ibpm.mercury.attrs.sub
.AnySubType
Subtype representing any object

SourceType

The sourceType control field defining the origin of the dictionary data for the field value. Data source types for GUI form drop-down list controls.

ValueDescription
DEFAULTDefault data origin - for fields of type Integer, Number, Date
JSONA JSON-formatted list in the valueDefinition field of the ParamDefinition entity.
WSThe field in the valueDefinition field of the ParamDefinition entity contains the name of the class interpreting the result, and the SOURCE field contains the WebService address using the HTTPS protocol
HTTPThe field in the valueDefinition field of the ParamDefinition entity contains an intermediate path to a protected list of elements defined as a file, and the SOURCE field contains a URL directing to a page with the appropriate XML or JSON format - using the HTTP and HTTPS protocols. The page is not secured, or is secured with the BASIC, OAuth mechanism.
WEBIn the field valueDefinition of the ParamDefinition entity there is an intermediate path leading to a protected list of elements defined as a file, and in the SOURCE there is a URL directing to a page with the appropriate XML or JSON format - using the HTTP and HTTPS protocols. The server page where the data is located is secured with the FORM mechanism
FILEIn the field valueDefinition of the ParamDefinition entity there is an intermediate path leading to a list of elements defined as a file, and in the SOURCE field there is a URL directing to a file with the appropriate XML or JSON format
JNDI_RESOURCEIn the field in the valueDefinition field of the ParamDefinition entity there is an intermediate path leading to a list of elements defined as a file, and in the field in the SOURCE field there is a URL directing to a page with the appropriate XML or JSON format - using the HTTP/HTTPS protocol
SAVEDVALSvalues ​​saved in the database in an array. The array contains rows with fields for the attribute name and the saved value, and its data is completed with the entered, various values ​​from the GUI form.
LOCALDAOusing local DAO classes (the DAO class name will be built based on the name of the ParamDefinition parameter)
QUERYSQL query in the valueDefinition field of the ParamDefinition entity. The JNDI data source should be in the sourceJndiName field or the JDBC URL in the source field

Footnotes

  1. Teaser - a short description of the case, which is used to present the case in the search results.

  2. A list of available HTML event names can be found at https://www.w3schools.com/tags/ref_eventattributes.asp.