一、使用流程图
外部用户实现某业务过程通常会经过以下几个阶段:

二、使用步骤说明
1.业务分析
该过程目前为可选环节,平台提供了表格化分析工具,进行用户语言数据生成。详细内容请参考使用指南。
2.业务界面编缉
用户语言本身提供了通用IDE,用户可以直接使用,也可以自行在语言内核的基础上开发用户操作界面,如菜谱创作App等。 编缉完成后后保存为"编译源文件",源文件经过本地编译或云编译后生成用户语言的可执行文件,一个二进制格式文件,后缀名为“.ulc”。无论采用何种业务编缉工具,均应包含以下几个环节:

3.编译器编译环境搭建与使用
编译分为本地编译和云编译两种,具体使用方法:
- 本地编译分为三个步骤:1). 下载对应版本的sdk ;2). 将编译器动态库添加到项目中;3). 使用动态加载的方式进行接口调用 详情可以参考“本地编译3.0”。
- 云编译,是用户语言提供的云端通用编译引擎。开发者可以通过调用云编译的API进行同步编译。 详情可以参考“云编译3.0”。
编译环境具体使用方法:

4.虚拟机运行环境搭建与使用
虚拟机执行分为本地执行和云执行两种:
- 本地执行虚拟机以动态库加头文件的形式提供给用户,用户需提供相应平台的C语言编译工具。主要分为三个步骤:1). 下载对应版本的sdk;2). 将虚拟机动态库和头文件添加到项目中;3). 直接接口调用的方式调用接口 详情可以参考“本地执行3.0”。使用流程如下:

- 云执行,是用户语言的云端通用执行引擎。开发者可以使用云执行的API进行实例管理,服务发布管理及运行用户语言可执行文件。详情可以参考“云执行3.0”。
5.上线发布
用户语言与调用的服务一起上线发布,如语言内核有更新,则独立维护。
三、API参考
本地编译器
序号 | 接口名称 | 接口描述 | 版本 |
---|---|---|---|
1 | Compile | 本地编译 | V3.01 |
云编译
序号 | 接口名称 | 接口描述 | 版本 |
---|---|---|---|
1 | 云编译-编译管理(公共)-编译 | POST: /lancp-compiler-cloud/public/v3/compile/ga-synchronous | V3.01 |
本地执行器
- 虚拟机提供的接口
序号 | 接口名称 | 接口描述 | 版本 |
---|---|---|---|
1 | common_reg_init | 注册虚拟机 | V3.01 |
2 | create_vm | 创建虚拟机 | V3.01 |
3 | common_vm_run | 虚拟机运行 | V3.01 |
4 | common_vm_free | 虚拟机释放内存 | V3.01 |
5 | getVar | 获取变量数据 | V3.01 |
6 | setVar | 更新变量数据 | V3.01 |
7 | common_vm_tick | 用于捕获定时器信息 | V3.01 |
8 | getAppinfoOffset | 根据虚拟机来获取应用扩展区的偏移量 | V3.01 |
9 | getAppinfoOffset_ex | 根据应用数据源来获取应用扩展区的偏移量 | V3.01 |
10 | getVersion | 获取虚拟机版本 | V3.01 |
11 | u_coreglobal_version | 获取虚拟机core层的版本 | V3.01 |
- 虚拟机提供的通用数据转换接口
序号 | 接口名称 | 接口描述 | 版本 |
---|---|---|---|
12 | getObjectType | 获取通用数据类型 | V3.01 |
13 | objectToChar | 通用数据类型object转换成char数据类型 | V3.01 |
14 | charToObject | char数据类型转换成通用数据类型object | V3.01 |
15 | objectToShort | 通用数据类型object转换成short数据类型 | V3.01 |
16 | shortToObject | short数据类型转换成通用数据类型object | V3.01 |
17 | objectToInt | 通用数据类型object转换成int数据类型 | V3.01 |
18 | intToobject | Int数据类型转换成通用数据类型object | V3.01 |
19 | objectToString | 通用数据类型object转换成string数据类型 | V3.01 |
20 | stringToObject | string数据类型转换成通用数据类型object | V3.01 |
21 | objectToFloat | 通用数据类型object转换成float数据类型 | V3.01 |
22 | floatToObject | float数据类型转换成通用数据类型object | V3.01 |
23 | objectFree | 数据的内存释放 | V3.01 |
- 应用系统必须实现的接口
序号 | 接口名称 | 接口描述 | 版本 |
---|---|---|---|
24 | ComAppFunc | 应用系统函数入口 | V3.01 |
25 | noticeVar | 通知应用设置变量 | V3.01 |
26 | UGetVMVar | 获取时间点变量的数据 | V3.01 |
27 | getNoticeVar | 在使用数据外部代理的情况下,通知应用是否需要更新变量 | V3.01 |
28 | UAppFrustrum | 执行并行运行的回调 | V3.01 |
29 | readBin | 从bin文件指定的地址读取一定数量的字节 | V3.01 |
30 | UTaskNew | 创建任务 | V3.01 |
31 | UMutexNew | 创建互斥锁 | V3.01 |
32 | UMutexLock | 加锁互斥锁 | V3.01 |
33 | UMutexUnlock | 解锁互斥锁 | V3.01 |
34 | UMutexFree | 释放互斥锁 | V3.01 |
35 | UGetHostTime | 获取主机当前时间 | V3.01 |
36 | UMalloc | 动态内存申请 | V3.01 |
37 | UFree | 释放动态内存 | V3.01 |
- 应用系统可选实现的服务接口
序号 | 接口名称 | 接口描述 | 版本 |
---|---|---|---|
38 | tableCBExist | 外部数据表是否存在 | V3.01 |
39 | tableCBGet | 通过外部数据表获取数据 | V3.01 |
40 | tableCBSet | 通过外部数据表更新数据 | V3.01 |
41 | tableCBFree | 释放外部数据表的数据缓存 | V3.01 |
42 | logCB | 日志输出 | V3.01 |
云执行
序号 | 接口名称 | 接口描述 | 版本 |
---|---|---|---|
1 | (云执行-实例管理(用户)-创建实例 | POST: /lvmp/instance/create | V3.01 |
2 | (云执行-实例管理(用户)-查询实例 | GET: /lvmp/instance/find | V3.01 |
3 | 云执行-实例管理(用户)-分页查询bin文件对应的实例 | GET: /lvmp/instance/query | V3.01 |
4 | 云执行-实例管理(用户)-运行实例 | POST: /lvmp/instance/run | V3.01 |
5 | 云执行-实例管理(用户)-销毁实例 | POST: /lvmp/instance/delete | V3.01 |
6 | 云执行-实例管理(用户)-查询实例的指定变量值 | GET: /lvmp/instance/getVar | V3.01 |
7 | 云执行-实例管理(用户)-查询指定实例的运行日志 | GET: /lvmp/instance/getLog | V3.01 |
8 | 云执行-发布管理(管理员)-服务上架 | POST: /lvmp/serviceAdmin/publish | V3.01 |
9 | 云执行-发布管理(管理员)-服务下架 | POST: /lvmp/serviceAdmin/revoke | V3.01 |
10 | 云执行-发布管理(开发者)-服务下架 | POST: /lvmp/serviceDeveloper/revoke | V3.01 |
11 | 云执行-发布管理(用户)-服务上架 | POST: /lvmp/serviceUser/publish | V3.01 |
12 | 云执行-发布管理(用户)-服务下架 | POST: /lvmp/serviceUser/revoke | V3.01 |
13 | 云执行-服务运行管理(用户)-创建服务运行实例 | POST: /lvmp/serviceUser/instance/create | V3.01 |
14 | 云执行-服务运行管理(用户)-运行动态定制流服务实例 | POST: /lvmp/serviceUser/dynamicFlow/run | V3.01 |
15 | 云执行-服务运行管理(用户)-运行静态定制流服务实例 | POST: /lvmp/serviceUser/flowService/run | V3.01 |
16 | 云执行-消息触发管理(用户)-发送消息 | POST: /lvmp/util/sendMessage | V3.01 |
17 | bin文件管理-bin文件管理(用户)-下载bin文件 | GET: /binfile/v3/bin-file | V3.01 |
18 | bin文件管理-bin文件管理(用户)-上传bin文件 | POST: /binfile/v3/bin-file | V3.01 |
四、云与部署
用户语言内核不仅提供基于不同硬件操作系统的编译器和执行虚拟机,还可以为能够访问公共网络的应用提供云编译和云执行服务,具体使用流程如下:

五、最佳实践
应用环境
用户语言自2014年发布以来一直在不断地探索,并成功在智能家居、智慧厨房、电力防误领域,分别支持windows,linux,ucos,android等多种OS平台,具体应用信息如下:

海关锁业务
智能家居业务
电子菜谱业务
编译执行模拟器
六、产品版本
用户语言 V3.00 (已发布)
本地编译器包
- 通用编译器内核 V3.00 数据层、预处理器、词法分析器、语法分析、语义检查、代码生成器 。
- 餐饮语义分析器 V3.00 菜谱类型、口味、食材、餐饮业务处理。
- 家居语义分析器 V3.00 智能家居语句分析,特殊元素解析。
- 更新家居语义分析器V3.00.03.01,家居IDE使用。
- 更新餐饮语义分析器V3.00.02.04,充菜谱任务信息。
- 本地编译器-智能家居版 V3.00.03.07,修复设备类型为“虚拟设备”时,适配器没有处理值描述。
- 本地编译器-V3.00.04.00,优化ULC字节码打包逻辑,有效减小ULC文件体积。
- 本地编译器-V3.00.05.01,修复同一语句中不同类的对象使用同名函数时函数定义识别错误的问题。
本地执行器包
- 执行器内核 V3.00 状态机、函数、数据、变量、事件、内存管理,多操作系统适配等。
- 餐饮适配C++ V3.00 菜谱实例任务管理、业务函数调度、日志管理。
- 家居适配 V3.00 智能家居术语适配维护,性能优化和bug修复。
- 家居适配 V3.00 虚拟机代码空间优化。
- 电脑钥匙适配 V3.00 电脑钥匙业务适配,运行资源优化。
- 本地执行器-智能家居版 V3.0.1.1,针对家居优化代码空间。
- 本地执行器-智慧餐饮版 V3.0.35,提供接口,从执行文件应用扩展区获取菜谱任务信息。
- 本地执行器-智慧餐饮版 V3.0.36
1.添加预加载相关接口(降低预加载200个菜谱资源消耗)
2.增加菜谱可执行文件的正确性校验
云执行 V3.00
- 云执行平台 虚拟机管理、执行实例、消息队列、缓存管理、bin文件管理。