# 自定义机器人
# 一、概述
通过自定义机器人机制,IT人员可将企业特定业务功能封装成标准化组件,业务人员通过简单配置即可在流程中调用,显著扩展业务流程自动化范围。
# 二、内置机器人 vs 自定义机器人
| 类型 | 适用场景 | 使用复杂度 | 维护方 | 
|---|---|---|---|
| 内置机器人 | 通用场景(短信/邮件等) | 低 | 平台提供 | 
| 自定义机器人 | 企业特有业务系统对接 | 中 | 企业IT团队 | 
# 三、机器人开发指南(IT人员)
# 3.1 开发步骤
创建DLL项目
// UserDll/MeetingRoom.cs public class MeetingRoom { // 简单参数示例 public string Reserve(string roomNo, DateTime dateFrom, DateTime dateTo) { // 调用会议室系统API } // 复杂结构参数示例 public string Reserve2(MeetingRoomReserve meetingRoomReserve) { // meetingRoomReserve为自定义类 } } public class MeetingRoomReserve{ public string RoomNo { get; set; } public DateTime DateFrom { get; set; } public DateTime DateTo { get; set; } }编译部署
- 编译生成DLL文件
 - 放置到BPM服务器
/UserDll/目录 
# 3.2 调试方法
- Visual Studio中选择【调试】→【附加到进程】
 - 选择BPM服务进程
 - 触发流程执行时即可断点调试
 
# 四、机器人使用指南(业务人员)
# 4.1 调用步骤
- 在流程中添加【调用DLL】节点
 - 配置参数:
- DLL文件:选择UserDll
 - 类名:MeetingRoom
 - 方法:Reserve
 
 
 ▲ 业务人员调用DLL
- 参数映射:
表单.会议室ID --> 参数.roomNo 表单.开始时间 --> 参数.dateFrom 表单.结束时间 --> 参数.dateTo 
 ▲ 参数映射
# 4.2 参数类型支持
| 类型 | 配置方式 | 示例 | 
|---|---|---|
| 简单类型 | 直接字段映射 | string, DateTime | 
| 复杂类型 | 自动展开属性结构 | MeetingRoomReserve类 | 
# 五、最佳实践
- 命名规范:建议采用
[业务系统] + [功能]的命名方式(如MeetingRoom_Booking) - 错误处理:在DLL内部实现完备的错误处理和日志记录
 - 版本管理:更新DLL时保持向后兼容
 
# 六、常见问题
Q:业务人员看不到新部署的机器人?
A:检查DLL是否放置到正确目录,且BPM服务有读取权限
Q:复杂类型参数如何映射?
A:系统会自动展开类属性,只需逐属性映射即可
Q:机器人执行失败如何排查?
A:联系IT人员查看BPM服务日志和机器人调试日志