package com.norteksoft.product.api;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.norteksoft.mms.form.entity.FormControl;
import com.norteksoft.wf.base.exception.NotFoundEnabledWorkflowDefinitionException;
import com.norteksoft.wf.engine.client.FormFlowable;
/**
* 表单和字段的api
* @author wurong
*
*/
public interface WorkflowFormService {
/**
* 根据task查询流程实例表单ID.
* @param taskId 任务id
* @return 表单id
*/
public Long getFormIdByTask(Long taskId);
/**
* 根据task查询业务实体的ID
* @param taskId 任务id
* @return 业务实体的ID
*/
public Long getFormFlowableIdByTask(Long taskId);
/**
* 根据task查询业务实体的ID
* @param taskId 任务id
* @param companyId 公司id
* @return 业务实体的ID
*/
@Deprecated
public Long getFormFlowableIdByTask(Long taskId,Long companyId);
/**
* 流程还未启动时,根据流程名称查询第一环节的字段编辑权限,以JSON格式返回
* @param processCode
* @exception NotFoundEnabledWorkflowDefinitionException if not found started workflowDefinition by workflowDefinitionName
* @return json格式的字段编辑权限
*/
public String getFieldPermissionNotStarted(String processCode);
/**
* 流程还未启动时,根据流程名称查询第一环节的字段编辑权限,以JSON格式返回
* @param processCode
* @param version
* @return json格式的字段编辑权限
*/
public String getFieldPermissionNotStarted(String processCode, Integer version);
/**
* 流程还未启动时,根据流程名称查询第一环节的必填字段,以JSON格式返回
* @param processName
* @exception NotFoundEnabledWorkflowDefinitionException if not found started workflowDefinition by workflowDefinitionName
* @return 字段英文名称的集合
*/
public Collection<String> getNeedFillFieldsNotStarted(String processName);
/**
* 流程还未启动时,根据流程名称查询第一环节的禁止编辑的字段,以JSON格式返回
* @param processName
* @exception NotFoundEnabledWorkflowDefinitionException if not found started workflowDefinition by workflowDefinitionName
* @return 字段英文名称的集合
* @deprecated
* 替换为<code>Collection<String> getForbiddenFieldsNotStarted(String processName)</code>
*/
@Deprecated
public Collection<String> getforbiddenFieldsNotStarted(String processName);
/**
* 流程还未启动时,根据流程名称查询第一环节的禁止编辑的字段,以JSON格式返回
* @param processName
* @exception NotFoundEnabledWorkflowDefinitionException if not found started workflowDefinition by workflowDefinitionName
* @return 字段英文名称的集合
*/
public Collection<String> getForbiddenFieldsNotStarted(String processName);
/**
* 流程还未启动时,根据流程的definitionId查询第一环节的字段编辑权限,以JSON格式返回
* @param definitionId
* @return json格式的字段编辑权限
*/
public String getFieldPermissionNotStarted(Long definitionId);
/**
* 流程还未启动时,根据流程的definitionId查询第一环节的必填字段,以JSON格式返回
* @param definitionId
* @return 字段英文名称的集合
*/
public Collection<String> getNeedFillFieldsNotStarted(Long definitionId);
/**
* 流程还未启动时,根据流程的definitionId查询第一环节的禁止编辑的字段,以JSON格式返回
* @param definitionId
* @return 字段英文名称的集合
* @deprecated
* 替换为<code>Collection<String> getForbiddenFieldsNotStarted(Long definitionId)</code>
*/
@Deprecated
public Collection<String> getforbiddenFieldsNotStarted(Long definitionId);
/**
* 流程还未启动时,根据流程的definitionId查询第一环节的禁止编辑的字段,以JSON格式返回
* @param definitionId
* @return 字段英文名称的集合
*/
public Collection<String> getForbiddenFieldsNotStarted(Long definitionId);
/**
* 查询流程中环节的字段编辑权限
* @param taskId
* @return 返回json格式表示的字段可编辑状态信息
*/
public String getFieldPermission( Long taskId);
/**
* 查询流程中环节的必填的字段
* @param taskId
* @return 字段英文名称的集合
*/
public Collection<String> getNeedFillFields(Long taskId);
/**
* 查询流程中环节的禁止编辑的字段
* @param taskId 任务id
* @return 字段英文名称的集合
* @deprecated
* 替换为<code>Collection<String> getForbiddenFields(Long taskId)</code>
*/
@Deprecated
public Collection<String> getforbiddenFields(Long taskId);
/**
* 查询流程中环节的禁止编辑的字段
* @param taskId 任务id
* @return 字段英文名称的集合
*/
public Collection<String> getForbiddenFields(Long taskId);
/**
* 所有字段可编辑状态信息查询
* @param editable 当editable为false时 表示所有字段都禁止填写
* @return 返回json格式表示的字段可编辑状态信息
*/
public String getFieldPermission(boolean editable);
/**
* 自动填写实体,在转向办理页面时,根据本环节定义的自动填写字段,来自动填充实体
* @param entity 需要自动填写的实体
* @param wfDefinationId 流程定义ID
* @param taskId 任务id 如果该id为空,将填充第一个环节的值
*/
@Deprecated
public void autoFilledEntityBeforeByDefinitionId(FormFlowable entity,Long definitionId);
/**
* 修改为 {@link #fillEntityByDefinition(FormFlowable,String) </code>fillEntityByDefinition<code>}
* @param entity 需要自动填写的实体
* @param wfDefinationName 流程定义名称
* @exception NotFoundEnabledWorkflowDefinitionException if not found started workflowDefinition by workflowDefinitionName
*/
@Deprecated
public void autoFilledEntityBeforeByDefinationName(FormFlowable entity,String wfDefinationName);
/**
* 标准表单 流程还未启动时,自动填写实体,在转向办理页面时,根据本环节定义的自动填写字段,来自动填充实体
* @param entity 需要自动填写的实体
* @param wfDefinationCode 流程定义编码
* @exception NotFoundEnabledWorkflowDefinitionException if not found started workflowDefinition by workflowDefinitionName
*/
public void fillEntityByDefinition(FormFlowable entity,String wfDefinationCode);
/**
* 标准表单 流程还未启动时,自动填写实体,在转向办理页面时,根据本环节定义的自动填写字段,来自动填充实体
* @param entity 需要自动填写的实体
* @param wfDefinationCode 流程定义编码
* @param version 流程定义版本
*/
public void fillEntityByDefinition(FormFlowable entity,String wfDefinationCode, Integer version);
/**
* 自定义表单 流程还未启动时,自动填写实体,在转向办理页面时,根据本环节定义的自动填写字段,来自动填充实体
* @param data 需要自动填写的实体
* @param wfDefinationCode 流程定义编码
* @param Long... systemId 自定义表单发起的流程,ContextUtils.getSystemId()获得的系统id是mms的id,不是流程定义真正的id
* @exception NotFoundEnabledWorkflowDefinitionException if not found started workflowDefinition by workflowDefinitionName
*/
public void fillEntityByDefinition(Map data,String wfDefinationCode,Long... systemId);
/**
* 自定义表单 流程还未启动时,自动填写实体,在转向办理页面时,根据本环节定义的自动填写字段,来自动填充实体
* @param entity 需要自动填写的实体
* @param wfDefinationCode 流程定义编码
* @param version 流程定义版本
* @param Long... systemId 自定义表单发起的流程,ContextUtils.getSystemId()获得的系统id是mms的id,不是流程定义真正的id
*/
public void fillEntityByDefinition(Map data,String wfDefinationCode, Integer version,Long... systemId);
/**
* 修改为 {@link #fillEntityByTask(FormFlowable,Long) </code>fillEntityByTask<code>}
* @param entity 需要自动填写的实体 流程必须启动
* @param taskId 任务id
*/
@Deprecated
public void autoFilledEntityBefore(FormFlowable entity,Long taskId);
/**
* 标准表单 自动填写实体,在转向办理页面时,根据本环节定义的自动填写字段,来自动填充实体
* @param entity 需要自动填写的实体 流程必须启动
* @param taskId 任务id
*/
public void fillEntityByTask(FormFlowable entity,Long taskId);
/**
* 自定义表单 自动填写实体,在转向办理页面时,根据本环节定义的自动填写字段,来自动填充实体
* @param entity 需要自动填写的实体 流程必须启动
* @param taskId 任务id
*/
public void fillEntityByTask(Map data,Long taskId);
/**
* 返回表单打印权限
* @exception NotFoundEnabledWorkflowDefinitionException if not found started workflowDefinition by workflowDefinitionName
*/
@Deprecated
public boolean formPrintRightNotStarted(String workflowDefinitionName);
/**
* 返回表单打印权限
*/
@Deprecated
public boolean formPrintRightNotStarted(Long definitionId);
/**
* 返回表单打印权限
*/
@Deprecated
public boolean formPrintRight(Long taskId);
/**
* 根据formId查询所有表单字段
* @param formId
* @return 字段列表
*/
public List<FormControl> getFormControls(Long formId);
/**
* 自定义表单 保存数据
* @param parameter
* @return
*/
public Long saveData(Map<String,String[]> parameter);
}