package cn.axzo.workflow.common.model.response.bpmn.process;


import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
import cn.axzo.workflow.common.enums.WorkspaceType;
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonConf;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.Map;

/**
 * 流程实例详情响应模型
 */
@ApiModel("流程实例详情响应模型")
@Data
public class BpmnProcessInstanceVO {

    /**
     * 流程实例的编号
     */
    @ApiModelProperty(value = "流程实例的编号", example = "1024")
    private String id;

    /**
     * 流程名称
     */
    @ApiModelProperty(value = "流程名称", example = "芋道")
    private String name;

    /**
     * 流程分类
     */
    @ApiModelProperty(value = "流程分类", notes = "是审批业务的 value", example = "1")
    private String category;

    /**
     * 流程分类名称
     */
    @ApiModelProperty(value = "流程分类名称", notes = "是审批业务的 label", example = "在场管理")
    private String categoryDesc;

    /**
     * 审核状态
     */
    @ApiModelProperty(value = "审核状态(PROCESSING:审核中,APPROVED:已通过,REJECTED:已驳回,CANCELLED:已撤回)", example = "APPROVED")
    private BpmnProcessInstanceResultEnum result;

    /**
     * 提交时间
     */
    @ApiModelProperty(value = "提交时间")
    private Date createAt;

    /**
     * 结束时间
     */
    @ApiModelProperty(value = "结束时间")
    private Date endTime;

    /**
     * 流程定义 KEY
     */
    @ApiModelProperty(value = "流程定义 KEY")
    private String processDefinitionKey;

    /**
     * 流程定义 ID
     */
    @ApiModelProperty(value = "流程定义 ID")
    private String processDefinitionId;

    /**
     * 业务的唯一标识
     */
    @ApiModelProperty(value = "业务的唯一标识", example = "1", notes = "例如说，请假申请的编号")
    private String businessKey;

    /**
     * 流程变量
     */
    @ApiModelProperty(value = "流程变量")
    private Map<String, Object> variables;

    /**
     * 发起人标识
     */
    @ApiModelProperty("发起人标识")
    private String startUserId;

    /**
     * 流程最终状态
     */
    @ApiModelProperty(value = "流程最终状态")
    private String businessStatus;

    /**
     * 流程模型全局兜底的按钮配置信息
     */
    @ApiModelProperty(value = "流程模型全局兜底的按钮配置信息")
    private BpmnButtonConf defaultButtonConf;

    /**
     * 发起人信息
     */
    @ApiModelProperty(value = "发起人信息")
    private BpmnTaskDelegateAssigner initiator;

    /**
     * 租户 ID
     */
    @ApiModelProperty(value = "租户 ID")
    private String tenantId;

    /**
     * 当前待处理的节点标识
     * <p>
     * 如果是运行中的实例,有值
     * 否则没值
     */
    @ApiModelProperty(value = "当前待处理的节点标识")
    private String currentDefinitionKey;

    /**
     * 数据产生版本
     */
    @ApiModelProperty(value = "数据产生版本")
    private String workflowEngineVersion;

    /**
     * 实例的工作台类型
     */
    @ApiModelProperty(value = "实例的工作台类型")
    private WorkspaceType workspaceType;

}
