1.HCM机器人所在位置
系统设置 → > 基础服务 →> 机器人设置
2.HCM机器人存在背景
HCM机器人可实现连式任务调度,在页面上想看到进度条的任务调度,想实现云函数的逻辑但是又不会写云函数,想仅仅通过配置即可达到云函数的效果,
3.HCM机器人 特点
特点:
1.其特点在于 任务有顺序执行, 单条链路执行不可分叉,不可同步
2.针对于单个任务 有高级用法 迭代模式/同步模式
3.开始执行前可预置一些参数 这些参数统一放在参数池context中 可供下次任务执行使用
4.每次任务执行可从 参数池获取 参数使用, 在任务结束时可放入新的参数
5.任务在特定的情况可跳过
6.任务报错可设置继续执行,可设置中断,报错信息可放到参数池,供下引用
7.参数池 包含哪些参数? 1.传入的params, 2.机器人脚本里面的context, 3.self.context (这里面可就丰富了 当前登录人信息,权限,公司信息,等等)
4.配置 说明
我们重点描述 脚本怎么配置
action 配置示例一
{ "actions": [{ "action": "SHORTCUT", "condition": "MULTI_ITEM", "label": "test1", "key": "test1", "options": { "name": "机器人脚本示例", #机器人名称用于确定使用的是那个机器人 "params": "=function(params){let _ret={items:params.selected.map(v=>v.id)};return _ret}" #params 将作为参数加入到参数池 } }] }
action 配置示例二
{ "key": "exec", "action": "CALC", "condition": "ITEM", "label": "test2", "api": "hcm.shortcut.exec", "params": "=(context)=>{return {shortcut_id:3,params:{'a':1}}}" #shortcut_id 作为确定是那个机器人也可以换成name,这样也可以确定机器人,内部的params将作为参数加入到参数池 }
参数名 | 类型 | 说明 |
---|---|---|
shortcut_id | int | HCM机器人ID |
params | dict | 传入参数 |
name | str | 机器人名称 |
stages | list | 如果不为None 那么只会执行这个列表内的任务 |
以上我们说明了 机器人在元数据的配置, 两个示例都可使用,那么接下来将对 机器人脚本进行说明
HCM机器人脚本示例
{ "stages": [ { "meta": { "url": "https://hr.cscec.com", "name": "private.company_init_item", "param": { "number": "DynamicScriptList" }, "token": "hcmecea7bc7b01a1c0828fbbe655b49927edb325515" }, "name": "取外部数据测试", "engine": "RemoteAPI" //外部调用引擎,必须在meta 里面有url 和token 两个参数 }, { "meta": { "name": "hcm.model.list", "param": { "model": "Employee" } }, "name": "获取员工列表", "engine": "OpenAPI", //执行内部接口调用 "condition": true, //有这个参数执行过程中将跳过,支持表达式 "output": { "context": { "employee_id": "=ret['list'][0]['id']" //每个人物执行结束返回的参数 为ret 可将返回的结果定义到参数池 }, "message": "='共{}条记录'.format(ret['count'])" }, "error":{ "ignore": true, //作为 该任务执行失败跳过的标志 不然整个链条停止 "context": { "hcm_model_list_error": "=err" //可以将本任务执行失败的失败信息放到 参数池里 } } }, { "meta": { "name": "hcm.model.get", "param": { "id_": "=employee_id", "model": "Employee" } }, "name": "检查员工名称", "engine": "OpenAPI", "output": { "message": "=ret['name']" } }, { "meta": { "name": "元数据", //调用的机器人名称 "param": {} }, "name": "调用机器人", "engine": "Shortcut" //启动另外机器人 }, { "meta": { "content": "按需调整", //发消息的内容 没有这个参数将发送默认的消息 "to": 2332323 //发送消息的人,没有这个参数时给当前登录人发消息 }, "name": "发送消息", "engine": "Message" //给别人发送消息 } ], "context": { "employee_id": 123 //将会加入到参数池 } }