All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.camunda.community.rest.adapter.ExternalTaskAdapter.kt Maven / Gradle / Ivy

package org.camunda.community.rest.adapter

import org.camunda.bpm.engine.externaltask.ExternalTask
import org.camunda.community.rest.client.model.ExternalTaskDto
import org.camunda.community.rest.impl.toDate
import java.util.*

/**
 * Implementation of Camunda API External Task backed by a bean.
 */
class ExternalTaskAdapter(
  private val externalTaskBean: ExternalTaskBean
) : ExternalTask {
  override fun getId() = externalTaskBean.id

  override fun getTopicName() = externalTaskBean.topicName

  override fun getWorkerId() = externalTaskBean.workerId

  override fun getLockExpirationTime() = externalTaskBean.lockExpirationTime

  override fun getProcessInstanceId() = externalTaskBean.processInstanceId

  override fun getExecutionId() = externalTaskBean.executionId

  override fun getActivityId() = externalTaskBean.activityId

  override fun getActivityInstanceId() = externalTaskBean.activityInstanceId

  override fun getProcessDefinitionId() = externalTaskBean.processDefinitionId

  override fun getProcessDefinitionKey() = externalTaskBean.processDefinitionKey

  override fun getProcessDefinitionVersionTag() = externalTaskBean.processDefinitionVersionTag

  override fun getRetries() = externalTaskBean.retries

  override fun getErrorMessage() = externalTaskBean.errorMessage
  override fun isSuspended() = externalTaskBean.suspended

  override fun getTenantId() = externalTaskBean.tenantId

  override fun getPriority() = externalTaskBean.priority

  override fun getBusinessKey() = externalTaskBean.businessKey

  override fun getExtensionProperties(): MutableMap {
    throw UnsupportedOperationException("Extension properties not supported via REST")
  }

  /**
   * @since 7.21
   */
  override fun getCreateTime(): Date {
    throw UnsupportedOperationException("Create time not supported via REST")
  }

}

/**
 * Backing bean for the external task.
 */
data class ExternalTaskBean(
  val id: String?,
  val topicName: String?,
  val workerId: String?,
  val lockExpirationTime: Date?,
  val processInstanceId: String?,
  val executionId: String?,
  val activityId: String?,
  val activityInstanceId: String?,
  val processDefinitionId: String?,
  val processDefinitionKey: String?,
  val processDefinitionVersionTag: String?,
  val tenantId: String?,
  val retries: Int?,
  val errorMessage: String?,
  val businessKey: String?,
  val priority: Long,
  val suspended: Boolean
) {

  companion object {
    /**
     * Constructs the bean from ExternalTask DTO.
     * @param dto: REST representation of the external task.
     */
    @JvmStatic
    fun fromDto(dto: ExternalTaskDto): ExternalTaskBean =
      ExternalTaskBean(
        id = dto.id,
        topicName = dto.topicName,
        workerId = dto.workerId,
        executionId = dto.executionId,
        activityId = dto.activityId,
        activityInstanceId = dto.activityInstanceId,
        processInstanceId = dto.processInstanceId,
        processDefinitionId = dto.processDefinitionId,
        processDefinitionKey = dto.processDefinitionKey,
        processDefinitionVersionTag = dto.processDefinitionVersionTag,
        tenantId = dto.tenantId,
        lockExpirationTime = dto.lockExpirationTime.toDate(),
        errorMessage = dto.errorMessage,
        retries = dto.retries,
        priority = dto.priority,
        businessKey = dto.businessKey,
        suspended = dto.suspended
      )
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy