Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Component

Description

taskana-adapter

The adapter. Implements the sync algorithm and defines the service provider SPIs and APIs for

- SystemConnector (connects to the external system)

- TaskanaConnector (connects to taskana)

These connectors are plugged in at runtime via SPI mechanisms


taskana-adapter-sample

contains Application main class and properties for taskana-adapter. Creates a Spring-Boot executable.

taskana-adapter-wildfly-example

contains Application main class and properties for taskana-adapter. Creates a war file that can be deployed to JBoss or Wildfly.

taskana-adapter-camunda-system-connector

Sample implementation of SystemConnector SPI. Connects to a camunda systems system via camunda's REST API

taskana-adapter-taskana-connector

Sample implementation of TaskanaConnector SPI. Connects to one taskana system via taskana's java api which accesses the database directly.

taskana-adapter-camunda-listener

Contains a TaskListener, ParseListener, ParseListenerProcessEnginePlugin and OutboxSchemaCreator as client-side components of the camunda-system-connector

taskana-adapter-camunda-outbox-rest

An outbox REST-Service which allows the adapter to query events from the outbox tables, implemented using JAX-RS.

taskana-adapter-camunda-outbox-rest-spring-boot-starter

SpringBoot-Starter in case the REST-Service is used within a SpringBoot-Application

taskana-adapter-camunda-spring-boot-sample

SpringBoot-Application containg the adapter with the sample camunda-system-connector implementation

taskana-adapter-camunda-wildfly-example

Example that can be deployed on Wildfly and contains the adapter with the sample camunda-system-connector implementation

taskana-adapter-camunda-listener-example

Example Process-Application that can be deployed to camunda

camunda-outbox-example-boot

SpringBoot-Application containing camunda and the outbox-rest

taskana-adapter-camunda-spring-boot-test

SpringBoot-Application containing camunda, the adapter and the outbox REST-Service to test a complete scenario with automated integration tests


Notes


  1. Duplicate tasks
    Method retrieveNewReferencedTasksAndCreateCorrespondingTaskanaTasks periodically queries the external system, to retrieve tasks that were created in a specific interval.
    To determine this interval, transactional behavior must be taken into account. Due to transactions, a task that was created at a specific instant may become visible only when the transaction is committed.
    In the extreme case this is the maximum transaction lifetime. As a consequence, the specified interval is not between the last query time and now, but between (the last query time – maximum transaction lifetime) and now.
    Using default values to illustrate: Queries are performed every 10 seconds. The default maximum transaction lifetime is 120 seconds. This is, the adapter has to retrieve all tasks that were created in the last 130 seconds.
    In the result, the query returns many tasks that have already been processed by the adapter. To cope with this problem, the adapter uses the TASKS table of its database to keep track of the tasks that are already handled.
    Tasks that are not found in this table are added to the table and a corresponding taskana task is started. Tasks that are found in the table are ignored, they are duplicates.

  2. Variables
    When the adapter finds a referenced task for which a TASKANA task must be started, it retrieves the variables of the referenced task's process. These variables are stored in the custom attributes of the corresponding taskana task in a HashMap. The names of the variables, prefixed with “camunda:” (e.g. camunda:someVariable) will be the keys. The prefix is used to determine which custom attributes of the TASKANA task should later be played back to camunda . The values are of type String that contain the Json representations of the variables.

  3. Workbaskets
    Task / workbasket mapping has been kept to a minimum. If the adapter creates a taskana task, it puts it into the workbasket of the referenced task’s assignee. If this workbasket doesn't exist, it is created (together with some workbasket_access_items). If the task has no assignee, it is put into a default workbasket with name DEFAULT_WORKBASKET.