Activities
Activities are the part of a process that require action, either by a user or an application.
User task
A task where a user needs to perform a specific activity within a process engine or application. For example, the user is prompted to enter their details on a form.
Attributes: General
Attribute | Description |
---|---|
Model ID | The unique identifier of the element within the process model. |
Name | The name of the element displayed in the diagram. |
Documentation | A description and any additional information about this element. |
Attributes: Assignment
Attribute | Description |
---|---|
Candidate users | Defines a list of users that can become assignee by claiming the task. |
Attributes: Details
Attribute | Description |
---|---|
Form reference | Reference to the form that will be displayed when this task is opened. |
Task listeners | Allows you to invoke Java logic after the creation, reassignment, completion and deletion of the task. |
Task ID variable | An optional variable that contains the ID of the task. |
Form properties | Custom form properties which are used within the legacy or custom form engine. |
Attributes: Execution
Attribute | Description |
---|---|
Asynchronous | When enabled, the activity starts as an asynchronous job. |
Execution listeners |
Allows you to invoke Java logic after certain events:
|
Skip expression |
Defines an expression which is evaluated before executing the task. If it evaluates to true, the task is skipped. You must opt-in to enable this feature by setting a process variable |
Attributes: Multi instance
Attribute | Description |
---|---|
Multi instance type |
Determines if multiple instances of this activity are created:
|
Collection |
Expression to set the loop collection for a multi-instance task. The number of instances is determined by the elements of a collection. For each element in the collection, a new instance is created. A common use case is to loop over lists created by multi-element subforms. For example, if you bound a subform to an array of invoice positions using the expression |
Element variable |
The name of the variable where the currently processed item from the loop collection is stored, for example You can access the element in the process through an expression, for example |
Element index variable |
The name of the variable where the index of the currently processed item from the loop collection is stored, for example, The index starts with 0 and increases with every element that is being looped through. You can access the index in the process through an expression, for example |
Cardinality | A number or an expression that evaluates to an integer, which controls the number of activity instances that are created. If the attribute Collection is empty, a new instance is created for every element of the list. With cardinality, you can overwrite this and only create a given number of instances. You can also use this attribute if you want to loop over an activity a given number of times without specifying a collection. |
Completion condition | A Boolean expression that when true cancels the remaining activity instances, stopping the loop, and produces a token. |
Attributes: Visual
Attribute | Description |
---|---|
Font size | The font size of the element in the diagram. |
Font weight | The font weight of the element in the diagram. |
Font style | The font style of the element in the diagram. |
Font color | The font color of the element in the diagram. |
Background color | The background color of the element in the diagram. |
Border color | The border color of the element in the diagram. |
User tasks
User tasks are BPMN elements that request a user to perform a manual action in order for the workflow to progress. For information on how user tasks present themselves and how you can work with them, see Using workflows in the Collibra Platform User Guide.
A user task in the Flowable Designer has the following fields:
- Id: The ID of a user task has to be a unique task identifier within the workflow. For statistical purposes, you can add a prefix to an ID, which is then considered to be a 'task type'. Everything before the first underscore (_) is considered the task type. In the example below, the task type of the created user task is 'correct'. In this way, you can group similar tasks together and make it possible to get statistics about each individual task type. For example, I want to know the number of open 'review' tasks.
- Name: A good name for a user task is very important, as it gives the user an idea what the task is about. The name is also used extensively when the task is shown to the user.
- Candidate Users: These are all the users that are asked to perform the task. If one of them performs it, the task is completed and the workflow continues. To be able to use our own role-based permission system, we created user expressions.
These user expressions provide an easy and versatile way to define which users are allowed to execute the task. - Documentation: This is the description of the task. It is displayed to the user to explain what he is expected to do.
Define a user task
To define a user task, follow these steps:
- From the Tasks section of the Palette, drag a UserTask to the Chief steward lane..
- Connect the start event to the user task with a SequenceFlow connection.
Make sure that the start and end event stay connected through the user task.You can also create elements starting from an other element by hovering your pointer over it and clicking the create element button:
- In the Properties section, select the General tab.
- In the Name field, enter a name for the task, for example: Review and comment.
- Select the Main config tab.
- In the Candidate user field, enter a user expression, for example:
${chiefStewardUserExpression}
.For more information about user expressions, see Candidate user expressions.
- Select the Documentation tab.
- In the Documentation field, enter the task instructions, for example: Please review the term and provide comments.
- To add a dialog box for the user to provide comments, create two variables:
- Select the Form tab.
- Click New.
- Enter the required information:
- Id: Give an ID for the dialog box, for example Comment.
- Name: Provide a name for the dialog box, for example Please review the new term and provide comments.
- Type: Select the type textarea.
- Readable, Writeable and Required: Set to True.
- Click OK.
- Click New.
- Enter the required information:
- Id: Give an ID for the button, for example commentButton.
- Name: Provide a name for the button, for example Comment.
- Type: Select the taskButton type.
- Readable and Writeable: Set to True.
- Required: Set to False.
- Click OK.
The following image shows the current state of the workflow:
Candidate user expressions
A candidate user is a user who can perform a workflow task. You can specify candidate users by using candidate user expressions, such as role(Business Steward)
, user(John)
, or group(Data Custodians)
.
You can include a comma or other punctuation marks, except semicolon, in your candidate user expressions. If you use punctuation marks, you must enclose the user expressions in curly brackets, for example {role(Business Steward; Community, Inc)}
.
It is best practice to use curly brackets for all user expressions, whether the user expression contains a punctuation mark or not.
Expression | Description |
---|---|
role(<roleName>) |
Assigns the task to users with the specified role on the workflows business item. In case of a global workflow, you can use global role names.
|
role(<roleName>;<communityName>) |
Assigns the task to users with the specified role on the specified community. This is independent of the current workflow business item.
This expression includes any inherited responsibilities. |
role(<roleName>; <communityName>; <domainName>) |
Assigns the task to users with the specified role on the domain with the specified name in the given community. This is independent of the current workflow business item.
This expression includes any inherited responsibilities. |
role(<roleName>;<entityLevel>) |
Assigns the task to users with a role on the workflow business item, but only if they have the role on the specified level. Possible entity levels are Term, Vocabulary and Community, which respectively indicate roles to be on the Asset, Domain or Community level.
|
role(<roleName>;<relationName>) |
Assigns the task to users with the specified role on assets that are related to the current workflow business item with the given relation name.
|
role(<roleName>; <entityLevel>; <relationName>) |
A combination of the role(<roleName>; <entityLevel>) and role(<roleName>; <relationName>) expressions. This expression assigns the task to users of the target-related asset with a role on the given entity level.
|
user(<userName>) |
Assigns the task to the user with the specified name.
|
group(<groupName>) |
Assigns the task to the users in the specified group.
|
Service task
A task that uses a service, such as a web service or an automated application.
Attributes: General
Attribute | Description |
---|---|
Model ID | The unique identifier of the element within the process model. |
Name | The name of the element displayed in the diagram. |
Documentation | A description and any additional information about this element. |
Attributes: Details
Attribute | Description |
---|---|
Expression | Expression to be executed when the task is started. It allows you to interact with the backend by calling services, making calculations, and so on. |
Delegate expression | Must resolve to a Java object, which itself must have a class that implements either JavaDelegate or ActivityBehavior. |
Class | Fully qualified class name to be invoked when executing the task. The class must implement either JavaDelegate or ActivityBehavior. |
Result variable | The name of the variable under which to store the result of the expression evaluation. |
Store as local variable | Indicates whether to store the result variable as a local variable. |
Class fields | Allows you to inject field values into your delegated class. |
Attributes: Execution
Attribute | Description |
---|---|
Asynchronous | When enabled, the activity starts as an asynchronous job. |
Execution listeners |
Allows you to invoke Java logic after certain events:
|
Skip expression |
Defines an expression which is evaluated before executing the task. If it evaluates to true, the task is skipped. You must opt-in to enable this feature by setting a process variable |
Attributes: Multi Instance
Attribute | Description |
---|---|
Multi instance type |
Determines if multiple instances of this activity are created:
|
Collection |
Expression to set the loop collection for a multi-instance task. The number of instances is determined by the elements of a collection. For each element in the collection, a new instance is created. A common use case is to loop over lists created by multi-element subforms. For example, if you bound a subform to an array of invoice positions using the expression |
Element variable |
The name of the variable where the currently processed item from the loop collection is stored, for example You can access the element in the process through an expression, for example |
Element index variable |
The name of the variable where the index of the currently processed item from the loop collection is stored, for example, The index starts with 0 and increases with every element that is being looped through. You can access the index in the process through an expression, for example |
Cardinality | A number or an expression that evaluates to an integer, which controls the number of activity instances that are created. If the attribute Collection is empty, a new instance is created for every element of the list. With cardinality, you can overwrite this and only create a given number of instances. You can also use this attribute if you want to loop over an activity a given number of times without specifying a collection. |
Completion condition | A Boolean expression that when true cancels the remaining activity instances, stopping the loop, and produces a token. |
Attributes: Visual
Attribute | Description |
---|---|
Font size | The font size of the element in the diagram. |
Font weight | The font weight of the element in the diagram. |
Font style | The font style of the element in the diagram. |
Font color | The font color of the element in the diagram. |
Background color | The background color of the element in the diagram. |
Border color | The border color of the element in the diagram. |
Delegates
A delegate is a standalone class that executes some logic.
Most delegates belong to the deprecated Java Core API v1 and will not be available in the next major release. Use script tasks to replace the functionality of v1 delegates. See Alternatives to API v1 delegates for examples.
All API v1 delegates are available in the com.collibra.dgc.core.workflow.activiti.delegate Java Core API package.
API v2 delegates belong to the com.collibra.dgc.workflow.api.delegate Java Workflow API package.
A delegate is always configured using a service task. All delegates accept expressions for input parameters.
Example of a deprecated delegate
This example shows the use of the changeStatusDelegate delegate. The Result variable field is not used when using a delegate, but the Fields field is. It injects the provided values into the delegate which uses them to perform some action. The changeStatusDelegate delegate changes the state of the resource to the status with the given id, Under Review, in this example.
- Field name: The name of the delegate field you want to inject a value to.
- String value: The fixed string value to inject in the field.
- Expression: An expression that is evaluated before the result is set as value in the field. For more information, see the expressions section.
Alternatives to API v1 delegates
This section provides examples of alternatives to Java Core API v1 delegates.
AddAttributeDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Add attribute" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.attribute.AddAttributeDelegate"> <extensionElements> <activiti:field name="value"> <activiti:string><![CDATA[attribute content]]></activiti:string> </activiti:field> <activiti:field name="ownerId"> <activiti:expression><![CDATA[${item.id}]]></activiti:expression> </activiti:field> <activiti:field name="typeId"> <activiti:expression><![CDATA[${givenAttributeTypeId}]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Add attribute" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.attribute.AddAttributeRequest; def attribute = attributeApi.addAttribute(AddAttributeRequest.builder() .assetId(item.id) .typeId(string2Uuid(givenAttributeTypeId))) .value("attribute content") .build()) execution.setVariable("output", attribute) ]]></script> </scriptTask> |
GetAttributeDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Get attribute" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.attribute.GetAttributeDelegate"> <extensionElements> <activiti:field name="attributeId"> <activiti:expression><![CDATA[${givenAttributeId}]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Get attribute" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ def attribute = attributeApi.getAttribute(string2Uuid(givenAttributeId)); execution.setVariable("output", attribute) ]]></script> </scriptTask> |
RemoveAttributeDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Remove attribute" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.attribute.RemoveAttributeDelegate"> <extensionElements> <activiti:field name="attributeId"> <activiti:expression><![CDATA[${givenAttributeId}]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Remove attribute" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ attributeApi.removeAttribute(string2Uuid(givenAttributeId)); ]]></script> </scriptTask> |
AddRelationDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Add relation" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.relation.GetRelationsDelegate"> <extensionElements> <activiti:field name="sourceTermId"> <activiti:expression><![CDATA[${item.id}]]></activiti:expression> </activiti:field> <activiti:field name="targetTermId"> <activiti:expression><![CDATA[${givenTargetResourceId}]]></activiti:expression> </activiti:field> <activiti:field name="binaryFactTypeId"> <activiti:expression><![CDATA[${givenRelationTypeId}]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Add relation" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.relation.AddRelationRequest; def relation = relationApi.addRelation(AddRelationRequest.builder() .typeId(string2Uuid(givenRelationTypeId)) .sourceId(item.id) .targetId(givenTargetResourceId) .build()); execution.setVariable("output", relation) ]]></script> </scriptTask> |
GetRelationsDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Remove relation" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.relation.GetRelationsDelegate"> <extensionElements> <activiti:field name="sourceTermId"> <activiti:expression><![CDATA[${item.id}]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Remove relation" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.relation.FindRelationsRequest; def relations = relationApi.findRelations(FindRelationsRequest.builder() .sourceId(item.id) .build()) .getResults(); execution.setVariable("output", relations) ]]></script> </scriptTask> |
RemoveRelationsDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Remove relation" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.relation.RemoveRelationsDelegate"> <extensionElements> <activiti:field name="sourceTermId"> <activiti:expression><![CDATA[${item.id}]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Remove relation" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.relation.FindRelationsRequest; def relations = relationApi.findRelations(FindRelationsRequest.builder() .sourceId(item.id) .build()) .getResults(); relationApi.removeRelations(new ArrayList(relations.collect{ it.getId() })); ]]></script> </scriptTask> |
AddResourceRoleDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Assign owner" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.roles.AddResourceRoleDelegate"> <extensionElements> <activiti:field name="resourceId"> <activiti:expression><![CDATA[${item.id}]]></activiti:expression> </activiti:field> <activiti:field name="userName"> <activiti:expression><![CDATA[${startUser}]]></activiti:expression> </activiti:field> <activiti:field name="roleId"> <activiti:expression><![CDATA[${roleId}]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Assign owner" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.responsibility.AddResponsibilityRequest def userName = execution.getVariable("startUser") def ownerUserId = userApi.getUserByUsername(userName).getId(); responsibilityApi.addResponsibility(AddResponsibilityRequest.builder() .resourceId(item.id) .resourceType(item.type) .roleId(string2Uuid(roleId)) .ownerId(ownerUserId) .build()) ]]></script> </scriptTask> |
RemoveResourceRoleDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Remove current Owner role" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.roles.RemoveResourceRoleDelegate"> <extensionElements> <activiti:field name="roleName"> <activiti:string><![CDATA[Owner]]></activiti:string> </activiti:field> <activiti:field name="userName"> <activiti:expression><![CDATA[${ownerName}]]></activiti:expression> </activiti:field> <activiti:field name="resourceId"> <activiti:expression><![CDATA[${domain.id}]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Remove current Owner role" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.responsibility.FindResponsibilitiesRequest def ownerUserId = userApi.getUserByUsername(ownerName).getId(); def ownerRoleId = users.getRoleId("Owner"); def responsibilities = responsibilityApi.findResponsibilities(FindResponsibilitiesRequest.builder() .resourceIds(Collections.singletonList(domain.id)) .ownerIds(Collections.singletonList(ownerUserId)) .roleIds(Collections.singletonList(ownerRoleId)) .build()) .getResults() responsibilityApi.removeResponsibilities(new ArrayList(responsibilities.collect{ it.getId() })); ]]></script> </scriptTask> |
AddTermDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Add term" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.term.AddTermDelegate"> <extensionElements> <activiti:field name="signifier"> <activiti:expression>${givenSignifier}</activiti:expression> </activiti:field> <activiti:field name="vocabularyId"> <activiti:expression>${givenVocabularyId}</activiti:expression> </activiti:field> <activiti:field name="typeId"> <activiti:expression>${givenTypeId}</activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Add asset" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.asset.AddAssetRequest; import com.collibra.dgc.core.api.model.instance.Asset; Asset asset = assetApi.addAsset(AddAssetRequest.builder() .name(givenSignifier) .displayName(givenSignifier) .typeId(string2Uuid(givenTypeId)) .domainId(string2Uuid(givenVocabularyId)) .build()) execution.setVariable("output", asset) ]]></script> </scriptTask> |
GetTermDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Get term" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.term.GetTermDelegate"> <extensionElements> <activiti:field name="termId"> <activiti:expression><![CDATA[${giventTermId}]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Get asset" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.model.instance.Asset; Asset asset = assetApi.getAsset(givenAssetId); execution.setVariable("output", asset) ]]></script> </scriptTask> |
RemoveTermDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Remove term" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.term.RemoveTermDelegate"> <extensionElements> <activiti:field name="termId"> <activiti:expression><![CDATA[${givenTermId}]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Remove asset" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ assetApi.removeAsset(givenAssetId); ]]></script> </scriptTask> |
AddComment
API v1 |
---|
<serviceTask id="servicetask1" name="Add comment" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.AddComment"> <extensionElements> <activiti:field name="comment"> <activiti:string>The content of the comment.</activiti:string> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Store comment" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.comment.AddCommentRequest commentApi.addComment(AddCommentRequest.builder() .content("The content of the comment.") .baseResourceId(item.getId()) .baseResourceType(item.getType()) .build()) ]]></script> </scriptTask> |
AddDecisionVote
API v1 |
---|
<serviceTask id="servicetask1" name="Add vote outcome to list" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.AddDecisionVote"></serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Add vote outcome to list" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ def voter = execution.getVariable("voter"); Boolean approved = (Boolean) execution.getVariable("approve"); comment = execution.getVariable("comment"); vote = [ "name" : voter, "approved": approved, "comment": comment?.toString() ] voting = execution.getVariable("votingResult"); voting.add(vote); checkEarlyComplete(execution, voting); execution.setVariable("votingResult", voting); def checkEarlyComplete(execution, voting) { Boolean earlyComplete = (Boolean) execution.getVariable("earlyComplete"); if (earlyComplete) { Long percentage = (Long) execution.getVariable("votePercentage"); List<String> voters = (List<String>) execution.getVariable("voters"); double approved = 0; double disapproved = 0; double totalVoters = voters.size(); for (Map vote : voting) { if (vote.approved) { approved++; } else { disapproved++; } } if (approved / totalVoters >= percentage / 100.0) { execution.setVariable("completion", Boolean.TRUE); } else if (disapproved / totalVoters > (100 - percentage) / 100.0) { execution.setVariable("completion", Boolean.TRUE); } } } ]]></script> </scriptTask> |
ChangeIssueResponsibleCommunity
API v1 |
---|
<serviceTask id="servicetask1" name="Move the Issue" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.ChangeIssueResponsibleCommunity"> <extensionElements> <activiti:field name="responsibleCommunity"> <activiti:expression>${responsibleCommunity}</activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Move the Issue" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script> import com.collibra.dgc.core.api.dto.instance.issue.MoveIssueRequest issueApi.moveIssue(MoveIssueRequest.builder() .issueId(item.id) .communityId(responsibleCommunity) .build()) </script> </scriptTask> |
ChangeStatusDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Mark as Accepted" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.ChangeStatusDelegate" <extensionElements> <activiti:field name="targetStatusId"> <activiti:string><![CDATA[00000000-0000-0000-0000-000000005009]]></activiti:string> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Mark as Accepted" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.asset.ChangeAssetRequest String acceptedStatusId = "00000000-0000-0000-0000-000000005009" assetApi.changeAsset(ChangeAssetRequest.builder() .id(item.id) .statusId(string2Uuid(acceptedStatusId)) .build()) ]]></script> </scriptTask> |
StateChanger
API v1 |
---|
<serviceTask id="servicetask1" name="Mark as Accepted" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.StateChanger" <extensionElements> <activiti:field name="targetStatusId"> <activiti:string><![CDATA[00000000-0000-0000-0000-000000005009]]></activiti:string> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Mark as Accepted" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.asset.ChangeAssetRequest String acceptedStatusId = "00000000-0000-0000-0000-000000005009" assetApi.changeAsset(ChangeAssetRequest.builder() .id(item.id) .statusId(string2Uuid(acceptedStatusId)) .build()) ]]></script> </scriptTask> |
CountVoteResult
API v1 |
---|
<serviceTask id="servicetask1" name="Count voting result" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.CountVoteResult"></serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Count voting result" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ def voting = execution.getVariable("votingResult") boolean result = getResult(voting, execution) execution.setVariable("votingSuccess", result) def getResult(voting, execution) { Long percentage = (Long) execution.getVariable("votePercentage"); if (!voting.isEmpty()) { int requiredToVote = ((List<String>) execution.getVariable("voters")).size(); int approved = getNumberOfApprovals(voting); double fraction = percentage / 100.0; return approved >= requiredToVote * fraction; } return false; } def getNumberOfApprovals(List<Map> voting) { int approved = 0; for (Map vote : voting) { if (vote.approved) { approved++; } } return approved; } ]]></script> </scriptTask> |
CreateIssue
API v1 |
---|
<serviceTask id="servicetask1" name="Create issue" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.CreateIssue"> <extensionElements> <activiti:field name="subject"> <activiti:expression>${subject}</activiti:expression> </activiti:field> <activiti:field name="description"> <activiti:expression>${description}</activiti:expression> </activiti:field> <activiti:field name="priority"> <activiti:expression>${priority}</activiti:expression> </activiti:field> <activiti:field name="relations"> <activiti:expression>${relations}</activiti:expression> </activiti:field> <activiti:field name="classifications"> <activiti:expression>${classifications}</activiti:expression> </activiti:field> <activiti:field name="requester"> <activiti:expression>${requester}</activiti:expression> </activiti:field> <activiti:field name="responsibleCommunity"> <activiti:expression>${responsibleCommunity}</activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Create issue" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.issue.RelatedAssetReference; import com.collibra.dgc.core.api.dto.instance.issue.AddIssueRequest; import com.collibra.dgc.core.api.dto.user.FindUsersRequest; def requesterId = userApi.getUserByUsername(requester).getId() def descriptionString = execution.getVariable("description")?.toString() ?: "" def communityId = responsibleCommunity def relatedAssets = execution.getVariable("relatedAssets") ?: [] def relatedAssetsList = [] relatedAssets.each{ relatedAssetId -> def relatedAssetRef = RelatedAssetReference.builder() .assetId(relatedAssetId) .direction(true) .relationTypeId(string2Uuid(impactsRelationId)) .build() relatedAssetsList.add(relatedAssetRef) } def newIssueUuid = issueApi.addIssue(AddIssueRequest.builder() .name(subject) .description(descriptionString) .priority(priority) .responsibleCommunityId(communityId) .relatedAssets(relatedAssetsList) .categoryIds(classifications) .typeId(string2Uuid(dataIssueId)) .requesterId(requesterId) .build()) .getId() execution.setVariable("outputCreatedTermId", newIssueUuid)) ]]></script> </scriptTask> |
CreateVotersList
API v1 |
---|
<serviceTask id="servicetask1" name="Create list of voters" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.CreateVotersList"> <extensionElements> <activiti:field name="voterUserExpression"> <activiti:expression><![CDATA[${voterUserExpression}]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Create list of voters" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ def voterUserExpression = execution.getVariable("voterUserExpression") final Set<String> voters = new HashSet<>(); for (String userExpression : utility.toList(voterUserExpression)) { voters.addAll(users.getUserNamesWithError(userExpression)); } execution.setVariable("voters", new ArrayList<>(voters)); execution.setVariable("votingResult", []); execution.setVariable("completion", Boolean.FALSE); ]]></script> </scriptTask> |
GetModel
API v1 |
---|
<serviceTask id="servicetask1" name="Get Model" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.GetModel"> <extensionElements> <activiti:field name="viewConfig"> <activiti:expression>${viewConfig}</activiti:expression> </activiti:field> <activiti:field name="varNames"> <activiti:string>VOC_ID</activiti:string> </activiti:field> <activiti:field name="varValues"> <activiti:expression>${item.id}</activiti:expression> </activiti:field> <activiti:field name="resultVariable"> <activiti:string>assets</activiti:string> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
This delegate is not supported and there is no alternative or possibility to use it. |
GetRelatedTerms
API v1 |
---|
<serviceTask id="servicetask1" name="Get related terms" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.GetRelatedTerms"> <extensionElements> <activiti:field name="relationRole"> <activiti:expression>"role(Business Steward)"</activiti:expression> </activiti:field> <activiti:field name="resultVariable"> <activiti:string>relations</activiti:string> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Get related terms" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.model.meta.type.RelationType; import com.collibra.dgc.core.api.dto.meta.relationtype.FindRelationTypesRequest; import com.collibra.dgc.core.api.model.instance.Relation; import com.collibra.dgc.core.api.dto.instance.relation.FindRelationsRequest; import com.collibra.dgc.core.api.model.reference.NamedResourceReference; import com.collibra.dgc.workflow.api.exception.WorkflowException; List<RelationType> relationTypes = relationTypeApi.findRelationTypes(FindRelationTypesRequest.builder() .role("groups") .build()) .getResults() if (relationTypes.isEmpty()) { throw new WorkflowException("No relation types for provided role 'groups'"); } List<UUID> relatedAssetIds = new ArrayList<>(); for (RelationType relationType : relationTypes) { List<Relation> relations = relationApi.findRelations(FindRelationsRequest.builder() .sourceId(item.id) .relationTypeId(relationType.getId()) .build()) .getResults(); for (Relation relation : relations) { relatedAssetIds.add(relation.getTarget().getId()); } } execution.setVariable("relations", relatedAssetIds); ]]></script> </scriptTask> |
GetRelatedTermsDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Get related terms" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.GetRelatedTermsDelegate"> <extensionElements> <activiti:field name="termId"> <activiti:expression><![CDATA[${item.id}]]></activiti:expression> </activiti:field> <activiti:field name="direction"> <activiti:string>true</activiti:string> </activiti:field> <activiti:field name="relationTypeId"> <activiti:string>"00000000-0000-0000-0000-000000007021"</activiti:string> </activiti:field> <activiti:field name="resultVariableName"> <activiti:string>"relatedAssets"</activiti:string> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Get related terms" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.model.instance.Asset; import com.collibra.dgc.core.api.model.instance.Relation; import com.collibra.dgc.core.api.dto.instance.relation.FindRelationsRequest; assetId = item.id; direction = Boolean.TRUE; groupsRelationTypeId = string2Uuid("00000000-0000-0000-0000-000000007021"); List<Asset> relatedAssets = new ArrayList<>(); if (direction) { List<Relation> relations = relationApi.findRelations(FindRelationsRequest.builder() .sourceId(assetId) .relationTypeId(groupsRelationTypeId) .build()) .getResults(); for (Relation relation : relations) { relatedAssets.add(relation.getSource()); } } else { List<Relation> relations = relationApi.findRelations(FindRelationsRequest.builder() .targetId(assetId) .relationTypeId(groupsRelationTypeId) .build()) .getResults(); for (Relation relation : relations) { relatedAssets.add(relation.getTarget()); } } execution.setVariable("relatedAssets", relatedAssets); ]]></script> </scriptTask> |
GetUserNames
API v1 |
---|
<serviceTask id="servicetask1" name="Get user names" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.GetUserNames"> <extensionElements> <activiti:field name="userNames"> <activiti:expression><![CDATA[${userName}]]></activiti:expression> </activiti:field> <activiti:field name="userExpressions"> <activiti:expression><![CDATA[${role}]]></activiti:expression> </activiti:field> <activiti:field name="groupNames"> <activiti:expression><![CDATA[${group}]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Get user names" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.model.user.User; import com.collibra.dgc.core.api.model.usergroup.UserGroup; import com.collibra.dgc.core.api.dto.usergroup.FindUserGroupsRequest; Set<String> userNameResult = new HashSet<String>(); userNameResult.addAll(utility.toList("${userName}")); userNameResult.addAll(users.getUserNames("${role}")); List<UserGroup> userGroupList = userGroupApi.findUserGroups(FindUserGroupsRequest.builder() .name("${group}") .nameMatchMode(MatchMode.EXACT) .build()) .getResults() for (UserGroup userGroup : userGroupList) { List<User> userList = userApi.findUsers(FindUsersRequest.builder() .groupId(userGroup.getId()) .build()) .getResults() for (User user : userList) { userNameResult.add(user.getUserName()); } } execution.setVariable("assembledUserNames", userNameResult); ]]></script> </scriptTask> |
MailSender
API v1 |
---|
com.collibra.dgc.core.workflow.activiti.delegate.MailSender |
API v2 |
---|
com.collibra.dgc.workflow.api.listener.ActionMailSender |
ProvideDefaultsDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Check optional variables" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.ProvideDefaultsDelegate"> <extensionElements> <activiti:field name="names"> <activiti:string><![CDATA[resultTemplate,reminderTemplate]]></activiti:string> </activiti:field> <activiti:field name="defaults"> <activiti:string><![CDATA[result,reminder]]></activiti:string> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Check Optional Variables" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.workflow.api.exception.WorkflowException List<String> namesList = utility.toList(execution.getVariable("names")) List<String> defaultsList = utility.toList(execution.getVariable("defaults")) if(namesList.size() != defaultsList.size()) { loggerApi.error("names list contains " + namesList.size() + " elements while the default values list contains " + defaultsList.size() + " elements. Those sizes should be equal.") String errorMessage = translation.getMessage("workflowNamesAndDefaultsSizeDontMatch",namesList.size(),defaultsList.size()) String errorTitle = translation.getMessage("workflowValueNotAllowed"); WorkflowException workflowException = new WorkflowException(errorMessage); ex.setTitleMessage(errorTitle); throw workflowException; } for (int i = 0; i < namesList.size(); i++) { String currentName = namesList.get(i).trim(); String currentDefault = defaultsList.get(i); if (!execution.hasVariable(currentName)) { execution.setVariable(currentName, currentDefault); } } ]]></script> </scriptTask> |
StartCollibraConnectFlowDelegate
API v1 |
---|
com.collibra.dgc.core.workflow.activiti.delegate.StartCollibraConnectFlowDelegate |
API v2 |
---|
com.collibra.dgc.workflow.api.delegate.StartCollibraConnectFlowDelegate |
StartWorkflowInstanceDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Start workflow" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.StartWorkflowInstanceDelegate"> <extensionElements> <activiti:field name="processId"> <activiti:string><![CDATA[subWorkflow]]></activiti:string> </activiti:field> <activiti:field name="resourceId"> <activiti:expression><![CDATA[${targetTermId}]]></activiti:expression> </activiti:field> <activiti:field name="resourceType"> <activiti:string><![CDATA[TE]]></activiti:string> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Start workflow" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.workflow.StartWorkflowInstancesRequest; import com.collibra.dgc.core.api.model.workflow.WorkflowBusinessItemType; def workflowDefinitionId = workflowDefinitionApi.getWorkflowDefinitionByProcessId(subWorkflow).getId(); workflowInstanceApi.startWorkflowInstances(StartWorkflowInstancesRequest.builder() .workflowDefinitionId(workflowDefinitionId) .addBusinessItemId(string2Uuid(${targetTermId})) .businessItemType(WorkflowBusinessItemType.valueOf("ASSET")) .build()) ]]></script> </scriptTask> |
TermIntakeDelegate
API v1 |
---|
<serviceTask id="servicetask1" name="Create Term" activiti:class="com.collibra.dgc.core.workflow.activiti.delegate.TermIntakeDelegate"> <extensionElements> <activiti:field name="signifier"> <activiti:expression>${signifier}</activiti:expression> </activiti:field> <activiti:field name="conceptType"> <activiti:expression>${conceptType}</activiti:expression> </activiti:field> <activiti:field name="vocabulary"> <activiti:expression>${intakeVocabulary}</activiti:expression> </activiti:field> <activiti:field name="definition"> <activiti:expression>${definition}</activiti:expression> </activiti:field> <activiti:field name="description"> <activiti:expression>${description}</activiti:expression> </activiti:field> <activiti:field name="example"> <activiti:expression>${example}</activiti:expression> </activiti:field> <activiti:field name="usesrelation"> <activiti:expression>${usesrelation}</activiti:expression> </activiti:field> <activiti:field name="note"> <activiti:expression>${note}</activiti:expression> </activiti:field> </extensionElements> </serviceTask> |
API v2 |
---|
<scriptTask id="scripttask1" name="Create Asset" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.asset.AddAssetRequest; import com.collibra.dgc.core.api.dto.instance.attribute.AddAttributeRequest; import com.collibra.dgc.core.api.dto.instance.relation.AddRelationRequest; def note = execution.getVariable("note") def definition = execution.getVariable("definition") def newAssetUuid = assetApi.addAsset(AddAssetRequest.builder() .name(signifier) .displayName(signifier) .typeId(conceptType) .domainId(string2Uuid(intakeVocabulary)) .build()) .getId() addAttributeToAsset(newAssetUuid,definition,definitionAttributeTypeUuid) addAttributeToAsset(newAssetUuid,note,noteAttributeTypeUuid) addRelationsWithOneSourceAndMultipleTargetsToAsset(newAssetUuid,usesRelationTypeUuid,usesrelation) execution.setVariable("outputCreatedTermId",uuid2String(newAssetUuid)) def addAttributeToAsset(assetUuid,attributeValue,attributeTypeUuid) { if (attributeValue == null){ return; } attributeApi.addAttribute(AddAttributeRequest.builder() .assetId(assetUuid) .typeId(string2Uuid(attributeTypeUuid)) .value(attributeValue.toString()) .build()) } def addRelationsWithOneSourceAndMultipleTargetsToAsset(sourceUuid,relationTypeUuid,targetUuidList) { def addRelationsRequests = [] loggerApi.info("Source: " + sourceUuid.toString()) loggerApi.info("Type: " + relationTypeUuid.toString()) loggerApi.info("Target: " + targetUuidList.toString()) loggerApi.info("Target Class" + targetUuidList.getClass().toString()) targetUuidList.each{ t -> loggerApi.info("T Class" + t.getClass().toString()) addRelationsRequests.add(AddRelationRequest.builder() .sourceId(sourceUuid) .targetId(t) .typeId(string2Uuid(relationTypeUuid)) .build()) } relationApi.addRelations(addRelationsRequests) } ]]></script> </scriptTask> |
GetRelations and RemoveRelations delegates
The GetRelations and RemoveRelations delegate respectively gets and removes relations that can be identified by ID or source, term and type. Affected relations are returned with output variable.
Field name | Mandatory | Description |
---|---|---|
relationId | N | Id of the relation. |
sourceTermId | N | Id of the source term of the relation. |
targetTermId | Id of the target term of the relation. | |
binaryFactTypeId | Id of the BinaryFactType, this is the ID of the relation type. | |
resourceVariableName | N | The name of the variable that the result will be set in, if not given the result will be set in the variable named "output" |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
- Get relations:
<scriptTask id="scripttask1" name="Remove relation" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.relation.FindRelationsRequest; def relations = relationApi.findRelations(FindRelationsRequest.builder() .sourceId(item.id) .build()) .getResults(); execution.setVariable("output", relations) ]]></script> </scriptTask>
- Remove relations:
<scriptTask id="scripttask1" name="Remove relation" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.relation.FindRelationsRequest; def relations = relationApi.findRelations(FindRelationsRequest.builder() .sourceId(item.id) .build()) .getResults(); relationApi.removeRelations(new ArrayList(relations.collect{ it.getId() })); ]]></script> </scriptTask>
AddRelation delegate
The AddRelation delegate adds relation of given type between source and term. Added relation is returned with output variable.
Field name | Mandatory | Description |
---|---|---|
sourceTermId | Y | Id of the source term of the relation. |
targetTermId | Y | Id of the target term of the relation. |
binaryFactTypeId | Y | Id of the BinaryFactType, this is the ID of the relation type. |
resultVariableName | N | The name of the variable that the result will be set in, if not given the result will be set in the variable named "output". |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
<scriptTask id="scripttask1" name="Add relation" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.relation.AddRelationRequest; def relation = relationApi.addRelation(AddRelationRequest.builder() .typeId(string2Uuid(givenRelationTypeId)) .sourceId(item.id) .targetId(givenTargetResourceId) .build()); execution.setVariable("output", relation) ]]></script> </scriptTask>
AddResourceRole and RemoveResourceRole delegates
The AddResourceRole and RemoveResourceRole delegate respectively adds and removes the user as the member with the role to the resource. Matched/removed member is returned with output variable.
Field name | Mandatory | Description |
---|---|---|
resourceId | Y | Id of the resource for the member. |
roleId | Y | Identify the member role - either id or name must be set, setting both will cause id to be used. |
roleName | ||
userId | Y | Identify the member user - either id or name must be set, setting both will cause id to be used. |
userName | ||
resultVariableName | N | The name of the variable that the result will be set in, if not given the result will be set in the variable named "output". |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
- Add resource role:
<scriptTask id="scripttask1" name="Assign owner" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.responsibility.AddResponsibilityRequest def userName = execution.getVariable("startUser") def ownerUserId = userApi.getUserByUsername(userName).getId(); responsibilityApi.addResponsibility(AddResponsibilityRequest.builder() .resourceId(item.id) .resourceType(item.type) .roleId(string2Uuid(roleId)) .ownerId(ownerUserId) .build()) ]]></script> </scriptTask>
- Remove resource role:
<scriptTask id="scripttask1" name="Remove current Owner role" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.responsibility.FindResponsibilitiesRequest def ownerUserId = userApi.getUserByUsername(ownerName).getId(); def ownerRoleId = users.getRoleId("Owner"); def responsibilities = responsibilityApi.findResponsibilities(FindResponsibilitiesRequest.builder() .resourceIds(Collections.singletonList(domain.id)) .ownerIds(Collections.singletonList(ownerUserId)) .roleIds(Collections.singletonList(ownerRoleId)) .build()) .getResults() responsibilityApi.removeResponsibilities(new ArrayList(responsibilities.collect{ it.getId() })); ]]></script> </scriptTask>
GetTerm and RemoveTerm delegate
The GetTerm and RemoveTerm delegate respectively gets and removes the term that can be uniquely identified by either its ID or vocabularyId and signifier. If the term ID is given, the rest of the parameters is not taken into account. Matched/removed term is returned with the output variable.
Field name | Mandatory | Description |
---|---|---|
termId | N | Id of the term. |
vocabularyId | N | Id of the vocabulary that the term is in. |
signifier | N | Signifier of the term. |
resultVariableName | N | The name of the variable that the result will be set in, if not given the result will be set in the variable named "output". |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
- Get term:
<scriptTask id="scripttask1" name="Get asset" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.model.instance.Asset; Asset asset = assetApi.getAsset(givenAssetId); execution.setVariable("output", asset) ]]></script> </scriptTask>
- Remove term:
<scriptTask id="scripttask1" name="Remove asset" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ assetApi.removeAsset(givenAssetId); ]]></script> </scriptTask>
AddTerm delegate
The AddTerm delegate adds the term and returns it with the output variable.
Field name | Mandatory | Description |
---|---|---|
signifier | Y | Signifier of the term. |
vocabularyId | Y | Id of the vocabulary that the term will be added in. |
typeId | Y | Identify type term for the term - either id or signifier must be set, setting both will cause typeId to be used. |
typeSignifier | ||
resultVariableName | N | The name of the variable that the result will be set in, if not given the result will be set in the variable named "output". |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
<scriptTask id="scripttask1" name="Add asset" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.asset.AddAssetRequest; import com.collibra.dgc.core.api.model.instance.Asset; Asset asset = assetApi.addAsset(AddAssetRequest.builder() .name(givenSignifier) .displayName(givenSignifier) .typeId(string2Uuid(givenTypeId)) .domainId(string2Uuid(givenVocabularyId)) .build()) execution.setVariable("output", asset) ]]></script> </scriptTask>
GetAttribute and RemoveAttribute delegates
The GetAttribute and RemoveAttribute delegate respectively gets or removes attributes identified by the input parameters. Matching can be done by attributeId or by owner and type. If attributeId given the rest of the parameters are not taken into account. Matched/removed attributes are returned as a list with the output variable.
Field name | Mandatory | Description |
---|---|---|
attributeId | N | ID of the attribute. |
ownerId | N | Id of the term that the attribute belongs to. |
typeId | N | Identify type term of the attribute - either id or signifier must be set, setting both will cause typeId to be used. |
typeSignifier | ||
resultVariableName | N | The name of the variable that the result will be set in, if not given the result will be set in the variable named "output" |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
- Get attribute:
<scriptTask id="scripttask1" name="Get attribute" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ def attribute = attributeApi.getAttribute(string2Uuid(givenAttributeId)); execution.setVariable("output", attribute) ]]></script> </scriptTask>
- Remove attribute:
<scriptTask id="scripttask1" name="Remove attribute" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ attributeApi.removeAttribute(string2Uuid(givenAttributeId)); ]]></script> </scriptTask>
AddAttribute delegate
The AddAttribute delegate adds an attribute and returns the added one with the output variable.
Field name | Mandatory | Description |
---|---|---|
value | Y | String representation of the value of an attribute, in case it's multi list separate values with the sign specified in multilistSeparator parameter. In case of boolean attribute use "true" or "false". |
ownerId | Y | ID of the term that the attribute will be added for. |
typeId | Y | Identify type term for the attribute - either id or signifier must be set, setting both will cause typeId to be used. |
typeSignifier | ||
multilistSeparator | N | The separator for multilist attribute value. By default comma will be used, if you want to customize it specify your own. |
resultVariableName | N | The name of the variable that the result will be set in, if not given the result will be set in the variable named "output" |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
<scriptTask id="scripttask1" name="Add attribute" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.attribute.AddAttributeRequest; def attribute = attributeApi.addAttribute(AddAttributeRequest.builder() .assetId(item.id) .typeId(string2Uuid(givenAttributeTypeId))) .value("attribute content") .build()) execution.setVariable("output", attribute) ]]></script> </scriptTask>
TermIntake delegate
The TermIntake delegate takes in new terms in our application. The ID of the created term will put in a workflow variable under the name outputCreatedTermId.
Field name | Mandatory | Description |
---|---|---|
signifier | Y | The signifier of the term to create. |
conceptType | Y | The ID of the concept type. |
vocabulary | Y | The ID of the vocabulary. |
definition | N | The contents of the definition attribute to be created. |
description | N | The contents of the description attribute to be created. |
note | N | The contents of the note attribute to be created. |
example | N | The contents of the example attribute to be created. |
usesrelation | N | The ID of the target term that will be related using the 'uses' relation. |
resultVariableName | N | The name of the variable that the result will be set in, if not given the result will be set in the variable named "output". |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
<scriptTask id="scripttask1" name="Create Asset" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.asset.AddAssetRequest; import com.collibra.dgc.core.api.dto.instance.attribute.AddAttributeRequest; import com.collibra.dgc.core.api.dto.instance.relation.AddRelationRequest; def note = execution.getVariable("note") def definition = execution.getVariable("definition") def newAssetUuid = assetApi.addAsset(AddAssetRequest.builder() .name(signifier) .displayName(signifier) .typeId(conceptType) .domainId(string2Uuid(intakeVocabulary)) .build()) .getId() addAttributeToAsset(newAssetUuid,definition,definitionAttributeTypeUuid) addAttributeToAsset(newAssetUuid,note,noteAttributeTypeUuid) addRelationsWithOneSourceAndMultipleTargetsToAsset(newAssetUuid,usesRelationTypeUuid,usesrelation) execution.setVariable("outputCreatedTermId",uuid2String(newAssetUuid)) def addAttributeToAsset(assetUuid,attributeValue,attributeTypeUuid) { if (attributeValue == null){ return; } attributeApi.addAttribute(AddAttributeRequest.builder() .assetId(assetUuid) .typeId(string2Uuid(attributeTypeUuid)) .value(attributeValue.toString()) .build()) } def addRelationsWithOneSourceAndMultipleTargetsToAsset(sourceUuid,relationTypeUuid,targetUuidList) { def addRelationsRequests = [] loggerApi.info("Source: " + sourceUuid.toString()) loggerApi.info("Type: " + relationTypeUuid.toString()) loggerApi.info("Target: " + targetUuidList.toString()) loggerApi.info("Target Class" + targetUuidList.getClass().toString()) targetUuidList.each{ t -> loggerApi.info("T Class" + t.getClass().toString()) addRelationsRequests.add(AddRelationRequest.builder() .sourceId(sourceUuid) .targetId(t) .typeId(string2Uuid(relationTypeUuid)) .build()) } relationApi.addRelations(addRelationsRequests) } ]]></script> </scriptTask>
ChangeStatus delegate
The ChangeStatus delegate changes the state of current business item in the process to a specified target state. The current business item is expected to be a representation.
Field name | Mandatory | Description |
---|---|---|
parentId | N | If you want to override the default behavior that the status of the current business item is changed, you can fill in the ID of an existing term to change its status instead. |
targetStatusId | Y | Identify the target status -either id or signifier must be set, setting both will cause ID to be used. |
targetStatusSignifier | ||
resultVariableName | N | The name of the variable that the result will be set in, if not given the result will be set in the variable named "output". |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
<scriptTask id="scripttask1" name="Mark as Accepted" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.asset.ChangeAssetRequest String acceptedStatusId = "00000000-0000-0000-0000-000000005009" assetApi.changeAsset(ChangeAssetRequest.builder() .id(item.id) .statusId(string2Uuid(acceptedStatusId)) .build()) ]]></script> </scriptTask>
StartWorkflowInstance delegate
The StartWorkflowInstance delegate starts a new workflow instance for the given workflow processId. It is possible to specify the business item of the workflow that is to be started. All checks and authorizations will follow the same rules and logic as if the workflow was started form the REST or Component API layers.
Field name | Mandatory | Description |
---|---|---|
processId | Y | The process ID of the workflow you want to start. This is the ID in the workflow xml definition, for example approvalProcess. |
resourceId | Y/N | The resource ID of the workflow business item, if not provided, a 'global' workflow is started. |
resourceType | Y/N |
The resource type of the workflow business item in string format, for example TE for a Term. Mandatory if resourceId is filled in. |
propertyKeyList | N | The key values for the workflow form properties as a comma separated list. |
propertyValueList | Y/N |
The values for the workflow form properties as a comma separated list. Mandatory if propertyKeyList is filled in. |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
<scriptTask id="scripttask1" name="Start workflow" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.workflow.StartWorkflowInstancesRequest; import com.collibra.dgc.core.api.model.workflow.WorkflowBusinessItemType; def workflowDefinitionId = workflowDefinitionApi.getWorkflowDefinitionByProcessId(subWorkflow).getId(); workflowInstanceApi.startWorkflowInstances(StartWorkflowInstancesRequest.builder() .workflowDefinitionId(workflowDefinitionId) .addBusinessItemId(string2Uuid(${targetTermId})) .businessItemType(WorkflowBusinessItemType.valueOf("ASSET")) .build()) ]]></script> </scriptTask>
MailSender delegate
A delegate used for sending mails from the workflow.
Field name | Mandatory | Description |
---|---|---|
mailTo | One of the recipient fields is mandatory | User expression for the users that should receive the mail. |
mailToRoles | One of the recipient fields is mandatory | A comma separated list of roles that should receive the mail. |
mailToUsers | One of the recipient fields is mandatory | A comma separated list of user names that should receive the mail. |
template | No | The name of the template that should be used to generate the email. |
section | No | The name of the section that should be used to generate the mail. The default is the process ID of the current workflow. |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
<scriptTask id="scripttask1" name="Notify Requester" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ def usersIds = users.getUserIds("role(Requester)"); if (usersIds.isEmpty()){ loggerApi.warn("No users to send a mail to, no mail will be sent"); } else { mail.sendMails(usersIds, "in-progress", null, execution); } ]]></script> </scriptTask>
GetUserNames delegate
The GetUserNames delegate gathers all userNames from the given input fields. All input fields are optional. The delegate will evaluate any input and compose a CSV of all resulting usernames.
Field name | Mandatory | Description |
---|---|---|
userNames | N | A CSV of user names that you want to have included in the result. |
groupNames | N | A CSV of group names that you want to have evaluated and included in the result. |
roleNames | N | A CSV of role names that you want to have evaluated on the current business item and included in the result. |
userExpressions | N | A CSV of user expressions that you want to have evaluated and included in the result. |
resultVariable | N | The variable name to store the CSV of user names in. By default 'assembledUserNames' if not provided. |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
<scriptTask id="scripttask1" name="Get user names" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.model.user.User; import com.collibra.dgc.core.api.model.usergroup.UserGroup; import com.collibra.dgc.core.api.dto.usergroup.FindUserGroupsRequest; Set<String> userNameResult = new HashSet<String>(); userNameResult.addAll(utility.toList("${userName}")); userNameResult.addAll(users.getUserNames("${role}")); List<UserGroup> userGroupList = userGroupApi.findUserGroups(FindUserGroupsRequest.builder() .name("${group}") .nameMatchMode(MatchMode.EXACT) .build()) .getResults() for (UserGroup userGroup : userGroupList) { List<User> userList = userApi.findUsers(FindUsersRequest.builder() .groupId(userGroup.getId()) .build()) .getResults() for (User user : userList) { userNameResult.add(user.getUserName()); } } execution.setVariable("assembledUserNames", userNameResult); ]]></script> </scriptTask>
GetRelatedTerms delegate
The GetRelatedTerms delegate retrieves all target term IDs related to the current business term as source with a relation type that matches the given (co-)role. It is assumed that the business item is an asset, don't use the delegate with other business item types.
Field name | Mandatory | Description |
---|---|---|
termId | N | ID of the term that is involved in the relation. If not provided, the current business item will be used. Ensure it is an asset. Don't use the delegate with other business item types. |
direction | N | Direction of the relation in respect to the term, set true for source and false for target. False by default - if not set. |
relationTypeId | Y | ID of the relation type. |
resultVariableName | N | The name of the variable that the result will be set in. If not provided, the result will be set in the variable named output. |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
<scriptTask id="scripttask1" name="Get related terms" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.model.meta.type.RelationType; import com.collibra.dgc.core.api.dto.meta.relationtype.FindRelationTypesRequest; import com.collibra.dgc.core.api.model.instance.Relation; import com.collibra.dgc.core.api.dto.instance.relation.FindRelationsRequest; import com.collibra.dgc.core.api.model.reference.NamedResourceReference; import com.collibra.dgc.workflow.api.exception.WorkflowException; List<RelationType> relationTypes = relationTypeApi.findRelationTypes(FindRelationTypesRequest.builder() .role("groups") .build()) .getResults() if (relationTypes.isEmpty()) { throw new WorkflowException("No relation types for provided role 'groups'"); } List<UUID> relatedAssetIds = new ArrayList<>(); for (RelationType relationType : relationTypes) { List<Relation> relations = relationApi.findRelations(FindRelationsRequest.builder() .sourceId(item.id) .relationTypeId(relationType.getId()) .build()) .getResults(); for (Relation relation : relations) { relatedAssetIds.add(relation.getTarget().getId()); } } execution.setVariable("relations", relatedAssetIds); ]]></script> </scriptTask>
CreateIssue delegate
The CreateIssue delegate creates a new data issue.
Field name | Mandatory | Description |
---|---|---|
requester | Y | The username of the requester creating the issue. |
subject | Y | The signifier of the issue to create. |
description | N | The description of the issue. |
priority | N | The priority of the issue ('Blocking', 'Critical', 'Urgent', 'Normal', 'Minor') |
relations | N | A CSV of related asset IDs to this issue. |
classifications | N | A CSV of issue classifications. |
responsibleCommunity | N | The responsible community for this issue, by default 'Data Governance Council' community. |
resultVariableName | N | The name of the variable that the result will be set in, if not given the result will be set in the variable named "output" |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
<scriptTask id="scripttask1" name="Create issue" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.issue.RelatedAssetReference; import com.collibra.dgc.core.api.dto.instance.issue.AddIssueRequest; import com.collibra.dgc.core.api.dto.user.FindUsersRequest; def requesterId = userApi.getUserByUsername(requester).getId() def descriptionString = execution.getVariable("description")?.toString() ?: "" def communityId = responsibleCommunity def relatedAssets = execution.getVariable("relatedAssets") ?: [] def relatedAssetsList = [] relatedAssets.each{ relatedAssetId -> def relatedAssetRef = RelatedAssetReference.builder() .assetId(relatedAssetId) .direction(true) .relationTypeId(string2Uuid(impactsRelationId)) .build() relatedAssetsList.add(relatedAssetRef) } def newIssueUuid = issueApi.addIssue(AddIssueRequest.builder() .name(subject) .description(descriptionString) .priority(priority) .responsibleCommunityId(communityId) .relatedAssets(relatedAssetsList) .categoryIds(classifications) .typeId(string2Uuid(dataIssueId)) .requesterId(requesterId) .build()) .getId() execution.setVariable("outputCreatedTermId", newIssueUuid)) ]]></script> </scriptTask>
ChangeIssueResponsibleCommunity delegate
The ChangeIssueResponsibleCommunity delegate moves an issue to another responsible community.
Field name | Mandatory | Description |
---|---|---|
responsibleCommunity | N | The ID of the responsible community you want this issue to be moved to. Leave this empty if you want the issue to be moved to the standard issues vocabulary under the admin community. |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
<scriptTask id="scripttask1" name="Move the Issue" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script> import com.collibra.dgc.core.api.dto.instance.issue.MoveIssueRequest issueApi.moveIssue(MoveIssueRequest.builder() .issueId(item.id) .communityId(responsibleCommunity) .build()) </script> </scriptTask>
AddComment delegate
The AddComment delegate adds comments to the current workflow business item. It is also capable of adding comment for guest users (= users that started the workflow as guest).
Field name | Mandatory | Description |
---|---|---|
comment | Y | A string representation of the actual comment that needs to be added. The comment will be added to the current business item using the current user. |
guestUserExpression | N | The expression evaluating to the guest user that is adding this comment. This overrides the default behavior so that this comment is not added by the current user, but by the specified guest user instead. The user expression should resolve to only one user, otherwise an exception will be thrown. |
parent | N | If you want to add a reply to an already existing parent comment, fill in the id of the parent comment here. This does not have to be a comment of the current workflow business item. |
resultVariableName | N | The name of the variable that the result will be set in, if not given the result will be set in the variable named "output". |
The delegate is deprecated. Replace your service task containing this delegate with a script task, for example:
<scriptTask id="scripttask1" name="Store comment" scriptFormat="groovy" activiti:autoStoreVariables="false"> <script><![CDATA[ import com.collibra.dgc.core.api.dto.instance.comment.AddCommentRequest commentApi.addComment(AddCommentRequest.builder() .content("The content of the comment.") .baseResourceId(item.getId()) .baseResourceType(item.getType()) .build()) ]]></script> </scriptTask>
Script task
A task that is executed by a business process engine to mainly perform simple calculations or operations. When the task is ready to start, the engine executes the script, and marks it as completed when the script has finished.
To configure script tasks, you must provide a script in Groovy language.
Because each script task is independent, include import
statements for all the packages you are using in a script for each script task. Avoid using generic imports to reduce execution time.
- The cached method might not be available anymore.
- Even if the method is available, it retains the cached values of variables, which might lead to unexpected results.
Use the groovy-lib folder to store scripts that are common to a large number of tasks.
In the context of workflow script tasks, the <Resource>Api interfaces (such as AssetApi, CommunityTypeApi, FileApi, and so on) are already instantiated and accessible via <resource>Api variables (such as assetApi, communityTypeApi, fileApi, and so on).
Attributes: General
Attribute | Description |
---|---|
Model ID | The unique identifier of the element within the process model. |
Name | The name of the element displayed in the diagram. |
Documentation | A description and any additional information about this element. |
Attributes: Details
Attribute | Description |
---|---|
Script | A script that is executed when the task is activated. |
Attributes: Execution
Attribute | Description |
---|---|
Asynchronous | When enabled, the activity starts as an asynchronous job. |
Execution listeners |
Allows you to invoke Java logic after certain events:
|
Skip expression |
Defines an expression which is evaluated before executing the task. If it evaluates to true, the task is skipped. You must opt-in to enable this feature by setting a process variable |
Attributes: Multi instance
Attribute | Description |
---|---|
Multi instance type |
Determines if multiple instances of this activity are created:
|
Collection |
Expression to set the loop collection for a multi-instance task. The number of instances is determined by the elements of a collection. For each element in the collection, a new instance is created. A common use case is to loop over lists created by multi-element subforms. For example, if you bound a subform to an array of invoice positions using the expression |
Element variable |
The name of the variable where the currently processed item from the loop collection is stored, for example You can access the element in the process through an expression, for example |
Element index variable |
The name of the variable where the index of the currently processed item from the loop collection is stored, for example, The index starts with 0 and increases with every element that is being looped through. You can access the index in the process through an expression, for example |
Cardinality | A number or an expression that evaluates to an integer, which controls the number of activity instances that are created. If the attribute Collection is empty, a new instance is created for every element of the list. With cardinality, you can overwrite this and only create a given number of instances. You can also use this attribute if you want to loop over an activity a given number of times without specifying a collection. |
Completion condition | A Boolean expression that when true cancels the remaining activity instances, stopping the loop, and produces a token. |
Attributes: Visual
Attribute | Description |
---|---|
Font size | The font size of the element in the diagram. |
Font weight | The font weight of the element in the diagram. |
Font style | The font style of the element in the diagram. |
Font color | The font color of the element in the diagram. |
Background color | The background color of the element in the diagram. |
Border color | The border color of the element in the diagram. |
Define a script task
To save the user comment, use a script task that calls the addComment()
method of the CommentApi Java class. The method has an AddCommentRequest
parameter. The AddCommentRequest class has a builder()
method available.
- Class: CommentApi
- Main method: AddComment()
- Parameter and builder method: AddCommentRequest.builder()
- Main method: AddComment()
Builder parameters | Mandatory | Type | Description |
---|---|---|---|
baseResourceId()
|
Yes | UUID | Sets the ID of the resource which the new comment is for. |
baseResourceType()
|
Yes | ResourceType | Sets the type of the resource which the new comment is for. For instance Asset, Community, Relation. |
content()
|
Yes | string | Sets the HTML content of the comment. |
build()
|
Yes | Builds the object. | |
baseResource()
|
No | ResourceReference | Sets the resource which the new comment is for. |
parentId() |
No | UUID | Sets the id of the parent comment. |
import com.collibra.dgc.core.api.dto.instance.comment.AddCommentRequest.Builder
commentApi.addComment(AddCommentRequest.builder()
.baseResourceId(item.getId())
.baseResourceType(item.getType())
.content(Comment.toString())
.build()
);
Because each script task is independent, include import
statements for all the packages you are using in a script for each script task. Avoid using generic imports to reduce execution time.
In the context of workflow script tasks, the <Resource>Api interfaces (such as AssetApi, CommunityTypeApi, FileApi, and so on) are already instantiated and accessible via <resource>Api variables (such as assetApi, communityTypeApi, fileApi, and so on).
- From the Tasks section of the Palette, drag a Script task to the Chief steward lane, after the user task.
- Connect the user task to the script task with a SequenceFlow connection.
Make sure that the start and end event stay connected through the user and script tasks.You can also create elements starting from an other element by hovering your pointer over it and clicking the create element button:
- In the Properties section, select the General tab.
- In the Name field, enter a name for the task, for example: Store comment.
- Select the Main config tab.
- From the Script language drop-down menu, select groovy.
- Paste the code from the example in the Script form.
The following image shows the current state of the workflow:
At this point, you can try to deploy your workflow in Collibra. Save your work and see Deploy a workflow.
About the item variable
The global variable item
used in the code refers to the resource the workflow applies to. For more information, see the Workflows beans API documentation of your Collibra Platform available at https://<your_collibra_url>/docs/index.html, or the Beans section of the product documentation.
Whenever you have to add a comment to an asset, you can copy the code in the example.
Define a script task that sends an email notification
In the example workflow, the person proposing the new term (the start user) is notified and the status of the term is set to Rejected if the voting result is negative. To accomplish this:
- Add a script task to the Start user lane.
- Provide a Name for the task, for example Notify requester.
- Add the following groovy code to the task:
def usersIds = users.getUserIds("role(Requester)"); if (usersIds.isEmpty()){ loggerApi.warn("No users to send a mail to, no mail will be sent"); } else { mail.sendMails(usersIds, "in-progress", null, execution); }
Names and unique names in workflows
In Collibra Data Governance Center version 5.4 or newer, including Collibra Platform, there is a significant API change impacting asset names. Starting with this version, assets have names and unique full names, respectively referred to as displayName
and name
in the API . In older versions, you only had name
to refer to the asset name.
Action via API | Behavior |
---|---|
Add asset |
When you add an asset via an API call, you must enter a
If you don't specify a |
Update asset |
You can use During an update operation, the |
Example
The following example shows how you can change the asset name in Collibra Data Governance Center 5.3 or older and 5.4 or newer, both using the Java API v2.
- API v1 is deprecated.
- After an upgrade to 5.4 or newer, verify that workflows that affect asset names use the new API.
5.3 or older |
5.4 or newer |
---|---|
|
|
Upgrading your scripts for Collibra 2024.02 compatibility
We are upgrading the Collibra workflow engine to use Jakarta EE, starting with Collibra version 2024.02. The Jakarta EE APIs (jakarta.*
) have a different package structure than Javax EE APIs (javax.*
), causing workflow scripts that use javax.*
functions to fail after the upgrade.
Recommendations
To keep all of your workflows running smoothly after the upgrade:
- You must update your workflows that use Javax EE
javax.*
functions. - You must restart running workflows that are impacted by this change if there are still tasks to be executed that use Javax EE
javax.*
functions.
Do not deploy updated workflows with Jakarta EE jakarta.*
functions before the 2024.02 release.
Custom workflows
You must update your scripts if you have workflow script tasks or scripts stored in the groovy-lib directory that use Javax EE javax.*
functions by replacing javax.*
with jakarta.*
.
The javax packages that are part of the Java SDK are not impacted by this change and they require no update. Some commonly used javax Java SDK packages are:
- javax.net
- javax.crypto
- javax.script
- javax.xml.parsers
- javax.swing
- javax.management
- javax.imageio
- javax.xml.validation
To help with this transition, we have identified a number of commonly used classes that you don't need to change starting with Collibra version 2024.02 and that are supported until Collibra version 2024.05:
- javax.ws.rs.core.UriBuilder
- javax.xml.bind.DatatypeConverter.printBase64Binary
- javax.mail.*
- javax.activation.*
- javax.servlet.http.Cookie
Running workflow instances
When you deploy a new version of a workflow and there is a running instance of the same workflow, the running workflow continues to use the old version until it completes. If there is a Javax EE javax.*
function that still needs to be executed and that is not compatible with Jakarta EE, the workflow fails.
After you have identified and deployed the workflows that require an update, check if any of the workflows that are currently running need to be restarted:
- View the running workflow instances.
- Delete the workflow instance if required.
- Restart the updated workflow.
Additional resources
Upgrading your scripts for Groovy 3 compatibility
Groovy 3 introduces a list of breaking changes that can affect Collibra Groovy workflow scripts. You can consult the full list in the Groovy 3 release notes. There are two breaking changes that can most likely affect Collibra workflows:
- If a Groovy switch statement has a default branch, it must be the last branch.
- Groovy is now more compliant with the JavaBeans specification for one edge case scenario involving any field having a name starting with an uppercase letter (GROOVY-9618).
- Enums cannot have a non-private constructor.
- To use an interface “Function” as a parameter it must be typed, for example:
_methodHandler(Function<Integer, Integer> requiredFunction)
.
You can upgrade the workflows groovy script code to be compatible with these changes before we upgrade Collibra to the version containing Groovy 3.
Change Groovy switch statement
If a Groovy 3 switch statement has a default branch, it must be the last branch. This means that you can no longer place the default branch in any other position except last in the list of branches.
The following does not compile under Groovy 3:
switch(yourVariable) {
default:
// default action
break
case 'a':
// case a action
break
}
To correct the above code, place the default branch last:
switch(yourVariable) {
case 'a':
// case a action
break
default:
// default action
break
}
Your code will behave exactly the same as all the branches have a break
statement, so each branch is isolated and doesn’t affect other branches.
Switch fall-through
As switch fall-through occurs when branches don't have a break
statement, making it possible to execute multiple branches, not only the one that matches.
Example of switch fall-through:
def result = ""
switch(yourVariable) {
default:
result += "default "
// as there is no break statement, "case a" will be executed next
case 'a':
result += "a "
// as there is no break statement, "case b" will be executed next
case 'b':
result += "b"
}
When yourVariable
has the value 'a', the result
variable will equal "a b". When yourVariable
has the value 'b', the result
variable will equal "b". In all other cases, the result
variable will be equal “default a b”.
To make the code compile under Groovy 3, place the default branch last. However, to obtain the same results as the fall-through switch, you must also adjust the rest of the code:
Groovy 3 switch fall-through equivalent:
def result = ""
switch(yourVariable) {
case 'a':
result = "a b"
break
case 'b':
result = "b"
break
default:
result = "default a b"
break
}
Adjusting for Groovy JavaBeans specification compatibility changes
Groovy 3 is more compliant with the JavaBeans specification for one edge case scenario involving any field having a name starting with an uppercase letter. This change has an impact on the handling of properties.
Groovy properties
The definition of properties according to the Groovy public documentation is:
A property is an externally visible feature of a class. Rather than just using a public field to represent such features (which provides a more limited abstraction and would restrict refactoring possibilities), the typical approach in Java is to follow the conventions outlined in the JavaBeans Specification, i.e. represent the property using a combination of a private backing field and getters/setters. Groovy follows these same conventions but provides a simpler way to define the property.
The code sample below will generate the following:
-
A backing
private String name
field, a getName and a setName method. -
A backing
private int age
field, a getAge and a setAge method.
class Person {
String name
int age
}
By convention, Groovy also recognizes properties even if there is no backing field, provided there are getters or setters that follow the Java Beans specification.
class PseudoProperties {
//1. a pseudo property "name"
void setName(String name) {}
String getName() {}
//2. a pseudo read-only property "age"
int getAge() { 42 }
//3. a pseudo write-only property "groovy"
void setGroovy(boolean groovy) { }
}
def p = new PseudoProperties()
p.name = 'Foo' // uses (1)
assert p.age == 42 // uses (2)
p.groovy = true // uses (3)
Groovy 3 breaking change
In Groovy 3 the handling of properties that start with an uppercase letter has changed to be more compliant with the JavaBeans specification.
The way how properties are mapped to the accessor method has changed. In groovy 2 it was possible to access the field instead of the accessor methods in some scenarios as shown below:
Groovy 2
|
Groovy 3
|
A similar situation occurs when you use static properties:
Groovy 2
|
Groovy 3
|
This breaking change doesn’t affect classes where accessor methods are not overwritten.
Recommendation
To make existing workflow scripts compatible with Groovy 3, we recommend using lowercase property names, except in when the property name is all uppercase:
class A {
private String X = 'fieldX'
private String XML = 'fieldXML'
String getX() { 'X' }
String getXML() { 'XML' }
}
new A().with {
assert x == 'X' // instead of using uppercase X property
assert XML == 'XML' // in this case using XML property is the only way
}
Java API v1 to v2 mapping
This section lists the changes that impact Java API v1 methods.
Interface v1 | Method v1 | Change | Interface v2 | Method v2 |
---|---|---|---|---|
ActivityStreamComponent | getActivities | Convert | ActivityStreamApi | getActivities |
ApplicationComponent | executeInTransaction | Drop | ||
ApplicationComponent | getBaseURL | Convert | ApplicationApi | getInfo |
ApplicationComponent | getBuildNumber | Convert | ApplicationApi | getInfo |
ApplicationComponent | getDatabaseVersion | Drop | ||
ApplicationComponent | getFreeMemory | Drop | ||
ApplicationComponent | getJavaHome | Drop | ||
ApplicationComponent | getJavaInfo | Drop | ||
ApplicationComponent | getMajorMinorVersion | Convert | ApplicationApi | getInfo |
ApplicationComponent | getMaxMemory | Drop | ||
ApplicationComponent | getOSInfo | Drop | ||
ApplicationComponent | getStylingOverride | Drop | ||
ApplicationComponent | getTotalMemory | Drop | ||
ApplicationComponent | getUptime | Drop | ||
ApplicationComponent | getUsedMemory | Drop | ||
ApplicationComponent | getUserHome | Drop | ||
ApplicationComponent | getVersion | Convert | ApplicationApi | getInfo |
ApplicationComponent | hasDatabaseConnection | Drop | ||
ApplicationComponent | isBootstrapped | Drop | ||
ApplicationComponent | isCloud | Drop | ||
ApplicationComponent | isDatabaseUpToDate | Drop | ||
ApplicationComponent | isReportBugEnabled | Drop | ||
ApplicationComponent | reportBug | Drop | ||
ArticulationComponent | recalculateAllScores | Drop | ||
AttachmentComponent | addAttachmentToResource | Convert | AttachmentApi | addAttachment |
AttachmentComponent | addAttachmentToResourceFromUrl | Convert | AttachmentApi | addAttachment |
AttachmentComponent | changeAttachment | Convert | AttachmentApi | removeAttachment + addAttachment |
AttachmentComponent | findAttachmentByFile | Convert | AttachmentApi | findAttachments |
AttachmentComponent | findAttachmentsByResource | Convert | AttachmentApi | findAttachments |
AttachmentComponent | findAttachmentsByUser | Convert | AttachmentApi | findAttachments |
AttachmentComponent | findFileName | Convert | FileApi | getFileInfo |
AttachmentComponent | getAttachment | Convert | AttachmentApi | getAttachment |
AttachmentComponent | getAttachmentContent | Convert | AttachmentApi | getAttachmentContent |
AttachmentComponent | removeAttachment | Convert | AttachmentApi | removeAttachment |
AttributeComponent | addAttribute | Convert | AttributeApi | addAttribute |
AttributeComponent | addAttributesAsync | Convert | ImporterApi | |
AttributeComponent | addBooleanAttribute | Convert | AttributeApi | addAttribute |
AttributeComponent | addDateAttribute | Convert | AttributeApi | addAttribute |
AttributeComponent | addDateTimeAttribute | Convert | AttributeApi | addAttribute |
AttributeComponent | addDefinition | Convert | AttributeApi | addAttribute |
AttributeComponent | addDescription | Convert | AttributeApi | addAttribute |
AttributeComponent | addExample | Convert | AttributeApi | addAttribute |
AttributeComponent | addMultiValueListAttribute | Convert | AttributeApi | addAttribute |
AttributeComponent | addNote | Convert | AttributeApi | addAttribute |
AttributeComponent | addNumericAttribute | Convert | AttributeApi | addAttribute |
AttributeComponent | addScriptAttribute | Convert | AttributeApi | addAttribute |
AttributeComponent | addSingleValueListAttribute | Convert | AttributeApi | addAttribute |
AttributeComponent | addStringAttribute | Convert | AttributeApi | addAttribute |
AttributeComponent | changeAttribute | Convert | AttributeApi | changeAttribute |
AttributeComponent | changeAttributesAsync | Convert | ImporterApi | |
AttributeComponent | changeBooleanAttributeValue | Convert | AttributeApi | changeAttribute |
AttributeComponent | changeDateAttributeValue | Convert | AttributeApi | changeAttribute |
AttributeComponent | changeDateTimeAttributeValue | Convert | AttributeApi | changeAttribute |
AttributeComponent | changeMultiValueListAttributeValues | Convert | AttributeApi | changeAttribute |
AttributeComponent | changeNumericAttributeValue | Convert | AttributeApi | changeAttribute |
AttributeComponent | changeScriptAttributeValue | Convert | AttributeApi | changeAttribute |
AttributeComponent | changeSingleValueListAttributeValue | Convert | AttributeApi | changeAttribute |
AttributeComponent | changeStringAttributeLongExpression | Convert | AttributeApi | changeAttribute |
AttributeComponent | getAttribute | Convert | AttributeApi | getAttribute |
AttributeComponent | getAttributeCount | Drop | ||
AttributeComponent | getAttributesOfTypeForRepresentation | Convert | AttributeApi | findAttributes |
AttributeComponent | getAttributesOfTypesForRepresentation | Convert | AttributeApi | findAttributes |
AttributeComponent | getAttributesOfTypesForRepresentationInCollection | Convert | AttributeApi | findAttributes |
AttributeComponent | getBooleanAttribute | Convert | AttributeApi | getAttribute |
AttributeComponent | getDateAttribute | Convert | AttributeApi | getAttribute |
AttributeComponent | getDateTimeAttribute | Convert | AttributeApi | getAttribute |
AttributeComponent | getDefinitionsForRepresentation | Convert | AttributeApi | findAttributes |
AttributeComponent | getDescriptionsForRepresentation | Convert | AttributeApi | findAttributes |
AttributeComponent | getExamplesForRepresentation | Convert | AttributeApi | findAttributes |
AttributeComponent | getHyperlinkedLongExpression | Drop | ||
AttributeComponent | getMultiValueListAttribute | Convert | AttributeApi | getAttribute |
AttributeComponent | getNotesForRepresentation | Convert | AttributeApi | findAttributes |
AttributeComponent | getNumericAttribute | Convert | AttributeApi | getAttribute |
AttributeComponent | getScriptAttribute | Convert | AttributeApi | getAttribute |
AttributeComponent | getSingleValueListAttribute | Convert | AttributeApi | getAttribute |
AttributeComponent | getStringAttribute | Convert | AttributeApi | getAttribute |
AttributeComponent | removeAttribute | Convert | AttributeApi | removeAttribute |
AttributeComponent | validateConstraint | Convert | AttributeTypeApi | getAttributeType |
AttributeComponent | validateMultiValueListConstraint | Convert | AttributeTypeApi | getAttributeType |
AttributeComponent | validateSingleValueListConstraint | Convert | AttributeTypeApi | getAttributeType |
AttributeTypeComponent | addBooleanAttributeType | Convert | AttributeTypeApi | addAttributeType |
AttributeTypeComponent | addBooleanAttributeTypeWithCustomUUID | Convert | AttributeTypeApi | addAttributeTypes |
AttributeTypeComponent | addDateAttributeType | Convert | AttributeTypeApi | addAttributeTypes |
AttributeTypeComponent | addDateAttributeTypeWithCustomUUID | Convert | AttributeTypeApi | addAttributeTypes |
AttributeTypeComponent | addDateTimeAttributeType | Convert | AttributeTypeApi | addAttributeTypes |
AttributeTypeComponent | addDateTimeAttributeTypeWithCustomUUID | Convert | AttributeTypeApi | addAttributeTypes |
AttributeTypeComponent | addNumericAttributeType | Convert | AttributeTypeApi | addAttributeTypes |
AttributeTypeComponent | addNumericAttributeTypeWithCustomUUID | Convert | AttributeTypeApi | addAttributeTypes |
AttributeTypeComponent | addScriptAttributeType | Convert | AttributeTypeApi | addAttributeTypes |
AttributeTypeComponent | addStringAttributeType | Convert | AttributeTypeApi | addAttributeTypes |
AttributeTypeComponent | addStringAttributeTypeWithCustomUUID | Convert | AttributeTypeApi | addAttributeTypes |
AttributeTypeComponent | addValueListAttributeType | Convert | AttributeTypeApi | addAttributeTypes |
AttributeTypeComponent | addValueListAttributeTypeWithCustomUUID | Convert | AttributeTypeApi | addAttributeTypes |
AttributeTypeComponent | change | Convert | AttributeTypeApi | changeAttributeTypes |
AttributeTypeComponent | changeAllowedValues | Convert | AttributeTypeApi | changeAttributeTypes |
AttributeTypeComponent | changeDescription | Convert | AttributeTypeApi | changeAttributeTypes |
AttributeTypeComponent | changeIsInteger | Convert | AttributeTypeApi | changeAttributeTypes |
AttributeTypeComponent | changeKeepHistory | Convert | AttributeTypeApi | changeAttributeTypes |
AttributeTypeComponent | changeScriptLanguage | Convert | AttributeTypeApi | changeAttributeTypes |
AttributeTypeComponent | changeSignifier | Convert | AttributeTypeApi | changeAttributeTypes |
AttributeTypeComponent | createAttributeTypeFilter | Drop | ||
AttributeTypeComponent | findAllKeepHistoryAttributeTypesWithSignifier | Convert | AttributeTypeApi | findAttributeTypes |
AttributeTypeComponent | findAttributeTypesContainingSignifier | Convert | AttributeTypeApi | findAttributeTypes |
AttributeTypeComponent | getAttributeTypes | Convert | AttributeTypeApi | findAttributeTypes |
AttributeTypeComponent | getAttributeType | Convert | AttributeTypeApi | getAttributeType |
AttributeTypeComponent | getAttributeTypeBySignifier | Convert | AttributeTypeApi | getAttributeTypeByName |
AttributeTypeComponent | getAttributeTypeDescription | Convert | AttributeType | getDescription |
AttributeTypeComponent | getAttributeTypeKind | Convert | AttributeType | To be infered from returned object |
AttributeTypeComponent | getAllowedValues | Convert | MultiValueListAttributeType | getAllowedValues |
AttributeTypeComponent | getDefinitionAttributeType | Convert | AttributeTypeApi | findAttributeTypes |
AttributeTypeComponent | getDescriptionAttributeType | Convert | AttributeTypeApi | findAttributeTypes |
AttributeTypeComponent | getExampleAttributeType | Convert | AttributeTypeApi | findAttributeTypes |
AttributeTypeComponent | getIsInteger | Convert | AttributeTypeApi | getAttributeType |
AttributeTypeComponent | getKeepHistory | Convert | AttributeTypeApi | getAttributeType |
AttributeTypeComponent | getNoteAttributeType | Convert | AttributeTypeApi | getAttributeType |
AttributeTypeComponent | getScriptLanguage | Convert | AttributeTypeApi | getAttributeType |
AttributeTypeComponent | getLegacyAttributeTypeKind | Drop | ||
AttributeTypeComponent | removeAttributeType | Convert | AttributeTypeApi | removeAttributeType |
BootstrapComponent | resetAuditTables | Drop | ||
CommentComponent | addComment | Convert | CommentApi | addComment |
CommentComponent | addReply | Convert | CommentApi | addComment |
CommentComponent | changeComment | Convert | CommentApi | changeComment |
CommentComponent | getComment | Convert | CommentApi | getComment |
CommentComponent | getComments | Convert | CommentApi | findComments |
CommentComponent | getCommentsByUser | Convert | CommentApi | findComments |
CommentComponent | getReplies | Convert | CommentApi | findComments |
CommentComponent | removeComment | Convert | CommentApi | removeComment |
CommunityComponent | addCommunity | Convert | CommunityApi | addCommunity |
CommunityComponent | addSubCommunity | Convert | CommunityApi | addCommunities |
CommunityComponent | change | Convert | CommunityApi | changeCommunity |
CommunityComponent | changeDescription | Convert | CommunityApi | changeCommunities |
CommunityComponent | changeLanguage | Drop | ||
CommunityComponent | changeName | Convert | CommunityApi | changeCommunity |
CommunityComponent | changeParentCommunity | Convert | CommunityApi | changeCommunity |
CommunityComponent | changeUri | Drop | ||
CommunityComponent | exists | Convert | CommunityApi | exists |
CommunityComponent | findCommunitiesContainingName | Convert | CommunityApi | findCommunities |
CommunityComponent | getCommunities | Convert | CommunityApi | findCommunities |
CommunityComponent | getCommunityByName | Convert | CommunityApi | findCommunities |
CommunityComponent | getCommunity | Convert | CommunityApi | getCommunity |
CommunityComponent | getCommunityByUri | Drop | ||
CommunityComponent | getCommunityCount | Convert | OutputModuleApi | |
CommunityComponent | removeCommunity | Convert | CommunityApi | removeCommunity |
CommunityComponent | removeCommunityJob | Convert | CommunityApi | removeCommunityInJob |
CommunityComponent | removeAsync | Convert | CommunityApi | removeCommunitiesInJob |
CommunityComponent | removeParentCommunity | Convert | CommunityApi | makeRootCommunity |
CompareComponent | compareCurrentWithSnapshot | Drop | ||
CompareComponent | compareSnapshotWithCurrent | Drop | ||
CompareComponent | compareSnapshots | Drop | ||
CompareComponent | compareViewConfigs | Drop | ||
CompareComponent | compareVocabularyTermsBySignifier | Drop | ||
ComplexRelationComponent | addComplexRelation | Convert | ComplexRelationApi | addComplexRelation |
ComplexRelationComponent | changeComplexRelation | Convert | ComplexRelationApi | changeComplexRelation |
ComplexRelationComponent | createComplexRelationFilter | Convert | FindComplexRelationsRequest | builder |
ComplexRelationComponent | getComplexRelation | Convert | ComplexRelationApi | getComplexRelation |
ComplexRelationComponent | getComplexRelationCount | Convert | OutputModuleApi | |
ComplexRelationComponent | getComplexRelations | Convert | ComplexRelationApi | findComplexRelation (assetId, ComplexRelationtypeId) |
ComplexRelationComponent | getInvolvedComplexRelationTypes | Convert | ComplexRelationApi | findComplexRelations |
ComplexRelationComponent | removeComplexRelation | Convert | ComplexRelationApi | removeComplexRelation |
ComplexRelationTypeComponent | addComplexRelationType | Convert | ComplexRelationTypeApi | addComplexRelationType |
ComplexRelationTypeComponent | changeComplexRelationType | Convert | ComplexRelationTypeApi | changeComplexRelationType |
ComplexRelationTypeComponent | exportCSV | Convert | ComplexRelationApi | exportCSVInJob |
ComplexRelationTypeComponent | exportCSVAsString | Convert | ComplexRelationApi | exportCSV |
ComplexRelationTypeComponent | exportCSVWithoutJob | Convert | ComplexRelationApi | exportCSVToFile |
ComplexRelationTypeComponent | exportExcel | Convert | ComplexRelationApi | exportExcelInJob |
ComplexRelationTypeComponent | exportExcelWithoutJob | Convert | ComplexRelationApi | exportExcelToFile |
ComplexRelationTypeComponent | getAllComplexRelationTypes | Convert | ComplexRelationTypeApi | findComplexRelationTypes |
ComplexRelationTypeComponent | getComplexRelationType | Convert | ComplexRelationTypeApi | getComplexRelationType |
ComplexRelationTypeComponent | remove | Convert | ComplexRelationTypeApi | removeComplexRelationType |
ConceptTypeComponent | addConceptType | Convert | AssetTypeApi | addAssetType |
ConceptTypeComponent | addConceptTypeWithCustomUUID | Convert | AssetTypeApi | addAssetType |
ConceptTypeComponent | findConceptTypesContainingSignifier | Convert | AssetTypeApi | findAssetTypes |
ConceptTypeComponent | getConceptTypes | Convert | AssetTypeApi | findAssetTypes |
ConceptTypeComponent | findAllSpecializedAssetTypes | Convert | AssetTypeApi | findSubTypes |
ConceptTypeComponent | findSpecializedAssetTypes | Convert | AssetTypeApi | findAssetTypes |
ConceptTypeComponent | getBusinessTermType | Convert | AssetTypeApi | getAssetType |
ConceptTypeComponent | getCodeTermType | Convert | AssetTypeApi | getAssetType |
ConceptTypeComponent | getConceptType | Convert | AssetTypeApi | getAssetType |
ConceptTypeComponent | getConceptTypeHierarchy | Convert | AssetTypeApi | findSubTypes |
ConfigurationComponent | clear | Drop | ||
ConfigurationComponent | getBoolean | Drop | ||
ConfigurationComponent | getInteger | Drop | ||
ConfigurationComponent | getProperty | Drop | ||
ConfigurationComponent | getString | Drop | ||
ConfigurationComponent | setProperty | Drop | ||
DGCConfigurationComponent | get | Drop | ||
FileComponent | activateFileUploadExceeding | Drop | ||
FileComponent | addFile | Convert | FileApi | addFile |
FileComponent | deactivateFileUploadExceeding | Drop | ||
FileComponent | getFileAsStream | Convert | FileApi | getFileAsStream |
FileComponent | getFileContentType | Convert | FileApi | getFileInfo |
FileComponent | getFileName | Convert | FileApi | getFileInfo |
FileComponent | getFileSize | Convert | FileApi | getFileInfo |
FileComponent | uploadMultipartContent | Drop | ||
ImpactComponent | createRelationTrace | Drop | ||
ImpactComponent | getAssetRelationImpact | Drop | ||
ImpactComponent | getAssetRelationImpactForTargetTerm | Drop | ||
ImpactComponent | getAssetRelationImpactForTargetType | Drop | ||
ImpactComponent | getAssetUsageRelationImpact | Drop | ||
ImpactComponent | getAttributeReferenceImpact | Drop | ||
ImpactComponent | getCommentReferenceImpact | Drop | ||
ImpactComponent | getUserUsageRelationImpact | Drop | ||
InputViewComponent | getColumnNames | Drop | ||
InputViewComponent | importCSV | Convert | ImporterApi | importCSVInJob |
InputViewComponent | importExcel | Convert | ImporterApi | importExcelInJob |
InputViewComponent | importFile | Convert | ImporterApi | importCSVInJob |
InputViewComponent | importTableFile | Convert | ImporterApi | importCSVInJob |
InputViewComponent | simulateImportCSV | Convert | ImporterApi | importCSVInJob |
InputViewComponent | simulateImportExcel | Convert | ImporterApi | importExcelInJob |
InputViewComponent | simulateImportFile | Convert | ImporterApi | importCSVInJob |
InputViewComponent | simulateImportTableFile | Convert | ImporterApi | importCSVInJob |
IOComponent | checkTableViewConfig | Convert | OutputModuleApi | To use the validation feature set validationEnabled parameter to true when passing tableViewConfig to OutputModuleApi export... methods. |
IOComponent | checkViewConfig | Convert | OutputModuleApi | To use the validation feature set validationEnabled parameter to true when passing tableViewConfig to OutputModuleApi export... methods. |
IssueComponent | addIssue | Convert | IssueApi | addIssue |
IssueComponent | getIssues | Convert | IssueApi | findIssues |
IssueComponent | getOpenIssuesCount | Drop | Use the reporting functionality instead | |
JobComponent | cancelJob | Convert | JobApi | cancelJob |
JobComponent | createJobFilter | Drop | ||
JobComponent | getActiveJobs | Convert | JobApi | findJobs |
JobComponent | getJobs | Convert | JobApi | findJobs |
JobComponent | getRunningJobs | Convert | JobApi | findJobs |
JobComponent | getWaitingJobs | Convert | JobApi | findJobs |
JobComponent | getJob | Convert | JobApi | getJob |
JobComponent | setVisibility | Drop | ||
JobComponent | setVisibilityForFinishedJobs | Drop | ||
JobComponent | updateNotification | Drop | ||
LoggerComponent | debug | Convert | LoggerApi | debug |
LoggerComponent | error | Convert | LoggerApi | error |
LoggerComponent | info | Convert | LoggerApi | info |
LoggerComponent | warn | Convert | LoggerApi | warn |
MappingComponent | addMapping | Convert | MappingApi | addMapping |
MappingComponent | cleanMappings | Convert | MappingApi | removeMappingsByExternalSystemInJob |
MappingComponent | findMapping | Convert | MappingApi | removeMappingByMappedResource |
MappingComponent | findMappingByExtEntity | Convert | MappingApi | getMappingByExternalEntity |
MappingComponent | findMappingByResource | Convert | MappingApi | removeMappingByMappedResource |
MappingComponent | getMapping | Convert | MappingApi | getMapping |
MappingComponent | getMappings | Convert | MappingApi | findMappings |
MappingComponent | removeMapping | Convert | MappingApi | removeMapping |
MappingComponent | removeMappingByExtEntity | Convert | MappingApi | removeMappingByExternalEntity |
MappingComponent | removeMappingByResource | Convert | MappingApi | removeMappingByMappedResource |
MappingComponent | updateMapping | Convert | MappingApi | changeMapping |
MappingComponent | updateMappingByExtEntity | Convert | MappingApi | changeMappingByExternalEntity |
MappingComponent | updateMappingByResource | Convert | MappingApi | changeMappingByMappedResource |
MetadataComponent | getSPMetadataAsString | Convert | SingleSignOnApi | getSPMetadataAsString |
NavigationStatisticsComponent | findMostViewedTerms | Convert | NavigationStatisticsApi | findMostViewedAssets |
NavigationStatisticsComponent | findMostViewedTermsInLastPeriod | Convert | NavigationStatisticsApi | findMostViewedAssets |
NavigationStatisticsComponent | findRecentlyViewedTerms | Convert | NavigationStatisticsApi | findRecentlyViewedAssets |
NounExtractorComponent | extractCandidateTermFromAttachment | Drop | ||
NounExtractorComponent | extractCandidateTermFromFile | Drop | ||
NounExtractorComponent | extractCandidateTermFromRepresentations | Drop | ||
NounExtractorComponent | extractCandidateTermFromText | Drop | ||
NounExtractorComponent | extractCandidateTermFromVocabulary | Drop | ||
NounExtractorComponent | extractNounsFromAttachment | Drop | ||
NounExtractorComponent | extractNounsFromFile | Drop | ||
NounExtractorComponent | extractNounsFromRepresentations | Drop | ||
NounExtractorComponent | extractNounsFromText | Drop | ||
NounExtractorComponent | extractNounsFromVocabulary | Drop | ||
OutputViewComponent | buildOutputView | Convert | OutputModuleApi | exportJSON, exportXML |
OutputViewComponent | buildTableOutputView | Convert | OutputModuleApi | exportJSON, exportCSV, exportJSONToFile, exportCSVToFile, exportExcelToFile |
OutputViewComponent | exportCSV | Convert | OutputModuleApi | exportCSVInJob |
OutputViewComponent | exportCSVAsString | Convert | OutputModuleApi | exportCSV |
OutputViewComponent | exportCSVWithoutJob | Convert | OutputModuleApi | exportCSVToFile |
OutputViewComponent | exportExcel | Convert | OutputModuleApi | exportExcelInJob |
OutputViewComponent | exportExcelWithoutJob | Convert | OutputModuleApi | exportExcelToFile |
OutputViewComponent | exportOutputView | Convert | OutputModuleApi | exportJSONInJob, exportXMLInJob |
OutputViewComponent | exportTableOutputView | Convert | OutputModuleApi | exportJSONInJob, exportCSVInJob, exportExcelInJob |
OutputViewComponent | getJSONDataTable | Convert | OutputModuleApi | exportJSON |
OutputViewComponent | getModelOutputView | Convert | OutputModuleApi | exportJSON |
OutputViewComponent | getRelationTraceHierarchyJSONDataTable | Convert | OutputModuleApi | exportJSON |
OutputViewComponent | getSingleRelationHierarchyJSONDataTable | Convert | OutputModuleApi | exportJSON |
OutputViewComponent | getTableOutputView | Convert | OutputModuleApi | exportJSON, exportCSV |
RelationComponent | addRelation | Convert | RelationApi | addRelation |
RelationComponent | addRelationsAsync | Convert | ImporterApi | |
RelationComponent | addRelationsAsyncWithTarget | Convert | ImporterApi | |
RelationComponent | change | Convert | RelationApi | changeRelation |
RelationComponent | changeEndDate | Convert | RelationApi | changeRelation |
RelationComponent | changeSourceTerm | Convert | RelationApi | changeRelation |
RelationComponent | changeStartDate | Convert | RelationApi | changeRelation |
RelationComponent | changeTargetTerm | Convert | RelationApi | changeRelation |
RelationComponent | findRelationsBySource | Convert | RelationApi | findRelations |
RelationComponent | findRelationsBySourceAndTarget | Convert | RelationApi | findRelations |
RelationComponent | findRelationsBySourceAndTargetAndType | Convert | RelationApi | findRelations |
RelationComponent | findRelationsBySourceAndType | Convert | RelationApi | findRelations |
RelationComponent | findRelationsByTarget | Convert | RelationApi | findRelations |
RelationComponent | findRelationsByTargetAndType | Convert | RelationApi | findRelations |
RelationComponent | findRelationsByType | Convert | RelationApi | findRelations |
RelationComponent | findRelationsUsingOnlyNonNullParameters | Convert | RelationApi | findRelations |
RelationComponent | getRelation | Convert | RelationApi | getRelation |
RelationComponent | getRelationCount | Convert | OutputModuleApi | |
RelationComponent | hasRelationsBySourceAndType | Convert | RelationApi | |
RelationComponent | hasRelationsByTargetAndType | Convert | RelationApi | |
RelationComponent | removeRelation | Convert | RelationApi | removeRelation |
RelationComponent | replaceMultipleAsync | Convert | ImporterApi | |
RelationTypeComponent | addRelationType | Convert | RelationTypeApi | addRelationType |
RelationTypeComponent | addRelationTypeWithCustomUUID | Convert | RelationTypeApi | addRelationType |
RelationTypeComponent | changeBinaryFactTypeWithExistingTerms | Convert | RelationTypeApi | changeRelationType |
RelationTypeComponent | findPossibleRelationTypesForSourceTerm | Convert | RelationTypeApi | AssignmentApi#getAssignmentForAsset |
RelationTypeComponent | findPossibleRelationTypesForSourceType | Convert | RelationTypeApi | AssignmentApi.getAssignmentsForAssetType |
RelationTypeComponent | findPossibleRelationTypesForTargetTerm | Convert | RelationTypeApi | AssignmentApi#getAssignmentForAsset |
RelationTypeComponent | findPossibleRelationTypesForTargetType | Convert | RelationTypeApi | AssignmentApi.getAssignmentsForAssetType |
RelationTypeComponent | findRelationTypesContainingRole | Convert | RelationTypeApi | findRelationTypes |
RelationTypeComponent | findRelationTypesContainingRoleAndHeadOrTail | Convert | RelationTypeApi | findRelationTypes |
RelationTypeComponent | findRelationTypesContainingRoleOrSignifier | Convert | RelationTypeApi | findRelationTypes |
RelationTypeComponent | getAllRelationTypes | Convert | RelationTypeApi | findRelationTypes |
RelationTypeComponent | getRelationType | Convert | RelationTypeApi | getRelationType |
RelationTypeComponent | getRelationTypesContainingHeadTerm | Convert | RelationTypeApi | findRelationTypes |
RelationTypeComponent | getRelationTypesContainingSourceTerm | Convert | RelationTypeApi | findRelationTypes |
RelationTypeComponent | getRelationTypesContainingTailTerm | Convert | RelationTypeApi | findRelationTypes |
RelationTypeComponent | getRelationTypesContainingTerm | Convert | RelationTypeApi | findRelationTypes |
RelationTypeComponent | removeRelationType | Convert | RelationTypeApi | removeRelationType |
RepresentationComponent | changeConceptType | Convert | AssetApi | changeAsset |
RepresentationComponent | changeConceptTypesAsync | Convert | AssetApi | changeAssets |
RepresentationComponent | changeExcludedFromHyperlinking | Convert | AssetApi | changeAsset |
RepresentationComponent | changeStatus | Convert | AssetApi | changeAsset |
RepresentationComponent | changeStatusAsync | Convert | AssetApi | changeAssets |
RepresentationComponent | changeVocabulariesAsync | Convert | AssetApi | changeAssets |
RepresentationComponent | changeVocabulary | Convert | AssetApi | changeAsset |
RepresentationComponent | exists | Convert | AssetApi | exists |
RepresentationComponent | findPossibleAttributeOrRelationTypes | Convert | AssignmentApi | getAssignmentForAsset |
RepresentationComponent | findPossibleAttributeTypes | Convert | AssignmentApi | getAssignmentForAsset |
RepresentationComponent | findPossibleStatuses | Convert | AssignmentApi | getAssignmentForAsset |
RepresentationComponent | getRepresentation | Convert | AssetApi | getAsset |
RepresentationComponent | remove | Convert | AssetApi | removeAsset |
RightsComponent | addMember | Convert | ResponsibilityApi | addResponsibility |
RightsComponent | addMembersAsync | Convert | ResponsibilityApi | addResponsibility |
RightsComponent | addRole | Convert | RoleApi | addRole |
RightsComponent | addRoleWithCustomUUID | Convert | RoleApi | addRole |
RightsComponent | findRolesContainingSignifier | Convert | RoleApi | findRoles |
RightsComponent | getCurrentUserRights | Convert | ResponsibilityApi | findResponsibilities (use UserApi.getCurrentUser()) |
RightsComponent | getGlobalRoles | Convert | ResponsibilityApi | findResponsibilities |
RightsComponent | getResourceRoles | Convert | RoleApi | findRoles |
RightsComponent | changeMemberRole | Convert | ResponsibilityApi | removeResponsibility, addResponsibility |
RightsComponent | changeMembers | Convert | ResponsibilityApi | removeResponsibility, addResponsibility |
RightsComponent | changeMembersAsync | Convert | ResponsibilityApi | removeResponsibility, addResponsibility |
RightsComponent | getMember | Convert | ResponsibilityApi | findResponsibilities |
RightsComponent | getMemberCount | Drop | ||
RightsComponent | getAllMemberGroupsByResourceAndRole | Convert | ResponsibilityApi | findResponsibilities & userGroupApi |
RightsComponent | getAllMemberUsersByResourceAndRole | Convert | ResponsibilityApi | findResponsibilities & userApi combo |
RightsComponent | getAllMembersByResource | Convert | ResponsibilityApi | findResponsibilities |
RightsComponent | getAllMembersByResourceAndRole | Convert | ResponsibilityApi | findResponsibilities |
RightsComponent | getInheritedMembers | Convert | ResponsibilityApi | findResponsibilities |
RightsComponent | getInheritedMembersByResourceAndRole | Convert | ResponsibilityApi | findResponsibilities |
RightsComponent | getMemberRoles | Convert | ResponsibilityApi | findResponsibilities |
RightsComponent | getMembers | Convert | ResponsibilityApi | findResponsibilities |
RightsComponent | getMembersByOwner | Convert | ResponsibilityApi | findResponsibilities |
RightsComponent | getMembersByOwnerAndRole | Convert | ResponsibilityApi | findResponsibilities |
RightsComponent | getMembersByResourceAndRole | Convert | ResponsibilityApi | findResponsibilities |
RightsComponent | getMembersByRole | Convert | ResponsibilityApi | findResponsibilities |
RightsComponent | getOwners | Convert | ResponsibilityApi | findResponsibilities |
RightsComponent | getRight | Convert | We have an enum listing all rights (com.collibra.dgc.core.api.model.security.Permission) | |
RightsComponent | getRightCategories | Drop | ||
RightsComponent | getRightCategory | Drop | ||
RightsComponent | getRights | Convert | We have an enum listing all rights (com.collibra.dgc.core.api.model.security.Permission) | |
RightsComponent | getRoleByName | Convert | RoleApi | findRoles |
RightsComponent | getRoles | Convert | RoleApi | findRoles |
RightsComponent | getRole | Convert | RoleApi | getRole |
RightsComponent | grant | Convert | RoleApi | addRole |
RightsComponent | grantCategory | Drop | ||
RightsComponent | setPermissions | Convert | RoleApi | changeRole |
RightsComponent | isAuthorized | Convert | RoleApi | isPermitted |
RightsComponent | isCategoryAuthorized | Drop | ||
RightsComponent | isComplete | Drop | ||
RightsComponent | isPermitted | Drop | ||
RightsComponent | isPermittedOnCommunity | Drop | ||
RightsComponent | isPermittedOnRepresentation | Drop | ||
RightsComponent | isPermittedOnVocabulary | Drop | ||
RightsComponent | removeMember | Convert | ResponsibilityApi | removeResponsibility |
RightsComponent | removeRole | Convert | RoleApi | removeRole |
RightsComponent | revoke | Convert | RoleApi | changeRole |
RightsComponent | revokeCategory | Drop | ||
RightsComponent | searchRoles | Convert | RoleApi | findRoles |
StatusComponent | addStatus | Convert | StatusApi | addStatus |
StatusComponent | addStatusWithCustomUUID | Convert | StatusApi | addStatus |
StatusComponent | changeDescription | Convert | StatusApi | changeStatus |
StatusComponent | changeSignifier | Convert | StatusApi | changeStatus |
StatusComponent | findStatusesContainingSignifier | Convert | StatusApi | findStatuses |
StatusComponent | getStatus | Convert | StatusApi | getStatus |
StatusComponent | getStatusBySignifier | Convert | StatusApi | getStatusByName |
StatusComponent | getStatuses | Convert | StatusApi | findStatuses |
StatusComponent | removeStatus | Convert | StatusApi | removeStatus |
StatusComponent | updateStatus | Convert | StatusApi | changeStatus |
TermComponent | addTerm | Convert | AssetApi | addAsset |
TermComponent | addTerms | Convert | AssetApi | addAssets |
TermComponent | changeConceptType | Convert | AssetApi | changeAsset |
TermComponent | changeConceptTypesAsync | Convert | AssetApi | changeAssets |
TermComponent | changeExcludedFromHyperlinking | Convert | AssetApi | changeAsset |
TermComponent | changeGeneralConcept | Convert | AssetApi | changeAsset |
TermComponent | changeSignifier | Convert | AssetApi | changeAsset |
TermComponent | changeStatus | Convert | AssetApi | changeAsset |
TermComponent | changeStatusAsync | Convert | AssetApi | changeAssets |
TermComponent | changeVocabulariesAsync | Convert | AssetApi | changeAssets |
TermComponent | changeVocabulary | Convert | AssetApi | changeAsset |
TermComponent | exists | Convert | AssetApi | exists |
TermComponent | findPossibleAttributeOrRelationTypes | Convert | AssignmentApi | getAssignmentForAsset |
TermComponent | findPossibleAttributeTypes | Convert | AssignmentApi | getAssignmentForAsset |
TermComponent | findPossibleStatuses | Convert | AssignmentApi | getAssignmentForAsset |
TermComponent | findTermsContainingSignifier | Convert | AssetApi | findAssets |
TermComponent | getRepresentation | Convert | AssetApi | getAsset |
TermComponent | getRootType | Convert | AssetTypeApi | findParentTypes |
TermComponent | getTerm | Convert | AssetApi | getAsset |
TermComponent | getTermArticulationScore | Convert | Asset | getArticulationScore |
TermComponent | getTermBySignifier | Convert | AssetApi | findAssets |
TermComponent | getTerms | Convert | AssetApi | findAssets |
TermComponent | getTermsCreatedCount | Drop | ||
TermComponent | remove | Convert | AssetApi | removeAsset |
TermComponent | removeAsync | Convert | AssetApi | removeAsset |
TermComponent | removeGeneralConcept | Drop | ||
TermComponent | removeTerms | Convert | AssetApi | removeAssets |
TermComponent | removeTermsJob | Convert | AssetApi | removeAssets |
UserComponent | addAdditionalEmail | Convert | UserApi | changeUser |
UserComponent | addAddress | Convert | UserApi | changeUser |
UserComponent | addGroup | Convert | UserGroupApi | addUserGroup |
UserComponent | addInstantMessagingAccount | Convert | UserApi | changeUser |
UserComponent | addPhone | Convert | UserApi | changeUser |
UserComponent | addUser | Convert | UserApi | addUser |
UserComponent | addUserToGroup | Convert | UserGroupApi | addUsersToUserGroup |
UserComponent | addUsers | Convert | UserApi | addUsers |
UserComponent | addUsersToGroup | Convert | UserGroupApi | addUsersToUserGroup |
UserComponent | addWebsite | Convert | UserApi | changeUser |
UserComponent | changeAdditionalEmail | Convert | UserApi | changeUser |
UserComponent | changeAddress | Convert | UserApi | changeUser |
UserComponent | changeAvatar | Convert | UserApi | changeUserAvatar |
UserComponent | changeGroup | Convert | UserGroupApi | changeUserGroup |
UserComponent | changeInstantMessagingAccount | Convert | UserApi | changeUser |
UserComponent | changeLanguage | Convert | UserApi | changeUser |
UserComponent | changePhone | Convert | UserApi | changeUser |
UserComponent | changeUser | Convert | UserApi | changeUser |
UserComponent | changeUserName | Convert | UserApi | changeUser |
UserComponent | changeWebsite | Convert | UserApi | changeUser |
UserComponent | exists | Convert | UserApi | exists |
UserComponent | findGroupsContainingName | Convert | UserGroupApi | findUserGroups |
UserComponent | findUsersContainingName | Convert | UserApi | findUsers |
UserComponent | getCurrentUser | Convert | UserApi | getCurrentUser |
UserComponent | getGroup | Convert | UserGroupApi | getGroup |
UserComponent | getGroupByName | Convert | UserGroupApi | getUserGroupByName |
UserComponent | getGroups | Convert | UserGroupApi | findUserGroups |
UserComponent | getGroupsForUser | Convert | UserGroupApi | findUserGroups |
UserComponent | getUser | Convert | UserApi | getUser |
UserComponent | getUserByEmail | Convert | UserApi | getUserByEmailAddress |
UserComponent | getUserByName | Convert | UserApi | getUserByUserName |
UserComponent | getUserOrGroup | Convert | UserApi, UserGroupApi | getUser, getUserGroup |
UserComponent | getUsers | Convert | UserApi | findUsers |
UserComponent | removeAdditionalEmail | Convert | UserApi | changeUser |
UserComponent | removeAddress | Convert | UserApi | changeUser |
UserComponent | removeAvatar | Convert | UserApi | removeAvatar |
UserComponent | removeGroup | Convert | UserGroupApi | removeUserGroup |
UserComponent | removeInstantMessagingAccount | Convert | UserApi | changeUser |
UserComponent | removePhone | Convert | UserApi | changeUser |
UserComponent | removeUser | Convert | UserApi | removeUser |
UserComponent | removeUserFromGroup | Convert | UserGroupApi | removeUserFromUserGroup |
UserComponent | removeWebsite | Convert | UserApi | changeUser |
UserComponent | setGroupUsers | Convert | UserGroupApi | setUsersForUserGroup |
UserComponent | setUserGroups | Convert | UserApi | setGroupsForUser |
ValidationComponent | createTermValidationResultFilter | Drop | ||
ValidationComponent | getDependencies | Drop | ||
ValidationComponent | getTermValidationInfo | Convert | ValidationApi | findValidationResults |
ValidationComponent | getTermValidationResults | Convert | ValidationApi | findValidationResults |
ValidationComponent | getValidationRule | Convert | AssetApi | getAsset |
ValidationComponent | setDependencies | Drop | ||
ValidationComponent | validate | Convert | ValidationApi | validate |
ValidationComponent | validateAsync | Convert | ValidationApi | validateInJob |
ValidationComponent | validateAsynchronous | Convert | ValidationApi | validateInJob |
ValidationComponent | validateScript | Drop | ||
VerbaliserComponent | verbalise | Drop | ||
ViewRightComponent | addViewRightForGroup | Convert | ViewPermissionApi | addViewPermission |
ViewRightComponent | addViewRightForUser | Convert | ViewPermissionApi | addViewPermission |
ViewRightComponent | createViewRightFilter | Drop | ||
ViewRightComponent | getResourcesInHierarchyWithViewRights | Drop | ||
ViewRightComponent | getViewRight | Convert | ViewPermissionApi | getViewPermission |
ViewRightComponent | getViewRights | Convert | ViewPermissionApi | findViewPermissions |
ViewRightComponent | isPermitted | Convert | ViewPermissionApi | |
ViewRightComponent | removeViewRight | Convert | ViewPermissionApi | removeViewPermission |
VocabularyComponent | addVocabulary | Convert | DomainApi | addDomain |
VocabularyComponent | change | Convert | DomainApi | changeDomain |
VocabularyComponent | changeCommunity | Convert | DomainApi | changeDomain |
VocabularyComponent | changeDescription | Convert | DomainApi | changeDomain |
VocabularyComponent | changeExcludedFromHyperlinking | Convert | DomainApi | changeDomain |
VocabularyComponent | changeName | Convert | DomainApi | changeDomain |
VocabularyComponent | changeNameAndUri | Convert | DomainApi | changeDomain |
VocabularyComponent | changeType | Convert | DomainApi | changeDomain |
VocabularyComponent | changeUri | Drop | ? | |
VocabularyComponent | exists | Convert | DomainApi | exists |
VocabularyComponent | findPossibleAttributeOrRelationTypes | Convert | AssignmentApi | getAvailableRelationTypes, getAvailableComplexRelationTypes, getAvailableAttributeTypes |
VocabularyComponent | findPossibleAttributeTypes | Convert | AssignmentApi | getAvailableAttributeTypes |
VocabularyComponent | findPossibleComplexRelationTypes | Convert | AssignmentApi | getAvailableComplexRelationTypes |
VocabularyComponent | findPossibleFactTypes | Convert | AssignmentApi | getAvailableRelationTypes |
VocabularyComponent | findPossibleObjectTypes | Convert | AssignmentApi | getAvailableAssetTypesForDomain |
VocabularyComponent | findPossibleRelationTypes | Convert | AssignmentApi | getAvailableRelationTypes |
VocabularyComponent | findPossibleStatuses | Drop | ||
VocabularyComponent | findVocabulariesContainingName | Convert | DomainApi | findDomains |
VocabularyComponent | getNonMetaVocabularies | Convert | DomainApi | findDomains |
VocabularyComponent | getNumberOfTerms | Convert | OutputModuleApi | |
VocabularyComponent | getTerms | Convert | AssetApi | findAssets |
VocabularyComponent | getVocabularies | Convert | DomainApi | findDomains |
VocabularyComponent | getVocabulariesByCommunity | Convert | DomainApi | findDomains |
VocabularyComponent | getVocabulariesByName | Convert | DomainApi | findDomains |
VocabularyComponent | getVocabulariesByType | Convert | DomainApi | findDomains |
VocabularyComponent | getVocabulariesByTypeAndCommunity | Convert | DomainApi | findDomains |
VocabularyComponent | getVocabulary | Convert | DomainApi | getDomain |
VocabularyComponent | getVocabularyByUri | Drop | ||
VocabularyComponent | getVocabularyCount | Convert | OutputModuleApi | |
VocabularyComponent | removeAsync | Convert | DomainApi | removeDomainInJob |
VocabularyComponent | removeVocabulariesJob | Convert | DomainApi | removeDomainsInJob |
VocabularyComponent | removeVocabulary | Convert | DomainApi | removeDomain |
VocabularyTypeComponent | addVocabularyType | Convert | DomainTypeApi | addDomainType |
VocabularyTypeComponent | addVocabularyTypeWithCustomUUID | Convert | DomainTypeApi | addDomainType |
VocabularyTypeComponent | getAllSpecializedVocabularyTypes | Convert | DomainTypeApi | findSubTypes |
VocabularyTypeComponent | findVocabularyTypeByName | Convert | DomainTypeApi | findDomainTypes |
VocabularyTypeComponent | findVocabularyTypesContainingSignifier | Convert | DomainTypeApi | findDomainTypes |
VocabularyTypeComponent | getAllSpecializedVocabularyTypes | Convert | DomainTypeApi | findSubTypes |
VocabularyTypeComponent | getCodeVocabularyType | Drop | ||
VocabularyTypeComponent | getGlossaryVocabularyType | Drop | ||
VocabularyTypeComponent | getVocabularyType | Convert | DomainTypeApi | getDomainType |
VocabularyTypeComponent | getVocabularyTypeHierarchy | Drop | ||
VocabularyTypeComponent | getVocabularyTypes | Convert | DomainTypeApi | findDomainTypes |
VocabularyTypeComponent | findPossibleConceptTypes | Drop | ||
WorkflowComponent | addAssignmentRule | Convert | WorkflowDefinitionApi | addAssetTypeAssignmentRule |
WorkflowComponent | cancelWorkflow | Convert | WorkflowInstanceApi | cancelWorkflowInstance |
WorkflowComponent | cancelWorkflowWithTask | Convert | WorkflowTaskApi | cancelWorkflowTask |
WorkflowComponent | change | Convert | WorkflowDefinitionApi | changeWorkflowDefinition |
WorkflowComponent | change | Convert | WorkflowDefinitionApi | changeWorkflowDefinition |
WorkflowComponent | changeAssignmentRule | Convert | WorkflowDefinitionApi | changeAssetTypeAssignmentRule |
WorkflowComponent | changeItemResourceType | Convert | WorkflowDefinitionApi | changeWorkflowDefinition |
WorkflowComponent | changeStartEvents | Convert | WorkflowDefinitionApi | changeWorkflowDefinition |
WorkflowComponent | completeTask | Convert | WorkflowTaskApi | completeWorkflowTasks |
WorkflowComponent | completeTaskForGuestUser | Convert | WorkflowTaskApi | completeWorkflowTasks |
WorkflowComponent | completeTasks | Convert | WorkflowTaskApi | completeWorkflowTasks |
WorkflowComponent | createTaskFilter | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | deploy | Convert | WorkflowDefinitionApi | deployWorkflowDefinition |
WorkflowComponent | findProcessInstances | Convert | WorkflowInstanceApi | findWorkflowInstances |
WorkflowComponent | findWorkflowDefinitionsByName | Convert | WorkflowDefinitionApi | findWorkflowDefinitions |
WorkflowComponent | getAllProcessInstances | Convert | WorkflowInstanceApi | findWorkflowInstances |
WorkflowComponent | getAllProcessInstances | Convert | WorkflowInstanceApi | findWorkflowInstances |
WorkflowComponent | getAllTasks | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAllTasks | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAllTasksForCommunity | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAllTasksForCommunity | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAllTasksForUser | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAllTasksForUser | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAllTasksForVocabulary | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAllTasksForVocabulary | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAssignedTasks | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAssignedTasks | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAssignedTasksForCommunity | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAssignedTasksForCommunity | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAssignedTasksForGuestUser | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAssignedTasksForGuestUser | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAssignedTasksForVocabulary | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getAssignedTasksForVocabulary | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getConfigurationStartFormData | Convert | WorkflowTaskApi | getConfigurationStartFormData |
WorkflowComponent | getGlobalWorkflowDefinitions | Convert | WorkflowDefinitionApi | findWorkflowDefinitions |
WorkflowComponent | getPossibleStartEvents | Convert | WorkflowDefinitionApi | getPossibleWorkflowStartEventTypes |
WorkflowComponent | getProcessInstances | Convert | WorkflowInstanceApi | findWorkflowInstances |
WorkflowComponent | getProcessInstancesByItem | Convert | WorkflowInstanceApi | findWorkflowInstances |
WorkflowComponent | getStartFormData | Convert | WorkflowTaskApi | getStartFormData |
WorkflowComponent | getTask | Convert | WorkflowTaskApi | getWorkflowTask |
WorkflowComponent | getTaskActivityFilter | Convert | WorkflowTaskApi | getFindActivitiesRequestForTask |
WorkflowComponent | getTaskActivityStream | Convert | ActivityStreamApi | getActivities |
WorkflowComponent | getTaskFormData | Convert | WorkflowTaskApi | getTaskFormData |
WorkflowComponent | getTasks | Convert | WorkflowTaskApi | findWorkflowTasks |
WorkflowComponent | getWorkflowDefinition | Convert | WorkflowDefinitionApi | getWorkflowDefinition |
WorkflowComponent | getWorkflowDefinitionByProcessId | Convert | WorkflowDefinitionApi | getWorkflowDefinitionByProcessId |
WorkflowComponent | getWorkflowDefinitions | Convert | WorkflowDefinitionApi | findWorkflowDefinitions |
WorkflowComponent | getWorkflowDefinitionsForCommunities | Convert | WorkflowDefinitionApi | findWorkflowDefinitions |
WorkflowComponent | getWorkflowDefinitionsForRepresentations | Convert | WorkflowDefinitionApi | findWorkflowDefinitions |
WorkflowComponent | getWorkflowDefinitionsForVocabularies | Convert | WorkflowDefinitionApi | findWorkflowDefinitions |
WorkflowComponent | getWorkflowDiagram | Convert | WorkflowDefinitionApi | getWorkflowDefinitionDiagram |
WorkflowComponent | getWorkflowInstanceDiagram | Convert | WorkflowInstanceApi | getWorkflowInstanceDiagram |
WorkflowComponent | getWorkflowXML | Convert | WorkflowDefinitionApi | getWorkflowDefinitionXML |
WorkflowComponent | getWorkflowXMLContent | Convert | WorkflowDefinitionApi | getWorkflowDefinitionXML |
WorkflowComponent | getWorkflowXMLName | Convert | WorkflowDefinitionApi | getWorkflowDefinitionXML |
WorkflowComponent | messageEventRecieved | Convert | WorkflowInstanceApi | messageEventReceived |
WorkflowComponent | reassignTask | Convert | WorkflowTaskApi | reassignTask |
WorkflowComponent | remove | Convert | WorkflowDefinitionApi | removeWorkflowDefinition |
WorkflowComponent | removeAssignmentRule | Convert | WorkflowDefinitionApi | removeAssignmentRule |
WorkflowComponent | removeAsync | Convert | WorkflowDefinitionApi | removeWorkflowDefinitionsInJob |
WorkflowComponent | setConfigurationVariables | Convert | WorkflowDefinitionApi | changeWorkflowDefinition |
WorkflowComponent | startWorkflow | Convert | WorkflowInstanceApi | startWorkflowInstances |
WorkflowComponent | startWorkflowForUser | Convert | WorkflowInstanceApi | startWorkflowInstances |
WorkflowComponent | startWorkflows | Convert | WorkflowInstanceApi | startWorkflowInstances |
WorkflowComponent | startWorkflowsAsychronously | Convert | WorkflowInstanceApi | startWorkflowInstancesInJob |
WorkflowComponent | startWorkflowsAsync | Convert | WorkflowInstanceApi | startWorkflowInstancesInJob |
Beans
Beans are information containers that are always present in every workflow. They can provide you with all important information about the context in which the workflow is running. You can access them in expressions where needed. For information about the API of the beans, see the Workflow beans section of the API documentation of your Collibra Platform environment.
API v2 in workflows
Collibra Platform has two API versions, v1 and v2. Use API v2 methods as v1 is deprecated.
To validate your code against API v2 in workflows, you have to enter the following value as Namespace in the Process section of the workflow properties: http://www.collibra.com/apiv2.
The value for the API v2 namespace has to be exactly as mentioned above. It is not a reachable URL.
If you use the API v2 namespace:
- You can no longer use API v1 calls in expressions and Groovy. These will be blocked and will result in failed workflows.
- All form types are API v2 compatible.
- The Java beans expose and use only UUIDs and API v2 objects.
You can find the API v2 delegates, listeners adn JavaBeans documentation in the API documentation of your environment. Go to
https://<your_collibra_url>/docs/index.html and click Workflow beans.
The direct link to this documentation is
https://<your_collibra_url>/docs/java-workflow-api/index.html.
You can use the Collibra Command Line Interface to test your workflows for deprecated API v1 content and get a report with v2 alternatives.
BusinessItem bean
- Available through item variable.
- This beans contains all the information about the current business item. For example,
${item.id}, ${item.type}
- The following methods are available:
Type Method and description UUID getCommunityId()
Retrieve the community ID of the business item, if present.
UUID getDomainId()
Retrieve the domain ID of the business item, if present.
UUID getId()
String getName()
Resource getResource()
ResourceType getType()
String getTypeName()
String getUrl()
Retrieve the url to be able to consult the business item directly in the application, if possible.
Users bean
- Available through the users variable
- Contains important functions for everything that is user related. For example:
${users.current}
retrieves the current user name.${users.getUserNamesWithError(stakeholderUserExpression)}
evaluates the given user expression and lists the usernames.
Event bean
- Available through the event variable
- Contains important event information in case the workflow was started on a event. Will be empty otherwise. For example.:
${event.taskId}
the original workflow task that triggered the event.${event.workflowDefinition.signifier}
the original workflow where the event was triggered.
Utility bean
- Available through the utility variable
- Contains utility functions like list conversion to CSV and vice versa. For example:
${utility.toList("Admin, user1")}
converts the given CSV string to a list.
Mail bean
- Available through the mail variable
- Contains some mail related functions. For example:
${mail.getEmailAddresses(candidateUserExpression)}
retrieve the emails for the users matching the given user expression.
Translation bean
- Available through the translation variable
- Contains functions relating to the usage of i18n translation mechanism. For example:
${translation.getMessage("client.defined.translation")}
returns the message for the "client.defined.message" key using the current locale.${translation.getDefaultLocale()}
returns the default locale.
Workflow execution logic - logging
It is possible to add custom logging information to your workflow using an expression. This can be useful when you want to have more information about a certain step that is failing. Using the correct logging levels also allows you to only make the logging visible when needed in case of an error. To log a statement you can use the loggerComponent
where you have four methods at your disposal, each of them logging on a different level:
- debug(String)
- info(String)
- warn(String)
- error(String)
A resulting expression would be something like ${loggerComponent.info("Going to the approval task")}
. You can add expressions using a listener on every BPMN element using different events which provides you with enough flexibility to cover a whole workflow. Changing the loglevels to make the logged statements visible can be done in the logging.xml file in the config directory of your user home directory. The line that you should add to change the default INFO level to another one looks like <logger name="com.collibra.dgc.core.component.impl.LoggerComponentImpl" level="DEBUG" />
.
.
Manual task
A task that is performed outside of any process engine or application. For example, a user must make a telephone call.
Attributes: General
Attribute | Description |
---|---|
Model ID | The unique identifier of the element within the process model. |
Name | The name of the element displayed in the diagram. |
Documentation | A description and any additional information about this element. |
Attributes: Execution
Attribute | Description |
---|---|
Asynchronous | When enabled, the activity starts as an asynchronous job. |
Execution listeners |
Allows you to invoke Java logic after certain events:
|
Skip expression |
Defines an expression which is evaluated before executing the task. If it evaluates to true, the task is skipped. You must opt-in to enable this feature by setting a process variable |
Is for compensation | Determines whether the activity can serve as a compensation for another activity. |
Attributes: Multi instance
Attribute | Description |
---|---|
Multi instance type |
Determines if multiple instances of this activity are created:
|
Collection |
Expression to set the loop collection for a multi-instance task. The number of instances is determined by the elements of a collection. For each element in the collection, a new instance is created. A common use case is to loop over lists created by multi-element subforms. For example, if you bound a subform to an array of invoice positions using the expression |
Element variable |
The name of the variable where the currently processed item from the loop collection is stored, for example You can access the element in the process through an expression, for example |
Element index variable |
The name of the variable where the index of the currently processed item from the loop collection is stored, for example, The index starts with 0 and increases with every element that is being looped through. You can access the index in the process through an expression, for example |
Cardinality | A number or an expression that evaluates to an integer, which controls the number of activity instances that are created. If the attribute Collection is empty, a new instance is created for every element of the list. With cardinality, you can overwrite this and only create a given number of instances. You can also use this attribute if you want to loop over an activity a given number of times without specifying a collection. |
Completion condition | A Boolean expression that when true cancels the remaining activity instances, stopping the loop, and produces a token. |
Attributes: Visual
Attribute | Description |
---|---|
Font color | The font color. |
Font size | The font size. |
Font style | The font style. |
Font weight | The font weight. |
Background color | The background color of the element in the diagram. |
Email task
A task used to send out emails.
Attributes: General
Attribute | Description |
---|---|
Model ID | The unique identifier of the element within the process model. |
Name | The name of the element displayed in the diagram. |
Documentation | A description and any additional information about this element. |
Attributes: Details
Attribute | Description |
---|---|
Email properties | Set email properties for the task. |
Attributes: Execution
Attribute | Description |
---|---|
Asynchronous | When enabled, the activity starts as an asynchronous job. |
Execution listeners |
Allows you to invoke Java logic after certain events:
|
Skip expression |
Defines an expression which is evaluated before executing the task. If it evaluates to true, the task is skipped. You must opt-in to enable this feature by setting a process variable |
Is for compensation | Determines whether the activity can serve as a compensation for another activity. |
Attributes: Multi instance
Attribute | Description |
---|---|
Multi instance type |
Determines if multiple instances of this activity are created:
|
Collection |
Expression to set the loop collection for a multi-instance task. The number of instances is determined by the elements of a collection. For each element in the collection, a new instance is created. A common use case is to loop over lists created by multi-element subforms. For example, if you bound a subform to an array of invoice positions using the expression |
Element variable |
The name of the variable where the currently processed item from the loop collection is stored, for example You can access the element in the process through an expression, for example |
Element index variable |
The name of the variable where the index of the currently processed item from the loop collection is stored, for example, The index starts with 0 and increases with every element that is being looped through. You can access the index in the process through an expression, for example |
Cardinality | A number or an expression that evaluates to an integer, which controls the number of activity instances that are created. If the attribute Collection is empty, a new instance is created for every element of the list. With cardinality, you can overwrite this and only create a given number of instances. You can also use this attribute if you want to loop over an activity a given number of times without specifying a collection. |
Completion condition | A Boolean expression that when true cancels the remaining activity instances, stopping the loop, and produces a token. |
Attributes: Visual
Attribute | Description |
---|---|
Font size | The font size of the element in the diagram. |
Font weight | The font weight of the element in the diagram. |
Font style | The font style of the element in the diagram. |
Font color | The font color of the element in the diagram. |
Background color | The background color of the element in the diagram. |
Border color | The border color of the element in the diagram. |
External API task
The external API task allows you to securely interact with external REST APIs.
When the workflow reaches an external API task, the CollibraEdge Session Manager sends the request defined in the task to the external API. The Session Manager handles the API call using the configured connection details and authentication together with the external API task details.
The response is captured and stored in a process variable. The name of the variable is:
<Model_ID>ResponseBody
, for exampleHttpTask_1ResponseBody
, if you have not specified a Response variable name.- The Response variable name defined in the external API task configuration.
The workflow continues to the next task even if an error response code is returned.
The external API task component treats all response status codes as successful, including 4xx
and 5xx
. To handle a particular response status code, use the Handle status codes attribute and place an ErrorBoundaryEvent with the appropriate error code, such as HTTP400 on the external API task component.
The workflow stops with an error at the instance level in case of an exception such as:
- Pre-validation:
- Unsupported Request Format
- Edge HTTP Connection Not Provided
- Edge HTTP Connection Not Found
- Request Sending Error
- Request Timeout
- Response Size Exceeded
- The request timeout is limited to 10 seconds.
- The external API task runs in asynchronous mode only.
- The maximum allowed response size is 100KB.
- The supported request and response formats are XML, JSON, and plain text.
- Retry is limited to 3 times, only if the HTTP request fails to be sent, since
4xx
and5xx
response codes are also considered successful.
Prerequisites
You have created an HTTP connection on an Edge site in Collibra.
Prerequisites
- You have created and installed an Edge site.
- You have a global role that has the System administration or Manage connections and capabilities global permission.
Steps
- Open an Edge site.
-
On the main toolbar, click
→
Settings.
The Collibra settings page opens. -
In the tab pane, click Edge.
The Sites tab opens and shows a table with an overview of the Edge sites. - In the Edge site overview, click the name of an Edge site.
The Edge site page appears.
-
On the main toolbar, click
- In the Connections section, click Create connection.
The Create connection page appears. - Select the HTTP connection:
- OAuth 2.0
- Basic Auth
- No Auth
Connect to an external REST API using OAuth 2.0 authentication with a Client Credentials grant.
Field Description Required Name The name of the Edge HTTP connection.
Use this value in the external API task as the Edge HTTP connection name property to identify the connection.
Yes
Description A description for the connection. No
Vault The vault where you store your credentials. No
Client ID The unique identifier assigned to each client application by the authorization server when the application is registered. Yes
Client secret The confidential string of characters used to authenticate the identity of the client application on the authorization server. Yes
Access token URI The endpoint on the authorization server where the client application can exchange an authorization grant for an access token, for example https://api.example.com/oauth/token. Yes
Scopes A list of space delimited specific permissions that the client application is requesting, for example read_data read_pii_data No
Host The protocol and domain name of the server, for example https://api.example.com. Yes
Test connection path The path for testing this connection with a
GET
call, for example /v1/health.You can only test a connection after saving the connection details.
No
Connect to an external REST API using basic access authentication.
Field Description Required Name The name of the Edge HTTP connection.
Use this value in the external API task as the Edge HTTP connection name property to identify the connection.
Yes
Description A description for the connection. No
Vault The vault where you store your credentials. No
Username The username for this connection or the vault parameters for the username. Yes
Password The password for this connection or the vault parameters for the password. Yes
Host The protocol and domain name of the server, for example https://api.example.com. Yes
Test connection path The path for testing this connection with a
GET
call, for example /v1/health.You can only test a connection after saving the connection details.
No
Connect to an external REST API that does not require authentication.
Field Description Required Name The name of the Edge HTTP connection.
Use this value in the external API task as the Edge HTTP connection name property to identify the connection.
Yes
Description A description for the connection. No
Vault The vault where you store your connection details. No
Host The protocol and domain name of the server, for example https://api.example.com or the vault parameters for the host. Yes
Test connection path The path for testing this connection with a
GET
call, for example /v1/health or the vault parameters for the path.You can only test a connection after saving the connection details.
No
- Click Create.
The connection is added to the Edge site.
Attributes: General
Attribute | Description |
---|---|
Model ID | The unique identifier of the element within the process model. |
Name | The name of the element displayed in the diagram. |
Documentation | A description and any additional information about this element. |
Attributes: Details
Attribute | Description |
---|---|
Edge HTTP connection name | The name of the Edge HTTP connection that contains the connection details and credentials. |
Request method | The method of the request: GET , POST , PUT , DELETE , or PATCH . |
Request headers | Line-separated HTTP request headers, such as Content-Type:application/json .Some headers are not supported and are removed.
See the list of unsupported headers
|
Request path | The path of the API endpoint. You can use expressions such as ${requestPath} or /api/endpoint/${expression} . |
Request body | The body of the request, such as a JSON file which can also contain expressions, for example: {'clientId': ${clientId}, 'name': ${name}} .The supported formats are: XML, JSON, and plain text. To avoid unexpected behavior, do not send a body with |
Fail status codes | A list of HTTP response status codes to fail the request and throw a runtime exception. You can set code ranges with an X, for example 400, 404, 5XX .The external API task component treats all response status codes as successful, including |
Handle status codes | A list of status codes for which the task will throw a BPMN error, which can be caught by a boundary error event. You can set code ranges with an X, for example 400, 404, 5XX .Status codes defined here take precedence if the same status codes are defined in the Fail status codes attribute. |
Response variable name | The name of the process variable to store the HTTP response. If not specified, the response is stored in the default variable The supported response formats are XML, JSON, and plain text. |
Save request variables | Determines whether all the runtime fields related to the request should be stored as process variables, such as header, path, encoding, or body. By default, only fields related to the response are stored as variables. See all variables
|
Save response details | Determines whether all the fields related to the response that are not the actual response in the body should be stored as process variables, including HTTP status, headers, and so on. By default, only the response body is stored as a variable. |
Result variable prefix | A prefix that should be prepended to all the variables for easier grouping, which is useful when there are different external API tasks. |
Save response as a transient variable | Determines whether the response variables should be stored as transient. If you used the Response variable name to store the response as a process instance variable and these responses tend to become large, you have the option to store this variable transiently. The transient variable is no longer available through |
Attributes: Execution
Attribute | Description |
---|---|
Exclusive | Determines whether the activity or process is run as an exclusive job. An exclusive job ensures that no other asynchronous exclusive activities within the same process are performed at the same time. This helps to prevent failing jobs in concurrent scenarios. |
Execution listeners | Allows you to invoke Java logic after certain events:
|
Skip expression | Defines an expression which is evaluated before executing the task. If it evaluates to true , the task is skipped.You must opt-in to enable this feature by setting a process variable |
Attributes: Visual
Attribute | Description |
---|---|
Font size | The font size of the element in the diagram. |
Font weight | The font weight of the element in the diagram. |
Font style | The font style of the element in the diagram. |
Font color | The font color of the element in the diagram. |
Background color | The background color of the element in the diagram. |
Border color | The border color of the element in the diagram. |
Collibra API task
The Collibra API task allows you to automate workflow actionsby leveraging Collibra REST APIs, even without dedicated Java APIs. This task handles authentication for seamless API integration.

Supported APIs
You can use the Collibra API to interact with all endpoints of Collibra APIs that have a request and response format which is XML, JSON, or plain text. You can only use this task to call APIs on the same environment and not, for example, to trigger an update from your production environment to a non-production environment. You cannot interact with Data Quality APIs.
Prerequisites
The Collibra API task is available with the update of production environments to version 2025.04. You can add this task in your workflows but you should only deploy an application containing it if the version of your target Collibra environment is 2025.04 or newer. Using a workflow with Collibra API tasks in 2025.03 or older environments results in execution errors.
Attributes: General
Attribute | Description |
---|---|
Model ID | The unique identifier of the element within the process model. |
Name | The name of the element displayed in the diagram. |
Documentation | A description and any additional information about this element. |
Attributes: Details
Attribute | Description |
---|---|
Request method | The method of the request: GET , POST , PUT , DELETE , or PATCH . |
Request path | The path of the API endpoint, for example /rest/2.0/application/info . You can use expressions such as ${requestPath} . The host is the base URL of your environment. |
Request body | The body of the request, such as a JSON file which can also contain expressions, for example: {'clientId': ${clientId}, 'name': ${name}} .The supported formats are: XML, JSON, and plain text. To avoid unexpected behavior, do not send a body with |
Fail status codes | A list of HTTP response status codes to fail the request and throw a runtime exception. You can set code ranges with an X, for example 400, 404, 5XX .The external API task component treats all response status codes as successful, including |
Handle status codes | A list of status codes for which the task will throw a BPMN error, which can be caught by a boundary error event. You can set code ranges with an X, for example 400, 404, 5XX .Status codes defined here take precedence if the same status codes are defined in the Fail status codes attribute. |
Response variable name | The name of the process variable to store the HTTP response. If not specified, the response is stored in the default variable The supported response formats are XML, JSON, and plain text. |
Save request variables | Determines whether all the runtime fields related to the request should be stored as process variables, such as header, path, encoding, or body. By default, only fields related to the response are stored as variables. See all variables
|
Save response details | Determines whether all the fields related to the response that are not the actual response in the body should be stored as process variables, including HTTP status, headers, and so on. By default, only the response body is stored as a variable. |
Result variable prefix | A prefix that should be prepended to all the variables for easier grouping, which is useful when there are different external API tasks. |
Attributes: Execution
Attribute | Description |
---|---|
Exclusive | Determines whether the activity or process is run as an exclusive job. An exclusive job ensures that no other asynchronous exclusive activities within the same process are performed at the same time. This helps to prevent failing jobs in concurrent scenarios. |
Skip expression | Defines an expression which is evaluated before executing the task. If it evaluates to true , the task is skipped.You must opt-in to enable this feature by setting a process variable |
Execution listeners | Allows you to invoke Java logic after certain events:
|
Attributes: Visual
Attribute | Description |
---|---|
Font size | The font size of the element in the diagram. |
Font weight | The font weight of the element in the diagram. |
Font style | The font style of the element in the diagram. |
Font color | The font color of the element in the diagram. |
Background color | The background color of the element in the diagram. |
Border color | The border color of the element in the diagram. |