package cn.axzo.workflow.common.model.request.bpmn;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;

/**
 * 流程定义中的字段管理
 *
 * @author wangli
 * @since 2023/11/13 13:53
 */
@ApiModel("JSON 版本的 BPMN 协议模型中的字段管理")
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class BpmnFieldConf implements Serializable {

    /**
     * 字段的 code
     */
    @ApiModelProperty(value = "字段的 code", example = "fieldCode", notes = "字段的 code 必须唯一")
    @NotBlank(message = "字段的 code 不能为空")
    private String code;

    /**
     * 字段的名称
     */
    @ApiModelProperty(value = "字段的名称", example = "字段名称")
    @NotBlank(message = "字段的名称不能为空")
    private String name;

    /**
     * 字段的类型 string, number, radio, checkbox
     */
    @ApiModelProperty(value = "字段的类型", example = "string", notes = "string, number, radio, checkbox")
    @NotBlank(message = "字段的类型不能为空")
    private String type;

    /**
     * 单选或多选的下拉选择框中的数据, 只有单选或多选的时候才会有值,并且内部的属性不应该为空
     */
    @ApiModelProperty(value = "单选或多选的下拉选择框中的数据")
    private List<BpmnFieldOptionConf> options;

}
