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

import cn.axzo.workflow.common.enums.BpmnFlowNodeMode;
import cn.axzo.workflow.common.enums.BpmnFlowNodeType;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * 模型节点集合响应模型
 *
 * @author wangli
 * @since 2025-01-15 10:40
 */
@ApiModel("模型节点集合响应模型")
@Data
@Accessors(chain = true)
public class NodesByModelVO {

    /**
     * 节点 ID
     */
    @ApiModelProperty(value = "节点 ID")
    private String activityId;

    /**
     * 节点名称
     */
    @ApiModelProperty(value = "节点名称")
    private String activityName;

    /**
     * 是否支持发起人自选人
     */
    @ApiModelProperty(value = "是否支持发起自选人")
    private Boolean supportSpecify;

    /**
     * 节点的人
     */
    private List<BpmnTaskDelegateAssigner> assigners;
    /**
     * 节点模式（会、或签，普通节点）
     */
    @ApiModelProperty(value = "节点模式（会、或签，普通节点）")
    private BpmnFlowNodeMode nodeModel;

    /**
     * 节点类型, 只要是以下类型
     * <p>
     * NODE_STARTER("NODE_STARTER", "发起人节点"),
     * NODE_TASK("NODE_TASK", "审核节点"),
     * NODE_BUSINESS("NODE_BUSINESS", "业务节点"),
     * NODE_SIGN("NODE_SIGN", "签署确认节点"),
     * NODE_CARBON_COPY("NODE_CARBON_COPY", "抄送节点"),
     */
    @ApiModelProperty(value = "节点类型")
    private BpmnFlowNodeType nodeType;

    /**
     * 节点原始配置信息
     */
    @ApiModelProperty(value = "节点原始配置")
    private BpmnNodeConfigVO nodeConfig;
}
