import { ILogicLink } from "./logic-link";

/**
 * 逻辑节点接口
 *
 * @export
 * @interface ILogicNode
 */
export interface ILogicNode {

    /**
     * 代码标识
     *
     * @type {string}
     * @memberof ILogicNode
     */
    codeName: string;

    /**
     * 名称
     *
     * @type {string}
     * @memberof ILogicNode
     */
    name: string;

    /**
	 * 逻辑节点类型
	 * @description 值模式 [云实体逻辑处理节点类型（全部，包括界面逻辑）] {BEGIN：开始、 DEACTION：实体行为、 PREPAREPARAM：准备参数、 RESETPARAM：重置参数、 COPYPARAM：拷贝参数、 BINDPARAM：绑定参数、 APPENDPARAM：附加到数组参数、 SORTPARAM：排序数组参数、 RENEWPARAM：重新建立参数、 RAWSQLCALL：直接SQL调用、 RAWSQLANDLOOPCALL：直接SQL并循环调用、 RAWWEBCALL：直接Web调用、 STARTWF：启动流程、 CANCELWF：取消流程、 THROWEXCEPTION：抛出异常、 SFPLUGIN：系统服务插件、 RAWSFCODE：直接后台代码、 SYSLOGIC：系统逻辑处理、 PREPAREJSPARAM：准备参数、 VIEWCTRLINVOKE：视图部件调用、 RAWJSCODE：直接前台代码、 MSGBOX：消息弹窗、 PFPLUGIN：前端插件调用、 DEUIACTION：实体界面行为调用、 MAINSTATE：主状态、 DEDATASET：实体数据集、 DENOTIFY：实体通知、 DELOGIC：实体逻辑、 COMMIT：提交事务、 ROLLBACK：回滚事务、 DEBUGPARAM：调试逻辑参数、 DEDATAQUERY：实体数据查询、 DEPRINT：实体打印、 DEREPORT：实体报表、 DEDTSQUEUE：实体异步处理队列、 DEDATASYNC：实体数据同步、 DEDATAIMP：实体数据导入、 DEDATAEXP：实体数据导出、 DEDATAAUDIT：实体访问审计、 SUBSYSSAMETHOD：外部服务接口方法、 SYSDATASYNCAGENTOUT：系统数据同步代理输出、 SYSDBTABLEACTION：系统数据库表操作、 SYSBDTABLEACTION：系统大数据表操作、 SYSSEARCHDOCACTION：系统检索文档操作、 SYSBIREPORT：系统智能报表、 END：结束 }
	 * @type {( string | 'BEGIN' | 'DEACTION' | 'PREPAREPARAM' | 'RESETPARAM' | 'COPYPARAM' | 'BINDPARAM' | 'APPENDPARAM' | 'SORTPARAM' | 'RENEWPARAM' | 'RAWSQLCALL' | 'RAWSQLANDLOOPCALL' | 'RAWWEBCALL' | 'STARTWF' | 'CANCELWF' | 'THROWEXCEPTION' | 'SFPLUGIN' | 'RAWSFCODE' | 'SYSLOGIC' | 'PREPAREJSPARAM' | 'VIEWCTRLINVOKE' | 'RAWJSCODE' | 'MSGBOX' | 'PFPLUGIN' | 'DEUIACTION' | 'MAINSTATE' | 'DEDATASET' | 'DENOTIFY' | 'DELOGIC' | 'COMMIT' | 'ROLLBACK' | 'DEBUGPARAM' | 'DEDATAQUERY' | 'DEPRINT' | 'DEREPORT' | 'DEDTSQUEUE' | 'DEDATASYNC' | 'DEDATAIMP' | 'DEDATAEXP' | 'DEDATAAUDIT' | 'SUBSYSSAMETHOD' | 'SYSDATASYNCAGENTOUT' | 'SYSDBTABLEACTION' | 'SYSBDTABLEACTION' | 'SYSSEARCHDOCACTION' | 'SYSBIREPORT' | 'END')} 
	 */
	logicNodeType:  string | 'BEGIN' | 'DEACTION' | 'PREPAREPARAM' | 'RESETPARAM' | 'COPYPARAM' | 'BINDPARAM' | 'APPENDPARAM' | 'SORTPARAM' | 'RENEWPARAM' | 'RAWSQLCALL' | 'RAWSQLANDLOOPCALL' | 'RAWWEBCALL' | 'STARTWF' | 'CANCELWF' | 'THROWEXCEPTION' | 'SFPLUGIN' | 'RAWSFCODE' | 'SYSLOGIC' | 'PREPAREJSPARAM' | 'VIEWCTRLINVOKE' | 'RAWJSCODE' | 'MSGBOX' | 'PFPLUGIN' | 'DEUIACTION' | 'MAINSTATE' | 'DEDATASET' | 'DENOTIFY' | 'DELOGIC' | 'COMMIT' | 'ROLLBACK' | 'DEBUGPARAM' | 'DEDATAQUERY' | 'DEPRINT' | 'DEREPORT' | 'DEDTSQUEUE' | 'DEDATASYNC' | 'DEDATAIMP' | 'DEDATAEXP' | 'DEDATAAUDIT' | 'SUBSYSSAMETHOD' | 'SYSDATASYNCAGENTOUT' | 'SYSDBTABLEACTION' | 'SYSBDTABLEACTION' | 'SYSSEARCHDOCACTION' | 'SYSBIREPORT' | 'END';

    /**
     * 目标逻辑参数
     *
     * @type {string}
     * @memberof ILogicNode
     */
    dstParam?: string;

    /**
     * 目标参数属性
     *
     * @type {string}
     * @memberof ILogicNode
     */
    dstFieldName?: string;

    /**
     * 目标列表参数起始位置
     *
     * @type {number}
     * @memberof ILogicNode
     */
    dstIndex?: number;

    /**
     * 源逻辑参数
     *
     * @type {string}
     * @memberof ILogicNode
     */
    srcParam?: string;

    /**
     * 源属性名称
     *
     * @type {string}
     * @memberof ILogicNode
     */
    srcFieldName?: string;

    /**
     * 源列表参数起始位置
     *
     * @type {number}
     * @memberof ILogicNode
     */
    srcIndex?: number;

    /**
     * 直接值
     *
     * @type {string}
     * @memberof ILogicNode
     */
    srcValue?: string;

    /**
     * 源列表参数大小
     *
     * @type {number}
     * @memberof ILogicNode
     */
    srcSize?: number;

    /**
     * 逻辑节点连出连接集合
     *
     * @type {ILogicLink[]}
     * @memberof ILogicNode
     */
    logicLinks?: ILogicLink[];

    /**
	 * 返回值类型
	 * @description 值模式 [云实体处理处理返回值类型] {NONEVALUE：无值（NONE）、 NULLVALUE：空值（NULL）、 SRCVALUE：直接值、 LOGICPARAM：逻辑参数对象、 LOGICPARAMFIELD：逻辑参数属性、 BREAK：跳出循环（BREAK） }
	 * @type {( string | 'NONEVALUE' | 'NULLVALUE' | 'SRCVALUE' | 'LOGICPARAM' | 'LOGICPARAMFIELD' | 'BREAK')} 
	 */
	returnType?:  string | 'NONEVALUE' | 'NULLVALUE' | 'SRCVALUE' | 'LOGICPARAM' | 'LOGICPARAMFIELD' | 'BREAK';

    /**
     * 返回参数
     *
     * @type {string}
     * @memberof ILogicNode
     */
    returnParam?: string;

    /**
     * 返回直接值
     *
     * @type {string}
     * @memberof ILogicNode
     */
    returnRawValue?: string;
}