专业咨询
致力推进中国医疗卫生信息化

【袁永福专栏】HIT技术人员的“毒液”:JSB及JQB

来源:HIT专家网      作者:南京都昌信息科技有限公司 袁永福

yuanyongfu

前一段时间,DC超级英雄电影《毒液:致命守护者》热映,讲述了一种外星寄生体,它本身非常弱,不容易活。但寄生到普通人类身上,使得普通人类成为超级英雄,功能强大。而我们正在开发一种能够让HIT技术人员成为超级英雄的“毒液”——JSB(JavaScript for Business)和JQB(JQuery for Business)。

软件行为闭环管理

软件实施维护是软件项目中一个很重要的环节。在实施维护过程中,存在高频的需求变更,让IT人员苦恼不堪。一次需求变更处理过程包括需求调研、修改软件代码、测试更新、用户反馈。如此循环多次,软件才能验收并发挥价值。

我把这种循环过程抽象定义为软件运行时行为闭环管理(简称:SRBM,Software Runtime Behavior Closed-loop Management),也就是项目实施人员为了适应不断变化的用户需求,持续改变软件在运行时行为的过程。

上述问题是行业中普遍存在的“老大难”问题,那么如何解决这个问题呢?我们认为就是需要提高软件自由度,并降低修改软件运行时行为的难度。为此,我们研发JSB和JQB技术并产品化,在不需要高水平HIT技术人员的情况下来部分解决上述问题,改善SRBM。

SQL语句

在介绍JSB、JQB之前,先说说它的灵感之源——SQL语句。可以说,对于所有技术人员,SQL语句是一大法宝,增删改查,各种优化几乎全指望它。SQL语句是技术人员的基本功,它实现了数据库的高度灵活性。

SQL语句取得巨大成功的主要原因:

第一,SQL被ANSI和ISO制定为国际标准。虽然各个厂商发展了不同的SQL方言,但主体一样,保持了相当大的兼容性和可移植性。

第二,SQL是高度抽象的编程语言,解释型执行。具有动态语言的特性,编写自由,简单易学。比较好地掩盖了底层技术细节,入门比较简单。

第三,ORACLE、MS SQL SERVER、MY SQL等支持SQL运行的底层数据库技术现在非常强大。这使得SQL语句性能好,实现的功能也非常强大。

类比“毒液”,我们可以认为SQL语言是ORACLE、SQLSERVER等宿主程序的“寄生体”,它本身只是一堆字符串,必须寄生到宿主上才能发挥巨大的价值。

JavaScript

JSB、JQB是基于JavaScript,那么,为什么选择JavaScript?类似于SQL语言,选它具有以下理由:

第一,JavaScript被ECMA国际组织制定为国际标准。虽然各个厂商发展了不同的JS方言,但主体一样。保持了相当大的兼容性和可移植性。

第二,JS是高度抽象的编程语言,解释型执行。具有动态语言的特性,编写自由,简单易学,比较好的掩盖了底层技术细节。入门比较简单。在全世界编程语言排行榜中,JS排名比较靠前,会用者较多。

第三,以JS基础实现的JQuery很有名,功能强大且使用方便。

JSB

那么,如何使用JS语言来帮助提高软件系统的自由度?需要两个方面的准备工作:

第一方面是高性能通用的JS执行引擎软件模块。该模块能解析JS代码文本,执行其中定义的功能,并能调用外界的功能模块和触发事件。但是,它不能独立运行,必须基于宿主程序。这方面技术比较难,不过我们已经实现。

第二方面是准备宿主,即业务应用程序。业务应用软件必须有合理的架构和良好的接口规范,性能要比较好。这方面技术比较容易,但工作量较大,有赖于广大软件厂商来完成。

JS引擎影响宿主应用程序是采用一种叫代码注入的技术,也就是在应用程序代码的关键点中设置脚本执行代码注入点。打个比方,人体有诸多经络在运转,可以在穴位扎入银针来调整人体状态。如下图所示:

yuanchuang

应用程序的各种流程就像人体经络,某些关键节点就像人体的穴位。JSB就像一个“电源”,代码注入就是在人体穴位中扎入银针然后连接到电源中。

yuanchuang1

这样,用户掌控JSB就能很大程度改变软件的运行流程。扎的“电针”越多,对应用程序的影响程度越大。

对于HIT技术人员,特别是医院信息科人员,在JSB的基础上就能发挥自己熟悉医院业务需求的特长。通过JSB来修改软件行为,从而参与软件行为闭环管理,缩短循环周期、加速收敛,帮助项目成功。

应用案例1某软件中需要列出当前病人的医嘱列表,医嘱信息很多,要列出哪些栏目、怎样的顺序、各个字段的显示格式等。各个医院或者科室之间都存在着差异,很多软件公司一般就是把另外一家医院的医嘱列表源代码拷贝过来进行修改,快速满足需求。但软件不能产品化,公司迟早要为这种“糊墙式”操作付出代价来善后。

为此,一些公司会在数据库中存一个配置文件,加载医嘱列表时按照配置文件动态的加载列表栏目。此时,需要开发一个配置文件的加载、编辑、保存的应用功能,而且医嘱项目之间存在动态关联,这些都提升了开发难度,加大了实施工作量。

这个时候就可以使用JSB。系统中存一个JS代码文件,加载医嘱列表时调用脚本引擎启动JS脚本。在JS脚本中可以任意访问列表控件的编程接口,动态的添加各种列表栏目。从这个角度看,JSB是一个自带智能的配置文件。

应用案例2使用JSB还能优化性能。比如,对于医嘱列表,很多程序会查询医嘱表的所有字段值,但有些字段值不在用户界面上显示。此时数据库及网络I/O存在大量浪费。

而使用JSB,则可以在脚本中只查询所需的数据字段值,不显示的字段不查询。这样就能减少I/O浪费,提高性能。如此一来,JSB就能实现传统配置文件所不能达到的自由度,大幅增强业务软件的灵活度。

JQB

JQuery是一个非常流行的开源JS库。功能强大,使用灵活,应用非常广泛。在JSB的基础上,我们提供了JQB(JQuery for Business)。将JQuery引入到业务流程开发中。

JQB主要用于业务数据对象的查询、遍历和操作。笔者曾写过《数据的崛起:基于路径的数据访问模式》文章,介绍了一种新型的业务数据查找技术手段。以此为基础,JQB能方便地找到任意业务数据,并进行遍历和操作。

技术应用

目前,JSB、JQB的理论基础是软件行为闭关管理。因此,JSB、JQB的成功有赖于软件公司在设计研发软件时的高瞻远瞩,在关键节点处接入JSB的控制点为JSB开放API。如果没有合适的宿主应用程序,JSB用处不大。而医院在采购软件时,即使不采用JSB,为了系统互操作性,都要明确要求应用软件提供足够丰富的API,开放数据结构,否则后患很多。

通过JSB/JQB和宿主应用程序的配合努力,使得HIT技术人员有手段大幅修改软件运行时的行为,无需停机重启,就像在高速公路上给行驶中的汽车换发动机。通过这种形式来快速响应软件需求,从而缩短一次需求变更反馈周期,改善软件行为闭环管理,促进反馈曲线收敛。

小结

JSB/JQB可以成为HIT技术人员,特别是医院信息科人员的“毒液”。配合特殊处理的业务软件系统,就可以实现良好的软件运行时行为闭环管理。使软件系统快速响应需求,更贴合临床实践,从IT的角度帮助医院实现效益最大化。

【作者简介】

袁永福:男,微软MVP,80后,南京都昌信息科技有限公司联合创始人,中国医院信息化领域知名软件技术专家,长期从事电子病历编辑器等行业核心技术的研发和推广,并直接为多家三甲医院提供软件技术支持及咨询服务。

小助手二维码想加入HIT专家网专业交流群吗?请添加“HIT专家网”小助手微信好友后提交你的申请哦

(请注明姓名、单位名称、职务、主管技术或产品领域,以便有针对性加群)

【责任编辑:孙鹏】

赞(1)

评论 抢沙发

评论前必须登录!

 


未经允许不得转载:HIT专家网 » 【袁永福专栏】HIT技术人员的“毒液”:JSB及JQB
分享到: 更多 (0)