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
intHCM机器人ID
params
dict传入参数
namestr机器人名称
stages
list如果不为None 那么只会执行这个列表内的任务


以上我们说明了 机器人在元数据的配置, 两个示例都可使用,那么接下来将对 机器人脚本进行说明

HCM机器人脚本示例一
{
    "return": {
        "x_mobile": "=x_mobile"
    },
    "stages": [{
        "meta": {
            "url": "https://lizhongjie.hcmcloud.cn",
            "name": "hcm.model.list",
            "param": {
                "model": "Employee",
                "filter_dict": {
                    "name": "李中杰"
                }
            },
            "token": "hcmf214e3bb9830f574a89e52c476b58c7c56cade3d"
        },
        "name": "取外部数据",
        "engine": "RemoteAPI",
        "output": {
            "context": {
                "x_ID": "=ret['list'][0]['id']"
            },
            "message": "='共{}条记录'.format(ret['count'])"
        }
    }, {
        "meta": {
            "name": "hcm.model.get",
            "param": {
                "id_": "=x_ID",
                "model": "Employee"
            }
        },
        "name": "查看本系统是否有该数据",
        "error": {
            "ignore": true,
            "context": {
                "is_error": true,
                "get_mobile_error": "=err"
            }
        },
        "engine": "OpenAPI",
        "output": {
            "context": {
                "is_error": false,
                "employee_id": "=ret['list'][0]['id']"
            },
            "message": "='共{}条记录'.format(ret['count'])"
        }
    }, {
        "meta": {
            "name": "hcm.model.create",
            "param": {
                "info": {
                    "name": "机器人测试日志",
                    "type": 2,
                    "content": {
                        "get_mobile_error": "=str(get_mobile_error)"
                    }
                },
                "model": "SyncOuterRecord"
            }
        },
        "name": "记录日志",
        "engine": "OpenAPI",
        "output": {},
        "condition": "=is_error"
    }, {
        "meta": {
            "name": "HCM机器人迭代模式",
            "param": {}
        },
        "name": "调用其他机器人",
        "engine": "Shortcut"
    }, {
        "meta": {
            "context": "本次HCM机器人演示成功"
        },
        "name": "发送消息",
        "engine": "Message"
    }],
    "context": {}
}  
HCM机器人示例2 迭代模式
{
    "stages": [{
        "meta": {
            "name": "hcm.model.list",
            "param": {
                "model": "common_basic_item_data.语种",
                "page_size": 999
            }
        },
        "name": "部署元数据",
        "engine": "OpenAPI",
        "output": {
            "context": {
                "basic_item_info": "=ret['list']"
            },
            "message": "='共获取{}条数据'.format(len(ret['list']))"
        }
    }, {
        "meta": {
            "name": "hcm.model.edit",
            "param": {
                "id_": "=ITER_V['id']",
                "info": {
                    "description": "='第二次,{}'.format(ITER_V['name'])"
                },
                "model": "common_basic_item_data.语种"
            }
        },
        "name": "循环编辑代码项",
        "engine": "OpenAPI",
        "output": {
            "message": "='编辑代码项{}完成'.format(ret['name'])"
        },
        "iterator": "=basic_item_info"
    }]
}
HCM机器人示例三 异步模式
{
    "stages": [{
        "meta": {
            "name": "hcm.model.list",
            "param": {
                "model": "common_basic_item_data.语种",
                "page_size": 999
            }
        },
        "name": "部署元数据",
        "engine": "OpenAPI",
        "output": {
            "context": {
                "basic_item_info": "=ret['list']"
            },
            "message": "='共获取{}条数据'.format(len(ret['list']))"
        }
    }, {
        "meta": {
            "name": "hcm.model.edit",
            "param": {
                "id_": "=ITER_V['id']",
                "info": {
                    "description": "='第一次{}'.format(ITER_V['name'])"
                },
                "model": "common_basic_item_data.语种"
            }
        },
        "name": "循环编辑代码项",
        "queue": "syn",
        "engine": "OpenAPI",
        "output": {
            "message": "='编辑代码项{}完成'.format(ret['name'])"
        },
        "parallel": "=basic_item_info"
    }]
}
  • 无标签