文/姚渺波 彭超云
Drupal如何与“公共数据库”进行数据交换?
文/姚渺波 彭超云
Drupal是使用PHP语言编写的开源内容管理系统(CMS)和内容管理框架(CMF),曾连续多年荣获全球最佳CMS大奖。世界顶尖的前100所大学当中就有71所大学使用Drupal,国内也有不少高校在使用它建设网站。然而仅仅只是使用Drupal来建站,实在是有点大材小用,做为CMF的Drupal,有着灵活的架构和丰富的模块,通过它来构建业务系统,可以让Drupal在国内高校的“数字校园”中发挥出更大的作用,而不仅仅只是个CMS。
国内大部分高校都建成了“数字校园”,“数字校园”建设的目的是为了消除信息孤岛,所做之事简而言之就是建立公共数据交换标准和“公共数据库”,确定权威源数据以及在“公共数据库”与业务系统之间进行数据交换。具体来讲,就是通过前期调研,将“公共数据库”中业务系统需要的数据推到“中间库”中,然后由业务系统根据业务所需到“中间库”去抽取相关的数据。如果业务系统的数据被确定为权威源数据,那么该业务系统还要将其他业务系统所需的数据通过“中间库”推送到“公共数据库”中,供其他业务系统抽取。
如果想使用Drupal来构建业务系统,从而在“数字校园”中发挥更大的作用,就需要用它来构建业务系统,并使它能够与“数字校园”中的“公共数据库”之间进行数据交换,从而使其所建系统不至于成为信息孤岛。而这也正是Drupal在高校推广时遇到的最大挑战,因为Drupal并没有一个现成的解决方案可以完全满足这一颇具中国高校特色的需求。因此,笔者仔细分析了Drupal一些相关的模块,并尝试利用这些模块来解决Drupal与“公共数据库”数据交换时所遇到的部分问题。
纵观“数字校园”中的业务系统,只有少量业务的数据是权威数据源,这也就意味着大多数业务系统只需要到“公共数据库”去抽取数据。因此,实现Drupal从公共数据库抽取数据的功能模块,是其构建数字校园业务系统的首要任务。
而实现这一功能,首先需要由Drupal创建业务所需的内容类型(或实体类型),然后通过相关模块将业务所需数据(大多部分都是人员和机构信息)从“中间库”取出(“中间库”中供业务系统抽取的数据是由“公共数据库”通过ODI推送过来的),在此需要注意的一点就是“中间库”中的表结构与内容类型中的字段不尽相同。这很好理解:一个是遵循学校公共的数据标准,一个是遵循具体的业务需求。本文以学生基本信息数据为例,介绍Drupal从“中间库”中抽取数据的功能模块实现方法,具体如下:
1.下载并安装相关模块
使用Drush工具下载和启用Feeds和Feeds SQL模块:drush en feeds_ui feeds_sql feeds_tamper_ui -y,这样Drush工具就会自动下载并启用Feeds、Feeds SQL和Feeds Tamper模块,同时还会下载和启用它们的依赖模块CTools和JobScheduler。
2.添加“中间库”连接信息
在Drupal的配置文件sites/default/settings.php中,添加“中间库”的连接信息,并将其DatabaseKey设置为mid:
... ...
$databases = array (
// 缺省数据库的连接信息
'default' =>
array (
'default' =>
array (
'database' => 'test',
'username' => 'Drupal',
'password' => 'Drupal',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
// “中间库”连接信息
'mid' =>
array(
'default' =>
array (
'database' => 'mid',
'username' => 'Drupal',
'password' => 'Drupal',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
);
... ...
3. 设置内容类型
在Drupal中创建一个名为学生基本信息的内容类型,并根据需要设置其字段,如学号、姓名、姓名拼音、曾用名、英文名、身份证件类型、身份证件号、身份证件有效期、出生地码、出生日期、籍贯、血型等,并按照集成方案设置字段类型和长度。一般与“中间库”相关表的字段属性相同,以方便抽取。其中出生日期可以安装Date模块,并将其字段类型设为Date(Unix Timestamp),这样方便用户界面(UI)展示。
4. 设置Feeds Importer
创建一个Feeds Importer,将其命名为“导入学生基本信息”(机器名:fi_xsjbxx),在编辑界面的Basic settings中将Attach to content type设为“学生基本信息”,并根据业务需要设置好Periodic import(一般设为every 1 day);
在Fetcher中将Fetcher从默认的HTTP Fetcher改为SQL fetcher,并将SQL fetcher设置中的Database勾选为“中间库”的“mid”;
在Parser中将Parser改选为SQL parser,并将SQL parser设置中的Database选为“mid”,在SQL query文本框中填入SQL语句:SELECT * FROM GXXS_XSJBSJZL(其中GXXS_XSJBSJZL为“公共数据库”同步到“中间库”的学生基本数据子类表名,这里为了方便起见,所以使用了通配符*,一般的用法是需要用到什么字段,就填入什么字段),如果SQL语句没有出现错误的话,会在下面显示测试信息,会显示执行SQL语句后记录总数和字段数,并有个表格显示记录内容,以便判断在SQL query文本框中所输入SQL语句是否正确;
在Processor中将Processor设为默认的Node Processor,并将其设置中的Bundle选为“学生基本信息”,将Update existing nodes选为“Update existing nodes”,Text format保持默认的“Plain Text”,Expire nodes保持默认的“after 1 day”;接下来就是最关键的一步了,在Processor中点击Node Processor中的Mapping,将“中间库”数据表中的字段与内容类型的字段一一对应起来,如图1所示。
图1 “中间库”数据表中的字段与内容类型的字段
5. 设置Feeds Tamper
在完成了上述配置之后,基于Drupal的业务系统就差不多可以正常地从“中间库”抽取公共数据了,但这之前还需要做一个小处理。“中间库”的出生日期根据部标是8位字符,而为了UI展示,在前面Drupal内容类型的字段类型的设置时,是建议安装Date模块并将字段类型设为Date(Unix Timestamp)的,这就意味着在抽取过来的数据需要在做“一个字符串到时间戳”的转换之后,才能够保存到Drupal中,因此需要用到Feeds Tamper模块,可以选择TAMPER标签页,并找到出生日期这个Mapping,然后点击Add Plugin,将The plugin to add标签下的单选框选为“String to Unix Timestamp”,这样就可以在抽取出生日期时将部标的8位字符串转换成Date(Unix Timestamp)类型保存在Drupal中。而且由于Feeds Tamper是插件式的,还可以自行开发转换代码用以扩展Feeds Tamper的功能。其设置如图2所示。
图2 自行开发转换代码用以扩展Feeds Tamper的功能
通过上面的配置,基于Drupal构建的业务系统就可以从外库“中间库”抽取所需的数据了,上述三个模块相互配合就很方便地完成了数据抽取功能,而这么复杂的功能,需要用户做的事情却并不多,不得不让人感叹Drupal及其模块的强大。
然而,由于目前国内高校“公共数据库”从业务系统抽取数据的方式比较单一,基本都是基于数据库层面来进行的。因此Drupal要融入数字校园就还必须要有一套比较成熟的将数据输出到外部数据库的解决方案。令人遗憾的是,Drupal虽然有着一套较为成熟的数据输出解决方案,但却是基于WebService的。基于数据库层面上的数据输出,虽然也有一些模块支持,但还不能形成一个比较成熟的解决方案。
综上所述,要想进一步推动Drupal在我国高校的发展,就需要解决其与“公共数据库”的数据交换问题。好在Drupal不仅是一个CMS,还是一个CMF,可以很灵活地通过编写一些功能模块,来满足某些功能需求。笔者和高教学会信息化分会Drupal推进组的同仁们,正在着手编写DataHub数据交换模块,尝试通过这个模块来实现符合国人思维习惯,并能在数据库层面进行数据交换,以期解决Drupal与外部数据库的数据双向交换问题,从而进一步加快Drupal在我国高校的推广。
(作者单位为温州大学现代教育技术中心)
华为北京ICT巡展:未来将是全联接的世界
本刊讯近日,“华为企业业务2015炫动ICT中国行巡展·北京站”落下帷幕。
华为中国区副总裁董明表示,在过去的2014年,华为公司实现全球销售收入约2880亿人民币,同比增长约20%。目前,华为的产品和解决方案已经应用于170多个国家和地区,服务全球超过1/3的人口。中国市场作为华为全球化业务的重要组成部分,企业业务领域、消费者业务领域、运营商业务领域均实现了持续高速增长。
会上,华为提出“全联接”的概念。董明表示,未来将是一个全联接的世界。万物互联、随时在线将成为新常态。“我们预测,到2025年,全球将有超过1000亿的联接,这将是一个规模空前的市场,如何存储与处理、传送与分发、获取与呈现这些庞大的数据流量,既是一个巨大的挑战,也是我们面临的战略机遇。”
在巡展大会上,他表示,华为企业业务近几年在北京大规模发展,ICT解决方案在北京各行业已广泛应用。在教育领域,华为与北京理工大学、北京交通大学、北京邮电大学等高校都有合作,“我们借助智慧校园和三通两平台解决方案,为高等教育和基础教育信息化建设提供了完整的解决方案。”
“教育市场是华为极其关注的一个领域。”华为北京代表处业务解决方案部部长苗实表达了华为对未来教育信息化的理解:“未来的校园将是智慧校园,在校园中,会融合大数据,云服务,在此基础上给校园提供智慧的服务和管理,让整个校园校务管理变得更高效透明。”此外,她认为,未来,许多校园将会把自己的优质教学资源扩展到整个社会中去,那么如何更好更方便地进行资源的分享,这是整个行业值得思考的问题。
苗实表示,今后,在教育领域内,华为的规划是按照“三通两平台”的思路,一是为学校提供良好的无线网络连接,这是智慧校园的基础;二是通过桌面云为师生带来便利,三是重点推广敏捷网络的解决方案和理念,四是推动大型数据中心进校园。