李书钦, 马时来
(北方工业大学 信息中心,北京 100144)
移动办公,也称为“3A办公”,即办公人员可以在任何时间(Anytime)、任何地点(Anywhere)处理与业务相关的任何事情(Anything),移动化的办公模式,可以让办公人员摆脱时间和空间的束缚。
为满足无纸化办公需要,我校搭建协同办公系统,完成了学校、各部门公文流转、行政审批流程的搭建,于2017年1月正式上线,上线以来,最高在线并发数达70人左右,随着广大教工办公习惯的改变,在线人数将稳步上升。目前,我校协同办公系统在校内网络可以通过电脑端访问,但是,无法满足移动端的访问需求,这是亟待解决的问题。
微信企业号的出现,为高校移动办公平台构建带来了曙光,微信企业号是微信平台为企业用户提供的移动应用入口。它帮助企业建立员工、上下游供应链与企业应用系统间的连接。用户还可以通过微信企业号接口,建立企业号同企业应用间的连接,实现更多丰富且个性化的企业移动应用[2]。
截至2017年3月31日,微信和WeChat的合并月活跃帐户数达9.38亿个[3]。微信企业号因其庞大的活跃用户群、开放的API接口、实名认证等优势,成为移动办公平台的首选载体。因此,拟基于微信企业号,设计并实现我校移动办公平台,用户只需关注微信企业号,进行实名认证,即可在微信中使用协同办公系统主要功能,大幅提高我校教师获取协同办公系统信息的速度,提高访问效率。
我校的协同办公系统采用B/S架构,实现了全校教职工的协同工作、公文管理、表单管理、文档管理、会议管理、通知公告等功能,并与学校信息门户和数据中心整合,打破信息孤岛,实现了统一登录、自动同步用户信息的办公自动化管理。
我校移动办公平台以微信企业号为载体,实现了移动端的直观展示,用户可以通过微信企业号直接访问学校协同办公系统,方便随时随地获取信息,同时结合微信的消息推送功能,将协同办公系统消息有针对性的推送,为用户提供定制化服务。经过对各业务部门的详细需求调研,结合微信企业号的轻量级、便捷化等功能特点,北方工业大学移动办公平台的功能模块架构如图1所示。
在移动办公平台的学校公文模块,点击进入学校公文应用,可以看到最近时间的学校公文,以列表形式显示。点击某一条具体的公文,进入到公文详情页面,可以查看公文信息,包括公文标题、发布部门、发布时间、发布范围、公文PDF正文等信息。对于每一条公文,会记录用户的阅读量,并且用户可以对公文列表进行查询,查询条件包括标题、发布人、发布时间等。
图1 基于微信企业号的移动办公平台功能模块架构图
在移动办公平台的通知公告模块,点击进入通知公告应用,可以看到最近时间的通知公告,以列表形式显示。点击某一条通知公告,进入到公告详情页面,可以查看公告信息,包括公告标题、发布部门、发布时间、发布范围、公告正文等信息。对于每一条通知公告,会记录用户的阅读量,并且用户可以查看历史通知公告。
待办事项模块主要是对待办协同、待办公文等事项进行流程处理、审批,点击进入待办事项应用,可以看到最近时间的待办协同、待办公文,以列表形式显示。点击某一条待办事项,进入到待办事项详情页面,可以进行“已阅”、“同意”和“不同意”操作,同时可以输入处理意见。点击“已阅”或“同意”操作,流程进入到下一步,点击“不同意操作”,可以选择流程终止或回退到上一步。同时,协同办公系统的待办消息会实时推送到微信企业号,方便用户在微信端实时查看处理。
点击进入会议管理应用,可以看到待开会议和已开会议,以列表形式显示。点击某一条待开或已开会议,进入到会议详情页面,可以查看会议详细信息,包括会议发起者、会议地点、会议开始时间、会议结束时间、参会人员、会议内容等信息。同时,可以查看会议的附件,并对是否参会进行回执,协同办公系统的待开会议会实时推送到微信企业号,方便用户在微信端实时接收处理。
针对传统移动应用需要用户下载、安装、更新、升级等弊端,拟采用与“微信企业号”对接的方法,将协同办公系统主要功能整合到微信企业号中,实现用户在移动端随时获取自己需要的信息。
移动办公平台与微信企业号的对接主要有两种方式:普通模式和回调模式。本系统采用回调模式,用户向移动办公平台发起请求并返回消息,回调模式数据采用可扩展标记语言(Extensible Markup Language , XML)格式,数据使用可变长度字符编码(8 bit Unicode Transformation Format, UTF-8),并对传输的所有数据用高级加密标准(Advanced Encryption Standard, AES)方式进行加密处理。采用回调模式,移动办公平台与微信企业号对接分为以下3步:
(1) 开启应用回调模式。在微信企业号后台开启回调模式,需要设置3个参数:统一资源定位符(Uniform Resource Locator , URL)、令牌(Token)和EncodingAESKey。其中,URL是移动办公平台的访问地址,需要设定为域名。Token用于生成微信企业号签名,长度为3~32个字符[4]。EncodingAESKey用于移动办公平台与微信企业号传送消息体的加密,为AES密钥的Base64编码,长度为43字符。
(2) 验证URL。在第1步设置完成后,微信企业号以GET请求方式验证URL,该请求传输4个参数,分别为msg_signature、timestamp、nonce、echostr,移动办公平台通过上述参数对请求进行验证,若确定该请求来自微信企业号,则移动办公平台对数据做解密处理,并将echostr参数返回至微信企业号,URL验证完成。
(3) 使用回调模式。完成上述步骤可使用回调模式,回调地址与验证的URL相同,移动办公平台以POST方式回调数据,传输格式为XML数据,包含ToUserName、AgentID、Encrypt 3项数据元素[5]。为保证数据安全,数据经过AES加密,移动办公平台对接收到的数据通过加解密库验证,若验证通过,则提取上述XML中的加密信息,得到原始数据[6]。移动办公平台获取原始数据后,分析用户在微信企业号中具体的点击事件,并针对不同的业务请求做相应处理。
移动办公平台的主要目的,是实现用户与协同办公系统之间的互动,在微信企业号中,借助其回调模式和开放接口可实现完整的消息接收与响应。采用微信企业号的回调模式,移动办公平台可通过回调URL接收用户回复信息,在接收到点击事件后,微信企业号可发送响应消息,实现用户与移动办公平台的互动。
移动办公平台可以接收普通消息和事件消息,普通消息是用户向微信企业号发送的消息,包括文本、语音、图片、视频等类型[7],普通消息会推送到移动办公平台对应的URL上,以POST方式进行推送,推送的消息格式如下:
〈xml〉
〈ToUserName〉〈![CDATA[toUser]]〉
〈/ToUserName〉
〈FromUserName〉〈![CDATA[fromUser]]〉
〈/FromUserName〉
〈CreateTlme〉 25627721542〈/CreateTime〉
〈MsgType〉〈! [CDATA[text]]〉〈/MsgType〉
〈Contentx! [CDATA[nihao,weixin]]〉〈/Content〉
〈MsgId〉aaa111aaa222bbb〈yMsgId〉
〈AgentID〉1〈/AgentID〉
〈/xml〉
事件消息指用户在微信企业号上的点击行为,比如点击菜单、关注、取消关注等事件[8,9]。事件消息同样以POST方式推送到移动办公平台对应的URL上,推送的XML格式数据如下:
〈xml〉
〈ToUserName〉![CDATA[toUser]]〉〈/ToUserName〉
〈FromUserName〉〈![CDATA[FromUser]]〉
〈/FromUserName〉
〈Createrime〉25627721542〈/CreateTime〉
〈MsgType〉〈![CDATA[event]]〉〈/MsgType〉
〈Event〉〈[CDATA[CLICK]]〉〈/Event〉
〈EventKey〉〈 [CDATA[EVENTKEY]]〉
〈/EventKey〉
〈AgentID〉1〈/AgentID〉
〈/xml〉
移动办公平台接收到用户消息,需要根据不同的消息类型,做相应的消息响应和业务逻辑处理,并将处理结果返回给相应用户,消息响应的处理流程如下:
(1) 移动办公平台接收到消息请求,获取msg_signature、timestamp、nonce、echostr等相关参数,然后进行解密校验,验证消息来源是否正确。
(2) 消息来源验证通过,解密用户请求数据,获取消息明文数据。
(3) 根据消息明文中的事件类型和数据调用对应的业务接口,进行业务逻辑处理,将处理结果封装成指定的XML格式数据。
(4) 加密上述XML数据并再次封装为XML格式,返回给微信企业号,用户获取消息响应。移动办公平台消息处理流程如图2所示。
图2 移动办公平台消息处理流程图
通过微信企业号对接协同办公系统的表现层状态转移(Representational State Transfer , REST)接口,可实现移动办公平台的主要功能,实现学校公文、通知公告、待办事项、会议管理等功能在移动端的展现。REST 近年来已经成为最主要的万维网(World Wide Web, Web)服务设计模式,REST用URL来描述资源,如人员、部门、协同、公文,使用超文本传输协议(HyperText Transfer Protocol , HTTP)的GET、POST、PUT和DELETE来描述资源的获取、创建、修改和删除。下面以移动办公平台会议管理功能为例,阐述微信企业号调用协同办公系统REST接口的过程,会议管理功能实现流程图如图3所示。
图3 移动办公平台会议管理功能实现流程图
(1) 获取Token。微信企业号调用协同办公系统的REST远程接口,首先要进行身份验证获取Token,所有服务都必须提供合法的令牌ID方可调用[10]。通过POST方式获取Token的HTTP请求如下所示:
POST http://127.0.0.1/seeyon/rest/token HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json
{"userName":"rest","password":"123456"}
请求成功返回JSON字符串,失败则返回-1,如下所示:
成功:{"id": "013a2a1e-a0b0-4f66-b533-da0563f89c6c"}
失败:{"id": "-1"}
(2) 传递Token。在获取Token后,调用所有的REST接口必须传递Token,如果不传递Token或传递错误的Token,将返回HttpStatus.SC_UNAUTHORIZED 401错误及错误信息[11]。Token的生命周期为15 min,如果15 min无调用,Token将失效,失效以后调用返回401,提示"Invalid token, please authenticate again"。在HTTP请求的header中,传递token的方法如下:
GET http://127.0.0.1/seeyon/rest/xxx HTTP/1.1
Host: 127.0.0.1
Accept: application/json
Content-Type: application/json;charset=UTF-8
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36
Cookie: JSESSIONID=
5079B8DC8A4BD52E48FBA4DE78C2A43C
token: xxxxxxx
也可在请求参数中传递Token,方法如下:
http://127.0.0.1/seeyon/rest/orgMember/123?token=xxxxxxx
(3) 获取待开和已开会议列表。微信企业号可以通过登录人员ID获取待开会议列表和已开会议列表,获取待开会议列表的方法为:http://127.0.0.1/seeyon/rest/meeting/pendings/{personId}?token= xxxxxxx,获取已开会议列表的方法为:http://127.0.0.1/seeyon/rest/meeting/dones/{personId}?token= xxxxxxx。正常情况下,返回JSON格式的会议列表信息,如果人员ID错误或者Token错误,返回JSON格式的信息为空,JSON格式的会议列表对象如下所示:
{
"id" : -469251275467767767,
"replyState" : 2,
"canView" : false,
"title" : "本科招生委员会会议",
"createUserId" : 5070546758591204268,
"createUserName" : "test",
"createDate" : 1493356647000,
"beginDate" : 1501219800000,
"endDate" : 1501223400000,
"hasAttsFlag" : true,
"bodyType" : "HTML",
"state" : 30,
"summaryState" : 0,
"proxy" : false,
"proxyId" : null,
"proxyName" : null,
"new" : false
}
(4) 获取会议详细信息。在获取待开会议列表和已开会议列表后,可以根据会议ID来获取会议详细信息,包括会议发起者、会议地点、会议开始时间、会议结束时间、参会人员、会议内容等信息。根据会议ID获取会议信息的方法为:http://127.0.0.1/seeyon/rest/meeting/{id}?token= xxxxxxx。正常情况下,返回JSON格式的会议信息,如果会议ID错误或者Token错误,返回JSON格式的信息为空。
以北方工业大学移动办公平台为例,用户初次使用移动办公平台,首先需要关注“北方工业大学”微信企业号,进行实名认证,认证通过后,进入微信企业号主界面,然后,点击“OA办公”,进入移动办公平台主界面,同时,移动办公平台的待办消息可直接推送到微信企业号,如图4所示。
图4 北方工业大学移动办公平台主界面
点击“待办协同”,可以查看待办事项,包括待办列表、待办详情,可以进行“已阅”、“同意”和“不同意”操作,同时可以输入处理意见,具体如图5所示。
图5 移动办公平台待办事项主界面
点击“待开会议”和“已开会议”,可以查看待开会议列表、已开会议列表、待开会议详情、已开会议详情等,具体如图6所示。
图6 移动办公平台会议管理主界面
经过以上测试,用户通过微信企业号访问移动办公平台,获取自己关心的协同办公系统信息。在教师、管理人员之间建立良好的沟通渠道,提高办公自动化系统的时效性与针对性,并且访问速度和响应效率大幅提高,充分说明该设计方案可靠、有效。北方工业大学移动办公平台一经推出,就得到大量教工的关注,用户总体满意度较高。
微信企业号具有轻量化、易于扩展等优点,能够满足移动办公的需求[12-15]。本文通过研究微信企业号的调用模式、消息机制、管理接口,并与学校协同办公系统实际需求相结合,实现接口调用和消息响应。该平台贴近学校协同办公系统实际业务需求,使全校教工能够随时随地通过移动端访问学校协同办公系统,实时获取协同办公系统消息,有力提升了学校办公效率和学校信息化水平,为学校智慧校园建设注入了新动力,增加了新内涵。下一步,解决消息推送的适宜度和智能化问题,优化消息推送策略,完善高校移动办公平台,为高校师生提供更加智慧的服务。