package cn.axzo.workflow.common.model.response.mq;

import cn.axzo.workflow.common.enums.ProcessMessagePushEventEnum;
import cn.axzo.workflow.common.model.request.BpmnApproveConf;
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonMetaInfo;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 消息推送 MQ payload 模型
 *
 * @author wangli
 * @since 2023/11/22 15:06
 */
@Data
@Accessors(chain = true)
public class MessagePushDTO implements Serializable {

    /**
     * 推送的消息的类型
     */
    private ProcessMessagePushEventEnum type;

    /**
     * 流程实例 ID
     */
    private String processInstanceId;

    /**
     * 流程归属的租户 ID
     */
    private String adscriptionTenantId;

    /**
     * 业务 ID
     */
    private String processDefinitionKey;

    /**
     * 流程任务 ID
     */
    private String taskId;

    /**
     * 消息模板 ID
     */
    private String templateId;

    /**
     * 消息的接收人
     */
    private List<BpmnTaskDelegateAssigner> receivePersons;

    /**
     * 可用的变量集合
     */
    private Map<String, Object> variables;

    /**
     * 可用按钮集合
     */
    private List<BpmnButtonMetaInfo> buttons;

    /**
     * 流程高级配置
     */
    private BpmnApproveConf processApproveConf;

    /**
     * 节点电子签开关
     */
    private Boolean activitySignature;
    /**
     * 催办专用属性，催办时的终端类型（管理端、工人端）
     */
    private String terminalType;

}
