SDK调用

可通过全局脚本调用VM算法开发平台SDK的接口,实现获取模块运行参数、回调算法底层运行数据、控制方案流程等功能。

本主题内容包含:

SDK回调

全局脚本默认在部分事件发生时触发SDK回调,获取对应的回调数据。

以下示例展示了模块输出结果数据和流程工作状态变化时触发的回调。

        /// <summary>
        /// SDK callback function 
        /// </summary>
        public override void ResultDataCallBack(IntPtr outputPlatformInfo, IntPtr puser)
        {
            base.ResultDataCallBack(outputPlatformInfo, puser);
            ImvsSdkPFDefine.IMVS_PF_OUTPUT_PLATFORM_INFO struInfo = (ImvsSdkPFDefine.IMVS_PF_OUTPUT_PLATFORM_INFO)Marshal.PtrToStructure(outputPlatformInfo, typeof(ImvsSdkPFDefine.IMVS_PF_OUTPUT_PLATFORM_INFO));
            switch (struInfo.nInfoType)
            {
                //Get module result
                //获取模块结果数据
                case (uint)ImvsSdkPFDefine.IMVS_CTRLC_OUTPUT_PlATFORM_INFO_TYPE.IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_MODULE_RESULT:
                    {
                        ImvsSdkPFDefine.IMVS_PF_MODULE_RESULT_INFO_LIST_P resultInfo = (ImvsSdkPFDefine.IMVS_PF_MODULE_RESULT_INFO_LIST_P)Marshal.PtrToStructure(struInfo.pData, typeof(ImvsSdkPFDefine.IMVS_PF_MODULE_RESULT_INFO_LIST_P));
                        break;
                    }
                ///Get process execute state
                //获取流程运行状态
                case (uint)ImvsSdkPFDefine.IMVS_CTRLC_OUTPUT_PlATFORM_INFO_TYPE.IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_WORK_STATE:
                    {
                        ImvsSdkPFDefine.IMVS_PF_MODULE_WORK_STAUS stWorkStatus = (ImvsSdkPFDefine.IMVS_PF_MODULE_WORK_STAUS)Marshal.PtrToStructure(struInfo.pData, typeof(ImvsSdkPFDefine.IMVS_PF_MODULE_WORK_STAUS));
                        break;
                    }
                default:
                    break;
            }
        }

可触发回调的事件和对应的回调数据类型,具体见下表。

表 1 事件与回调数据类型

事件

回调数据类型

模块输出结果

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_MODULE_RESULT = 0

单个流程连续执行开始

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_START_CONTINUOUSLY = 1

单个流程停止执行(的状态信息)

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_STOP = 2

流程工作状态变化

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_WORK_STATE = 3

模块心跳异常

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_HB_MODU = 4

服务心跳异常

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_HB_SERVER = 5

平台界面心跳异常

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_HB_CLIENT = 6

加密狗异常

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_DONGLE = 7

方案加载UI层文件

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_SOLUTION_LOAD_INTERFACE_FILE = 8

方案保存完成

IMVS_ENUM_CTRLC_OUTPUT_PlATFORM_INFO_SOLUTION_SAVE_END = 9

方案加载完成

IMVS_ENUM_CTRLC_OUTPUT_PlATFORM_INFO_SOLUTION_LOAD_END = 10

模块进程(单进程)心跳异常

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_HB_SP_PROXY = 11

全局脚本异常

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_GLOBALSCRIPT_CRASH = 12

方案加载时模块报错

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_LOAD_MODULE_WARN = 13

流程导出完成

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_EXPORT_PROCESS_END = 14

流程导入完成

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_IMPORT_PROCESS_END = 15

流程注册取消

IMVS_ENUM_CTRLC_OUTPUT_PLATFORM_INFO_PROCEDURE_UNREGISTER = 16

SDK接口调用

除可自动触发回调,全局脚本也支持调用VM算法开发平台SDK的接口。SDK接口详情请参见VM算法开发平台SDK开发指南