几个月前购买了某公司的若干台自助打印机系统,拖了这么长时间一直没有上线运行,原因在于我的需求改变了这些自助打印系统传统的工作模式,中间尽管花了很多精力,但我认为这些改变是值得花精力去做的。
传统的自助打印机系统工作模式
公司一般都提供一整套的方案,包括自助打印机终端机+管理系统(云端或者服务器),管理系统负责存储打印数据、配置终端机(纸盒配置)、管理用户权限等。终端机上用户刷卡、输密码登录之后,从管理系统里拉取数据,本地生成报表,打印之后记录在管理系统里。这种模式存在几个问题:
- 报表是需要在系统实施阶段就确定好的
- 管理系统里的数据一般以视图或者数据同步备份的方式从其他业务系统里获取
- 用户打印权限需要在自助打印系统的管理系统里配置
解释一下这里的问题:我目前无法确定将来打印多少种报表,但肯定将来会越来越多种类,我不希望每多一种报表都要公司来给我画报表,费用不说,时间耽误不起;我不希望管理系统以上面这种方式获取数据,你要那么多数据没啥用;我的业务系统里已经有打印权限,重新在自助打印机系统里配置权限,对我是重复工作。
我曾经想要的自助打印系统
自助打印系统就是实现打印的功能,别弄那么复杂好不好,我希望……
- 自助机终端认证了用户身份之后,通过我业务系统的API获取用户可打印的文档列表。比如把当前终端机的ticket和登录的学号给我,我返回的json的信息如下,用这些信息,终端机可以把界面显示出来,类似医院自助打印化验单,刷卡之后,有内容就显示,没内容就空白:
{
"printerCode": "01",
"printerName": "打印机1",
"studentCode": "1234567890",
"studentName": "姓名",
"reports": [
{
"trayCode": "02",
"trayName": "Tray02",
"reportCode": "01",
"reportName": "report2",
"fee": null,
"printLimit": 1,
"printCount": 0,
"reportFileUrl": "",
"reportThumbnailUrl": ""
},
{
"trayCode": "01",
"trayName": "Tray01",
"reportCode": "01",
"reportName": "report1",
"fee": null,
"printLimit": 1,
"printCount": 0,
"reportFileUrl": "",
"reportThumbnailUrl": ""
}
]
}
- 用户选择某个文档打印之后,再通过我业务系统API获取打印的PDF
- 打印之后,再把打印成功与否的状态写回我的业务系统
不过这么干之后,它们的管理系统似乎可以废掉了,或者只保留打印存档的照片。
后来的解决方案:打印池
李凌做了一个打印池,实现的功能虽然不复杂,但是整套系统功能切分的非常清晰了。
- 用户在我的系统里选择要打印的报表,预览确认之后,把生成的PDF上传到打印池里,包括份数,我的业务系统里记录该该用户这个报表可打印数量减少。
- 用户在自助终端机刷卡或者输密登录,终端机通过它的管理系统从打印池里寻找当前用户可打印的PDF文件,再通过与当前机器纸盒类型做匹配,把能在当前机器上打印的文档显示在界面上,点击打印即可。打印多少份是之前上传文档时已经填写的,用户在终端机只相当于 领取。这跟现在校园卡微信充值有点类似。
优点与问题
这种方式对我来说,优点是显而易见的……
- 用户的打印权限是我的业务系统里维护的,不需要二次维护
- 打印机的管理系统里不需要存用户的数据
- 整个系统几个部分功能非常清晰,哪里出问题都很好查找解决
- 将来有多少种新报表,不管怎么修改,我在我的业务系统里做好就行了,不用再找公司做报表……也就是说其他部门想用我的自助打印系统也没有任何问题
- 再增加设备会非常方便接入
不过也得承认,这种方式对于用户来说,需要在业务系统里发送报表再去自助机领取,开始时候可能会觉得麻烦。但我们将来会争取把这些都做到微信企业号里,对于生活上深度依赖手机的学生们来说,类似“云打印”的多一步操作应该不是问题。
最后
前几天学校人事处的自助打印系统上线,已经证明这种方式的可行性,所以我在转发时候说“下一步就是学生事务中心的那些自助打印机上线了”,俗话说“好饭不怕晚”,我业务系统里把PDF发到打印池没问题了,但公司终端机从打印池获取数据还需要再调试调试。
将来,不需要各个有需要的部门都购买自助打印设备然后重新实施,现有模式下的机器资源共享完全没有问题。举例来说研究生院或者教务处觉得原来的自助打印机问题太多,不愿意用了,那么好…… 可以修改一下自己的管理系统,让学生把成绩单PDF发到打印池就行了,修改的代码量非常小,只要这些自助打印机里还有空闲的纸盒分配给你们用就可以。
虽然离实现还有一点时间,但我们已经做的这些改变对整个学校信息化建设和资源共享的意义还是值得写一下让大家了解的。