# 表单应用

# 导入

通过如下方式导入表单应用api

import fapp from "svr-api/fapp";

# 方法

/**
 * 表单应用相关API
 */

/**
 * 提交一个数据包
 * 
 * 内部不会判断权限(如提交到一个不对外公布的内部应用),仅会输出日志。调用者自行判断权限。
 * @param dataPackage 
 */
export function submitData(dataPackage: FAppDataPackageInfo): FAppDataStatus;

/**
 * 脚本启动一个流程,
 */
export function startFlow(args: {
	/**流程应用的id,或路径,相对的也可以,相对于脚本所在的目录 */
	resId: string,
	/** 流程实例id,调用者可以提前将数据写好写到表单的模型中,自己`INSTANCE_ID`字段添上一个uuid,当然也可以不
	 * 提前吧数据填好,而是通过data参数传递给此函数,此函数写表单数据
	 */
	instanceId?: string,
	/** 
	 * 是否自动完成第一个人工任务节点,例如在下发任务的时候通过脚本启动的流程可能不需要自动完成第一个人工任务节点,
	 * 如果通过脚本启动流程后第一个人工任务节点明确是自己的,那么此时可能就需要自动结束第一个人工任务节点
	 * 默认为false
	 */
	autoComplete?: boolean,
	/**
	 * 启动节点的执行用户,一般用户手动分配用户上,例如协同执法中手动分配转办的部门
	 */
	userIds?: string[],
	/**启动时附带传递的表单数据,简单的名值对形式,用于写入简单的表单数据给表单*/
	data?: JSONObject,
}): void;

/**
 * 批量启动启动流程
 */
export function startFlows(args: {
	/**流程应用的id,或路径,相对的也可以,相对于脚本所在的目录 */
	resId: string,
	/** 流程实例id */
	instanceIds: Array<string>,
}): void;

/**
 * 执行流程的审批、退回、否决等动作
 */
export function processFlow(args: {
	/**流程应用的id,或路径,相对的也可以,相对于脚本所在的目录 */
	resId: string,
	/** 流程实例id */
	instanceId: string,
	/** 提交数据时同时需要执行的操作,如审批等 */
	operate: FlowOperate;
	/** 流程节点ID */
	nodeId?: string;
	/** 节点的执行用户,用在脚本中,当前登录用户可能是管理员并不是节点的执行用户,但是可以帮助节点的执行用户处理任务 */
	nodeUserIds?: string[],
	/** 指定目标节点的执行用户,一般用在领导手动分配用户等操作上 */
	userIds?: string;
	/** 目标节点ID,在退回时可以指定退回到的节点 */
	targetNodeId?: string;
	/** 审批意见 */
	comment?: string,
	/**启动时附带传递的表单数据,简单的名值对形式,用于写入简单的表单数据给表单*/
	data?: JSONObject,
}): void;

# 对象



declare interface FAppBasicInfo {
	/**应用所在的路径 */
	appPath: string;

	/**应用的资源id */
	appResid: string;
}

declare interface FAppPublishArgs extends FAppBasicInfo {
	/** 发布说明 */
	comment: string;
}


declare interface FAppDownloadFormDataArgs extends FAppBasicInfo {

}

/**
 * 表单应用全局业务对象
 */
declare interface FormApp {

	/**
	 * 获取app路径
	 */
	getAppPath(): string;

}

/**
 * 流程脚本中描述流程任务信息。
 */
declare interface FlowScriptTaskInfo {

	/**
	 * 当前任务的节点ID
	 */
	nodeId: string;

	/**
	 * 流程节点描述
	 */
	nodeDesc: string;

	/**
	 * 任务类型
	 */
	type: FlowTaskType;

	/**
	 * 任务状态:claim待签收 active待处理 completed已完成。
	 */
	state: FlowTaskState;

	/**
	 * 任务结果:active没完成,completed完成,approve通过、retreat退回,reject否决、redo重做,retract撤回,claim签收、disclaim取消签收、delegate委托,undelegat取消委托,terminate终止,autocompleted自动完成
	 */
	result: FlowTaskResult;

	/**
	 * 任务来源:normal正常,retreat退回,retract撤回
	 */
	srcType: FlowTaskSrcType;

	/**
	 * 当前任务执行用户
	 */
	userId: string;
}

/**
 * 流程脚本中描述流程实例运行状态
 */
declare interface FlowScriptInstanceInfo {
	/**
	 * 流程状态,active正常运行 suspend挂起 finished正常结束 terminate强制结束  reject否决结束 error发生错误导致的结束。
	 */
	state: FlowInstanceState;
	/**
	 * 启动用户
	 */
	startUser: string;
	/**
	 * 流程开始时间
	 */
	startTime?: Date;
	/**
	 * 流程结束时间
	 */
	endTime?: Date;
	/**
	 * 流程预计结束的时间
	 */
	dueTime?: Date;
}

/**
 * 表单流程后端脚本运行时上下文信息。
 * 1. 提供一些获取流程状态方法。
 * 2. 提供一些表单应用脚本运行时上下文信息,如数据期、数据级次等。
 * 3. 提供一些操作表单数据的通用方法。
 * 4. 获取表单应用业务对象。
 */
declare interface FAppFlowOperationSession {

	/** 表单应用业务对象 */
	app: FormApp;

	/**
	 * 数据期
	 */
	dataPeriod?: string;

	/** 填报单位ID */
	orgId?: string;

	/** 明细ID */
	detailId?: string;

	/** 流程实例ID */
	instanceId?: string;

	/** 流程操作类型 */
	operate?: FlowOperate;

	/** 执行流程操作时,当前任务的上一个任务信息,可能为空。*/
	preTaskInfo?: FlowScriptTaskInfo;

	/** 执行流程操作时,当前任务信息 */
	currentTaskInfo?: FlowScriptTaskInfo;

	/**
	 * 流程实例运行状态信息
	 */
	instanceInfo?: FlowScriptInstanceInfo;

	/**
	 * 进行流程操作时,用户提交的数据
	 */
	data?: FAppDataPackageInfo;

	/**
	 * 当前任务是否被否决。为true时表示被否决,为false时表示未被否决。
	 */
	isRejected(): boolean;

	/**
	 * 当前任务是否审批通过。为true时表示审批通过,为false时表示还未审批或审批不通过。
	 */
	isApproved(): boolean;

	/**
	 * 获取当前流程实例状态。
	 * @returns 流程实例状态
	 * 
	 * 流程状态类型:
	 * * Active 正在运行
	 * * Suspend 暂停
	 * * Finished 正常结束
	 * * Terminate 被强制结束
	 * * Reject 被否决结束
	 * * Error 发生错误结束
	 */
	getInstanceState(): FlowInstanceState;

	/**
	 * 脚本更新表单应用数据
	 * 更新数据时数据粒度为脚本上下文的数据粒度,不可手动指定。
	 * @param data 需要更新的数据 格式为 {`模型名`:[`字段名`:`数据`]},其中模型名: 模型名称(假如是外部模型,则是引用名),字段名: 模型字段名称或物理字段名。
	 */
	updateData(data: { [modelName: string]: Array<{ [fieldName: string]: string | string | boolean }> }): void;

	/**
	 * 查询一个字段的数据。
	 * * 查询数据时数据粒度为脚本上下文的数据粒度,不可手动指定。
	 * @param modelName 模型名称(假如是外部模型,则是引用名)
	 * @param fieldName 模型字段名称或物理字段名
	 */
	getFieldValue(modelName: string, fieldName: string): string | string | boolean;

	/**
	 * 查询一个固定模型数据。返回一行数据。
	 * * 查询数据时数据粒度为脚本上下文的数据粒度,不可手动指定。
	 * @param modelName 模型名称(假如是外部模型,则是引用名)
	 */
	getModelData(modelName: string): { [fieldName: string]: string | string | boolean };

	/**
	 * 查询一个浮动模型数据。可能有多行数据。
	 * * 查询数据时数据粒度为脚本上下文的数据粒度,不可手动指定。
	 * @param modelName 模型名称(假如是外部模型,则是引用名)
	 */
	getModelDataRows(modelName: string): Array<{ [fieldName: string]: string | string | boolean }>;

}
是否有帮助?
0条评论
评论