内置组件
算盘平台内置了很多组件,要说数量的话,4位数吧,不过算盘客户端还没有怎么多组件,因为客户端是即云端之后开发的,很多组件也在慢慢迁移中。show a picture:
除非是专业领域的人员,否则这些内置组件一般用不上,另外,即使你是专业领域的人员,比如搞机器学习、训练模型啥的,这里面内置的组件估计也不够用。意思就是:基于算盘平台开发 app,你一般都避免不了自己写符合自己功能逻辑的组件。
自定义组件
自定义组件逻辑上其实很简单,就是基于算盘提供的 sdk 在上面完成自己的功能需求。可以简单看下帮助文档,里面也提供了一些案例,包括各种 sdk 的使用文档。
下面实操一把,在【我的组件】里点击【新建组件】。
我们在这给组件设置了个参数,key:abc,value:123
指定该组件实际的启动命令,【组件目录】可以是绝对路径,根据自己情况选择,也可以是相对路径,相对路径是以算盘客户端安装的根目录下的components目录为基础路径,实际上内置的那些组件也是放在这里的。
保存完成后,一个组件就诞生了,可以指定组件程序启动时传入的参数,这里面有各种参数控件可供选择。拖动新建的组件【demo001】创建一个 app,启动后会发现【demo001】组件节点运行失败,也能看到给程序传入的参数(--abc '123'),一切正常,启动失败是因为指定了节点的启动程序为【demo001.exe】,然而我们还没有开发那个程序呢。
调试组件
为了更好地编写组件程序,算盘内置了开发工具——【vscode】组件,同时内置了不同开发语音的 demo 示例,这里我们以python语言为例。
具体如何使用 python sdk 以及 vscode 调试工具,可参考帮助文档。通过【调试】选项打开 vscode IDE,默认的示例即可调试。
假如你的组件代码调试完毕了,就可以出成品了,将代码打包成 exe(针对 windows 客户端)格式,放到对应的组件目录(在这为算盘安装目录/components/demo001/demo001.exe)下就大功告成了,一个组件就真正做完了。
具体的打包过程可参考官方帮助文档,也可参考github。本人在打包调试时,也遇到了一些坑,请注意仔细阅读文档中的一些关键内容。
from cmath import log
from suanpan.log import logger
from suanpan.simple_run import simple_run
from datetime import datetime
param1 = None
def initialize(init_context):
"""初始化,组件启动时执行一次"""
logger.info(f"initialize, {init_context}")
param1 = init_context.args['param_abc']
logger.info(f"传入的参数为: {param1}")
def run(context):
"""消息处理,每条消息都会执行"""
message = context.args
logger.info(f"message: {message}")
logger.info('run ...')
return f'Hello 算盘, {message.inputData1}!'
if __name__ == "__main__":
simple_run()
由于目前的 python sdk 特殊魔法,如果给组件设置参数的话,好像必须以param_还是param开头,所以本人修改了下 demo001 代码(见上)以及组件的参数名称(见下)。
修改过后,重新拖动【demo001】组件到模板中,修改下param_abc的值,例如:123。
启动 app,底下日志栏下可以看到输出信息:
最佳实践
一般,在算盘客户端开发组件时,大部分情况下都是直接拖动开发工具下【vscode】组件,直接在里面开发、调试代码,或用于简单场景应用的 demo 开发。当该组件代码调试无误后,后续可能无需改动或者分享给别人用时,可以再将代码打包制作成真正的算盘组件,存入到自己的组件库中以备后用或他用。