package cn.axzo.workflow.core.service;

import cn.axzo.workflow.common.model.request.bpmn.RestBpmnProcessVariable;

import java.util.List;

public interface BpmnProcessVariableService {

    /**
     * 添加流程变量，如果流程变量已存在，会抛出异常
     *
     * @param executionId  流程实例id
     * @param restVariable 新增流程变量值
     */
    void createVariable(String executionId, RestBpmnProcessVariable restVariable);

    /**
     * 更新流程变量，如果流程变量不存在，会抛出异常
     *
     * @param executionId  流程实例id
     * @param restVariable 需要更新的流程变量内容
     */
    void updateVariable(String executionId, RestBpmnProcessVariable restVariable);

    /**
     * 批量更新流程变量，如果流程变量不存在，会抛出异常
     *
     * @param executionId   流程实例id
     * @param restVariables 需要更新的流程列表
     */
    void updateVariables(String executionId, List<RestBpmnProcessVariable> restVariables);

    /**
     * 删除流程变量
     *
     * @param executionId   流程实例id
     * @param variableNames 需要删除流程变量名称列表
     * @param scope         删除变量的范围
     */
    void deleteVariables(String executionId, List<String> variableNames, String scope);
}
