本系列所有文章请访问:概述
微信机器人的开发过程
jxTMS的微信机器人就单纯的开发来说是很简单的:
1、开通微信机器人,详见添加微信功能中的【开通机器人】一节
2、对需要添加到微信机器人中的操作用wx进行修饰,详见添加微信功能中的【添加微信功能】一节
3、如果这些操作需要输入,则为其添加输入提示,详见交互式输入中的【交互式输入的定义】一节
4、做本地测试
5、将代码发布到生产服务器上,热机刷新即hotReload即可
微信机器人对web界面的复用
为降低开发两套ui的工作量,对于微信机器人的开发我们希望尽可能的从web界面中复用。好在微信机器人在大多数情况下都只是web界面的一个子集,所以大大降低了维护并协同两套ui和业务代码的工作量。
web界面的复用我们通过引用来实现,如:
//用于微信机器人的界面
web wxPage type div;
/* wxPage的定义*/
//仅用于web界面的其它信息
web otherInfo type div;
/* otherInfo的定义*/
//用于web的界面由wxPage和其它信息两部分组成
web webPage type div;
web webPageDiv1 parent webPage ref wxPage width=900;
web webPageDiv2 parent webPage ref otherInfo width=900;
即我们为微信机器人专门定义了一个web界面,然后webUI引用这个界面同时再添加其它信息。
针对代码的复用可以调用jxTMS用java实现的call函数:
Object call(IDBop db, context ctx,String capaname, String funcname, Object... params)
其中:
- capaname:目标函数所在功能点的名字,形如:空间名.模块名
- funcname:函数名
- params:传递给目标函数的变参列表
如,我们在资产管理的asset.main中定义一个改变资产状态的操作函数::
@myModule.event('cmd', 'changeAssetState')
def changeAssetState(self, db, ctx):
......其它针对web界面的工作
self._changeAssetState(db,ctx)
#修改资产状态的实际代码
def _changeAssetState(self, db, ctx):
......
而在asset.wx模块中我们可以如下调用:
self.call(db,ctx,'asset.main','_changeAssetState')
jxTMS会临时将asset.main功能点的输入输出重定向到asset.wx模块中,这样就是可在asset.main的_changeAssetState函数正常用self.getInput函数从微信机器人处读取用户的输入、用self.setOutput函数通过微信机器人发送到企业微信中显示给用户。