首页 / 用户接口执行装置以及用户接口设计装置

用户接口执行装置以及用户接口设计装置有效专利 发明

技术领域

[0001] 本发明涉及设计内置式设备的用户接口(user interface:UI)的用户接口设计装置以及根据由该用户接口设计装置生成的代码来执行用户接口的用户接口执行装置。

相关背景技术

[0002] 以往的用户接口执行装置通过将读入过程需要时间的内容预先存储到读入过程不需要时间的存储区域,从而提高用户操作时的内容的读入的响应性,减轻由于读入过程需要时间而引起的用户的压力。以下,把将内容等信息预先存储到读入过程不需要时间的存储区域的处理称为预读。为了预读内容的所有数据而需要确保足够大的存储区域,但一般而言存储区域是有限的,所以确保将内容的所有数据进行存储的存储区域这是不现实的。因此,需要根据预读的数据的选择以及预读开始的定时(timing)的判断而将数据预读到存储区域。
[0003] 以往,公开了如下技术:在判断为是未执行前台(foreground)的任务的状态时,执行显示用数据的预读(例如参照专利文献1)。另外,公开了如下技术:预先定义表示由用户进行的操作输入的种类与数据的读出条件的关联的规则信息,在由用户进行操作输入时参照规则信息来决定预读的数据(例如参照专利文献2)。
[0004] 专利文献1:日本特开2011-141867号公报
[0005] 专利文献2:日本特开2010-282430号公报

具体实施方式

[0033] 以下,使用附图来说明本发明的实施方式。
[0034] <实施方式1>
[0035] <结构>
[0036] 图1是示出本发明的实施方式1的用户接口设计装置1、用户接口执行装置2以及数据提供部3的结构的一个例子的框图。此外,在图1中,实线箭头表示各构成要素之间的数据的流向,虚线箭头表示在状态转移生成部10、预读生成部11、数据取得生成部12以及预读管理生成部13各自中所生成的代码的流向。
[0037] 首先,说明用户接口设计装置1的结构。
[0038] 用户接口设计装置1是用户接口设计者使用的装置,具备转移设计部6、接口定义部7、状态转移生成部10、预读生成部11、数据取得生成部12以及预读管理生成部13。
[0039] 转移设计部6(状态转移定义部)设计用户接口的状态。具体而言,在转移设计部6中,根据用户接口设计者的输入来制作状态转移定义8。即,转移设计部6定义状态转移定义8,该状态转移定义8定义了用户接口的状态转移。
[0040] 接口定义部7定义用户接口执行装置2的用户接口执行部14与对该用户接口执行部14提供数据的数据提供部3之间的接口定义9。在状态转移定义8中,能够定义由接口定义部7所定义的接口定义9之中的有在特定的状态下使用的可能性的接口群。
[0041] 状态转移生成部10根据状态转移定义8而生成状态转移代码30(参照图3),该状态转移代码30是对用户接口执行装置2的用户接口执行部14的状态转移进行处理的软件的源代码。所生成的状态转移代码30被传送到用户接口执行装置2的状态转移部18。
[0042] 预读生成部11根据状态转移定义8以及接口定义9,在预先确定的接口的状态下生成预读执行代码31(参照图3),该预读执行代码31是由用户接口执行装置2的用户接口执行部14执行预读请求以及预读废除请求中的至少一个请求的软件的源代码。在此,预读请求是指,向数据提供部请求提供在预先确定的接口的状态下可能需要的数据。另外,预读废除请求是指,停止(废除)针对数据提供部的预读请求。此外,设为预先确定的接口的状态包括转移预先确定的次数之后的接口的状态。所生成的预读执行代码31被传送到用户接口执行装置2的数据请求部20。此外,关于预读请求以及预读废除请求,在后面叙述。
[0043] 数据取得生成部12根据接口定义9,生成储存数据访问代码32(参照图3),该储存数据访问代码32是成为面向储存从数据提供部3提供的数据的用户接口执行装置2的数据存储部16的接口的软件的源代码。所生成的储存数据访问代码32被传送到用户接口执行装置2的数据取得部15。
[0044] 预读管理生成部13根据接口定义9,生成预读管理代码33(参照图3),该预读管理代码33是对用户接口执行装置2中的数据的预读状态进行管理的软件的源代码。所生成的预读管理代码33被传送到数据提供部3的预读管理部23。
[0045] 接下来,说明用户接口执行装置2的结构。
[0046] 用户接口执行装置2具备用户接口执行部14、数据取得部15以及数据存储部16,以来自直接受理用户的输入操作的输入装置4的输入或者来自数据提供部3的数据的接收等为契机,控制提示用户接口的处理的结果的提示装置4。
[0047] 用户接口执行部14具备事件取得部17、状态转移部18、数据处理部19、数据请求部20以及提示控制部21。
[0048] 事件取得部17取得来自输入装置4的输入或者来自数据提供部3的数据的接收等而作为事件。由事件取得部17处理的事件被分类为使用户接口的状态转移的状态转移事件、针对数据提供部3的操作事件以及用于将来自输入装置4的输入信号直接利用于提示控制的输入数据事件。状态转移事件被传送到状态转移部18。操作事件在被传送到数据请求部20之后,经由数据取得部15被传送到数据提供部3。输入数据事件在被传送到数据处理部19之后,作为输入数据的变更被传送到提示控制部21。在此,作为输入数据事件,例如可以列举根据用户针对触摸面板的触碰中的操作量(滑动的移动量)来变更画面的移动量的处理等。
[0049] 状态转移部18接收由用户接口设计装置1的状态转移生成部10所生成的状态转移代码30,执行基于接收到的状态转移代码30的接口的状态转移。另外,状态转移部18在状态转移时针对从用户接口设计装置1的预读生成部11接收到预读执行代码31的数据请求部20执行预读请求。
[0050] 数据请求部20根据事件取得部17以及状态转移部18的指示,访问数据提供部3提供的数据、功能。数据请求部20从事件取得部17接收依照不伴随状态转移的操作事件的向数据提供部3的请求。例如,数据请求部20从事件取得部17接收“音乐的再现开始”等请求。另外,数据请求部20从状态转移部18接收预读请求的指示。
[0051] 数据处理部19将由事件取得部17处理的带数据的事件和经由数据取得部15从数据提供部3取得的数据加工成能够利用于用户接口的提示。在此,作为带数据的事件,可以列举从输入装置4输入的输入数据事件和接受经由数据取得部15从数据提供部3取得的数据的取得数据事件。
[0052] 提示控制部21根据用户接口执行部14的状态和由数据处理部19加工的数据,生成在提示装置5中实际向用户提示的信息,生成以能够在提示装置5中提示的方式进行了加工的控制信号。具体而言,提示控制部21从状态转移部18取得用户接口执行部14的状态,从数据处理部19取得向用户提示的数据。由提示控制部21生成的控制信号被传送到提示装置5,在提示装置5中执行向用户的提示。此外,在本实施方式中,提示是指,不限于画面中的显示,还包括利用声音再现进行的声音提示以及使用触觉设备的作为力觉的提示。
[0053] 数据取得部15在从数据请求部20接收到预读请求时,确认在数据存储部16中是否存在与从数据请求部20请求的数据相同的数据。在数据存储部16中不存在相同的数据的情况下,数据取得部15向数据提供部3进行请求使得送出作为预读请求的对象的数据。另一方面,在数据存储部16中存在相同的数据的情况下,数据取得部15不向数据提供部3进行请求,而是对数据请求部20响应成功(存在相同的数据)的意思。
[0054] 另外,数据取得部15在从数据处理部19接收到希望取得实际的数据的意思的请求(数据取得请求)时,确认在数据存储部16中是否存在与从数据处理部19请求的数据相同的数据。在数据存储部16中存在相同的数据的情况下,数据取得部15不向数据提供部3请求数据,而是将存储在数据存储部16中的相同的数据作为响应来返回。另一方面,在数据存储部16中不存在相同的数据的情况下,数据取得部15将在数据存储部16中不存在相同的数据的意思的错误(error)作为响应来返回。
[0055] 另外,数据取得部15在从数据请求部20接收到基于并非是数据取得接口的其它接口的请求的情况下,不参照数据存储部16,而向数据提供部送出数据的请求。
[0056] 输入装置4解释用户的输入操作,并作为事件送出到用户接口执行装置2。在此,作为输入装置4,例如可以列举触摸面板、鼠标、键盘、H/W(hardware,硬件)键、旋钮开关、远程控制器、声音辨识引擎等。
[0057] 提示装置5根据从提示控制部21接收到的控制信号,向用户提示信息。在此,作为提示装置5,可以列举液晶显示器或投影仪等提示视觉信息的设备、扬声器或耳机等提示声音信息的设备、振子等提示力觉的设备等。
[0058] 接下来,说明数据提供部3的结构。
[0059] 数据提供部3是向用户接口执行装置2提供在提示装置5中提示的数据的装置,具备请求处理部22、预读管理部23、响应返回部24以及数据生成处理部25。
[0060] 请求处理部22从数据取得部15接收预读请求、预读废除请求以及请求针对数据提供部3预先确定的处理的指示请求中的至少一个请求。
[0061] 预读管理部23根据由预读管理生成部13生成的预读管理代码33,管理用户接口执行装置2中的数据的预读状态。具体而言,根据请求处理部22接收到的预读请求或者预读废除请求进行预读管理部23中的管理。
[0062] 响应返回部24针对请求处理部22接收到的预读请求或者数据取得请求,向数据取得部15返回数据。另外,响应返回部24在从数据生成处理部25被通知通过数据生成处理部25的处理更新了在数据提供部3中保持的数据时,参照预读管理部23来判断该更新后的数据是否是预读状态。另外,在更新后的数据是预读状态的情况下,响应返回部24对数据取得部15通知数据(更具体而言是数据的值)被更新的意思。
[0063] 数据生成处理部25进行数据提供部3保持的数据的更新处理或者数据的生成处理。通过数据提供部3的开发人员描述程序来进行这些处理。此外,设为在数据提供部3具备的存储部(未图示)中保持有数据提供部3保持的数据。
[0064] 图2是示出与图1所示的用户接口设计装置1、用户接口执行装置2以及数据提供部3中的软件功能对应的硬件结构的一个例子的图。
[0065] 在用户接口设计装置1中,转移设计部6、接口定义部7、状态转移生成部10、预读生成部11、数据取得生成部12以及预读管理生成部13例如通过由图2的处理器26执行存储在存储器27等中的程序而被实现为该处理器26的功能。但是,它们例如也可以由多个处理器26协作来实现。
[0066] 另外,在用户接口执行装置2中,用户接口执行部14、数据取得部15、事件取得部17、状态转移部18、数据处理部19、数据请求部20以及提示控制部21例如通过由图2的处理器26执行存储在存储器27等中的程序而被实现为该处理器26的功能。但是,它们例如也可以由多个处理器26协作来实现。
[0067] 另外,在数据提供部3中,请求处理部22、预读管理部23、响应返回部24以及数据生成处理部25例如通过由图2的处理器26执行存储在存储器27等中的程序而被实现为该处理器26的功能。但是,它们例如也可以由多个处理器26协作来实现。
[0068] 此外,设为处理器26以及存储器27设置于用户接口设计装置1、用户接口执行装置2以及数据提供部3各自中。
[0069] 图3是示出针对用户接口设计装置1的输入及其生成代码的一个例子的图。
[0070] 用户对转移设计部6以及接口定义部7,输入在用户接口执行装置2中执行的用户接口的设计。
[0071] 用户对转移设计部6输入状态转移图28和对应定义29,该对应定义29定义了在各状态下利用的接口的对应。此外,转移设计部6既可以自身具有GUI(Graphical User Interface,图形用户接口(图形用户界面))而使用户进行输入,也可以输入使用对UML(Unified Modeling Language,统一建模语言)进行编辑的工具来设计的状态转移模型。另外,状态转移定义8包括状态转移图28和对应定义29。
[0072] 在图3的例子中,状态转移图28表示在状态S1时如果受理事件E1则转移到状态S2。另外,状态转移图28表示在状态S2时如果受理事件E2则转移到状态S1,在状态S2时如果受理事件E3则转移到状态S3。另外,状态转移图28表示在状态S3时如果受理事件E4则转移到状态S1。
[0073] 对应定义29定义了有在由状态转移图28定义的各状态下利用的可能性的接口的对应。此外,对应定义29既可以定义为状态转移图28中的各状态的属性(property),也可以利用其它文件来定义。在图3的例子中,对应定义29表示在状态S1下利用getDataA、getStateD、doSomething这3个接口,在状态S2下利用getDataA、getCurrentState、OnNotifyE2这3个接口,在状态S3下利用getListC、getCurrentState、doSomething这3个接口。
[0074] 接口定义9包括用户接口执行装置2的用户接口执行部14与数据提供部3之间的接口的定义以及根据该接口从数据提供部3得到的数据的最大大小的定义。在接口定义9中示出其接口是什么样的接口。在图3的例子中,从“get”开头的接口表示是从数据提供部3取得数据的接口(数据取得接口)。从“do”开头的接口表示是对数据提供部3进行指示的接口(指示接口)。从“OnNotify”开头的接口表示是从数据提供部3向用户接口执行部14的事件通知的接口(事件通知接口)。
[0075] 此外,在本实施方式1中,接口定义9表示基于记载规则的默认的定义,但例如也可以在指定接口定义9的类型之前,明确地宣布数据取得接口是“getter”、指示接口是“method”、事件通知接口是“event”等。
[0076] 在图3的例子中,接口定义9关于serviceA这样的针对数据提供部3的接口,定义了4种数据取得接口、1种指示接口以及1种事件通知接口。
[0077] 另外,在接口定义9中,能够定义根据数据取得接口从数据提供部3取得的数据的最大大小。图3的例子中,关于接口定义9的数据大小,将DataA定义为4字节,将StringB定义为4×256字节,将ListC的最大保持大小定义为16×256+8字节,将StateD定义为16字节。
[0078] 状态转移生成部10根据状态转移定义8,生成状态转移代码30。在图3的例子中,状态转移代码30表示在状态S1时如果受理事件E1则状态转移到状态S2。另外,状态转移生成部10读入作为在对应定义29的状态S1中定义的数据取得接口的getDataA以及getStateD,生成状态转移代码30,该状态转移代码30是在转移到状态S1时执行subscribe_DataA()以及subscribe_StateD()、在从状态S1转移到其它状态时执行unsubscribe_DataA()以及unsubscribe_StateD()的代码。
[0079] 预读生成部11根据状态转移定义8和接口定义9,生成预读执行代码31。在图3的例子中,预读生成部11生成预读执行代码31,该预读执行代码31包括从状态转移代码30调用的subscribe_DataA()以及subscribe_StateD()和作为从数据取得部15取得数据的数据取得接口的getDataA()以及getStateD()。sbscribe_DataA根据接口定义9判断DataA是int类型,通过将int的大小追加到自变量而调用进行预读处理的subscribe。另外,在作为数据取得接口的获取方法(get method)中,生成从数据存储部16变换为int的形式来取出的代码。此外,关于StateD也是同样的。
[0080] 另外,预读生成部11根据由该预读生成部11生成的预读执行代码31和在接口定义9中包含的数据的最大大小的定义,计算由状态转移定义8所定义的各状态下的存储从数据提供部3提供的数据的用户接口执行装置2的数据存储部16的最大大小。
[0081] 数据取得生成部12根据接口定义9而生成储存数据访问代码32。在图3的例子中,数据取得生成部12根据由接口定义9所定义的接口,生成在数据存储部16中生成条目(entry)的代码,并且生成进行向数据提供部3送出预读请求并将返回的数据存储到数据存储部16的处理的代码。条目例如由图9所示的key(关键字)-value(值)的组合构成(详细后述)。
[0082] 另外,数据取得生成部12还生成从数据提供部3接受值的变更(更新)通知的回调函数。另外,数据取得生成部12定义并非是由接口定义9所定义的数据取得接口而是作为其它接口的doSomething()、作为调用代码的OnNotifyE2()以及回调接口。
[0083] 在图3的例子中,通过执行储存数据访问代码32的第5行的处理而将由“key”表示的数据的预读请求提供给数据提供部3,作为其响应而返回当前时间点的最新的值(数据的值),通过执行第4、5行的处理而将值记录到数据存储部16。此外,在图3的例子中,从数据提供部3通过同步处理而返回值,但也可以通过回调来接受返回该值的处理,对应非同步响应。储存数据访问代码32的第20行以后的处理表示从数据提供部3接受数据的更新通知的回调函数的一个例子,针对getDataA这样的接口生成OnNotifyDataA这样的回调函数,在该回调函数中进行数据存储部16的更新和向用户接口执行部14的通知。
[0084] 此外,在储存数据访问代码32中包括:在数据存储部16中生成预先确定的大小的条目来调用预读开始处理的代码、根据预读废除请求来删除数据并将预读废除请求送出到数据提供部3的代码、从数据存储部16取得预先确定的数据的代码以及根据从数据提供部3接收到的数据的更新通知来更新数据存储部16的数据的代码中的至少一个代码。
[0085] 预读管理生成部13根据接口定义9,生成在预读管理部23中使用的预读管理代码33。在图3的例子中,预读管理生成部13根据接口定义9,生成与数据提供部3提供的serviceA的预读请求(subscribe)和预读废除请求(unsubscribe)的各个请求对应的代码。
即,预读管理生成部13根据接口定义9而生成预读管理代码33,该预读管理代码33是用于由数据提供部3管理从数据提供部3向用户接口执行装置2提供的数据是否成为预读的对象的代码。
[0086] 与预读请求对应的预读请求代码执行将进行预读请求的客户端(client)和成为预读对象的数据登记到预读管理部23的代码,调用作为数据提供部3的开发人员实际描述程序的对象的onCall_getDataA()等处理。与预读废除请求对应的预读废除请求代码针对预读管理部23生成将进行预读请求的客户端和成为预读对象的数据的登记进行废除的代码。
[0087] 另外,预读管理生成部13生成对成为预读对象的数据的值进行变更的处理(setDataA)。在数据提供部3的开发人员调用该处理时,判断相应的数据(开发人员进行了变更等的数据)是否为预读状态,在是预读状态的情况下,针对作为客户端的用户接口执行装置2的用户接口执行部14发行数据的变更通知。
[0088] <动作>
[0089] 图4是示出用户接口执行装置2的动作的一个例子的流程图。在图4中,示出依照从输入装置4或者数据取得部15向事件取得部17输入的事件而由状态转移部18转移了状态的情况下的处理的流程。此外,在步骤S101~步骤S105中,将转移目的地的状态为状态S1的情况作为一个例子进行说明。另外,在步骤S106~步骤S110中,将转移源的状态为状态S1的情况作为一个例子进行说明。
[0090] 在步骤S101中,状态转移部18在执行状态的转移时,判断是否针对在转移目的地的状态下定义的所有数据取得接口进行了处理。此外,步骤S101的处理既可以如图4所示通过环构造来执行,也可以在设计时从对应定义29展开了环(loop)的状态下执行。在图3的例子中,在状态S1下使用的数据取得接口是getDataA以及getStateD,所以在生成由状态转移代码30的第4~7行的S1.onenter执行的处理时,将环进行展开而展开为取得DataA以及StateD的形式。在针对所有数据取得接口进行了处理的情况下,跳转到步骤S106。另一方面,在未对所有数据取得接口进行处理的情况下,跳转到步骤S102。
[0091] 在步骤S102中,数据取得部15判断在数据存储部16中是否存在同一关键字的条目。在图3的例子中,对应于由储存数据访问代码32的第2行的isSubscribed执行的处理。在存在同一关键字的条目的情况下,跳转到步骤S103。另一方面,在不存在同一关键字的条目的情况下,跳转到步骤S104。
[0092] 在步骤S103中,数据取得部15通过由储存数据访问代码32的第7行的add执行的处理,将条目的调用源(调用了预读处理的client,在此是用户接口执行部14)存储(追加)到数据存储部16的client管理表格。此外,在后面的实施方式3中,详细叙述client管理表格(参照图13)。
[0093] 在步骤S104中,数据取得部15在数据存储部16中制作以数据名以及服务名为关键字的新的条目。
[0094] 在步骤S105中,数据取得部15向作为服务器的数据提供部3送出预读请求。
[0095] 在步骤S106中,状态转移部18判断是否针对在转移源的状态下使用的所有数据取得接口进行了处理。在图3的例子中,是由状态转移代码30的第8~11行的onleave执行的处理。在状态转移代码30的第8~11行中,示出状态通过事件E1从状态S1转移到状态S2时的处理。此外,步骤S106的处理也可以与步骤S101同样地在设计时从对应定义29展开了环的状态下执行。在对所有数据取得接口进行了处理的情况下,结束处理。另一方面,在未对所有数据取得接口进行处理的情况下,跳转到步骤S107。
[0096] 在步骤S107中,数据取得部15访问数据存储部16的client管理表格,判断是否从调用源以外也参照相应的关键字的条目。在从调用源以外也参照的情况下,跳转到步骤S108。另一方面,在仅从调用源参照的情况下,跳转到步骤S109。此外,如本实施方式1那样,在用户接口执行部14是1个的情况下,跳转到步骤S109。
[0097] 在步骤S108中,数据取得部15从数据存储部16的client管理表格删除调用源。
[0098] 在步骤S109中,数据取得部15将数据存储部16的相应关键字的条目无效化或者废除(删除)。此外,在将条目无效化的情况下,需要预先对各条目(参照图9)设定无效化标志。另外,在将条目无效化时将无效化标志设为“false(假)”,在将条目有效化时设为“true(真)”。
[0099] 在步骤S110中,数据取得部15根据来自数据请求部20的预读废除请求的指示,向数据提供部3送出预读废除请求。在图3的例子中,储存数据访问代码32的第9~12行所示出的代码对应于预读废除请求的处理。
[0100] 图5是示出数据提供部3中的接收到预读请求时的动作的一个例子的流程图。在图5中,示出通过图4的步骤S105中的处理而由数据提供部3接收到从数据取得部15送出的预读请求时的处理的流程。
[0101] 在步骤S201中,请求处理部22在从数据取得部15接收到预读请求时,将确定送出了预读请求的用户接口执行部14(客户端)的ID即设备ID、和确定成为预读的对象的数据的预读对象数据关键字的组合登记到预读管理部23。在图3的例子中,对应于预读管理代码33的第2行所示出的处理。
[0102] 在步骤S202中,请求处理部22调用用于取得数据提供部3的值的胶水代码(glue code)。该胶水代码是能够由数据提供部3的开发人员自由地描述内部的处理(程序)的处理,与在调用用于从作为客户端的用户接口执行部14取得值的接口时处理的代码相同。在图3的例子中,对应于预读管理代码33的第5行以及第7行所示出的处理。
[0103] 在步骤S203中,响应返回部24将在步骤S202中取得的值通过RPC(Remote Procedure Call,远程过程调用)的结构而返回到用户接口执行装置2。
[0104] 图6是示出数据提供部3中的接收到预读废除请求时的动作的一个例子的流程图。在图6中,示出通过图4的步骤110中的处理而由数据提供部3接收到从数据取得部15送出的预读废除请求时的处理的流程。
[0105] 在步骤S301中,请求处理部22在从数据取得部15接收到预读废除请求时,删除登记在预读管理部23中的设备ID和预读对象数据关键字的组合。通过进行该处理,在数据提供部3中无法取得用户接口执行部14(客户端)与成为预读对象的数据的对应,预读状态被解除。
[0106] 图7是示出数据提供部3中的值更新时的动作的一个例子的流程图。
[0107] 数据提供部3在数据生成处理部25中与用户接口执行装置2独立地生成数据,在进行生成该数据的处理时,作为预读状态的数据的值有时变更。在图7中,示出数据的值被变更(更新)时的处理的流程。此外,以下将值被变更的数据称为变更后的数据。
[0108] 在步骤S401中,数据生成处理部25向响应返回部24通知变更后的数据。
[0109] 在步骤S402中,响应返回部24参照登记在预读管理部23中的设备ID以及预读对象数据关键字的组合,判断是否存在预读变更后的数据的用户接口执行部14。在存在预读变更后的数据的用户接口执行部14的情况下,跳转到步骤S403。另一方面,在不存在预读变更后的数据的用户接口执行部14的情况下,结束处理。
[0110] 在步骤S403中,响应返回部24对进行着预读的用户接口执行部14送出变更后的数据和与该数据对应的预读对象数据关键字。
[0111] 图8是示出用户接口执行装置2中的接收到变更后的数据时的动作的一个例子的流程图。
[0112] 在步骤S501中,数据取得部15从数据提供部3的响应返回部24接收变更后的数据。
[0113] 在步骤S502中,数据取得部15根据变更后的数据和与该数据对应的预读对象数据关键字,从数据存储部16检索相应的数据,针对相应的数据的值,重写变更后的数据的值。
[0114] 在步骤S503中,数据取得部15对使用上述相应的数据的用户接口执行部14,通知数据的值被更新的意思。接收到该通知的事件取得部17根据事件而执行对向提示装置5提示的值进行更新等的处理。
[0115] 图9是示出由数据存储部15管理的数据的形式的一个例子的图。
[0116] 在数据存储部15中,按照key(关键字)-value(值)的组合来存储有从数据提供部3提供的数据。key是由接口定义9所定义的数据取得接口(从“get”开头的接口)的get以后的字符串。例如,在由接口定义9定义了getDataA的接口的情况下,根据该接口而取得的数据的key为“DataA”。另外,在根据数据取得接口而取得的类型是List类型等的Collection类型的情况下,在key之后追加length(长度)、name(名称)、item(项目)等固定格式词(fixed-form word),同时还保存List类型的处理所需的参数。
[0117] 另外,在能够对“get”的接口指定自变量的情况下,由于打算变更通过自变量取得的数据,所以通过在key的末尾追加其自变量来保证数据的同一性。具体而言,在存在“getListC(int id)”的接口的情况下,对在id=1下取得的ListC的长度进行保存的key为“ListC_length_1”这样的形式。通过这样的key的决定方法,能够将由getListC(1)取得的ListC的数据和由getListC(2)取得的ListC的数据区分地存储到数据存储部16。
[0118] value将从数据提供部3提供的数据的值原样地进行存储。在本实施方式1中,所有数据的值被存储为JSON(JavaScript Object Notation(JavaScript对象符号))形式的字符串。数据取得部15在将从数据存储部16取得的数据变换为由接口定义的类型之后,向用户接口执行部14送出数据。
[0119] 图10是示出由预读管理部23管理的预读管理数据的一个例子的图。
[0120] 在预读管理部23中,以key-subscribe的组合来管理从包含于预读管理代码33的接口定义9解释的数据的预读状态。如果数据是预读状态则设为true,如果不是预读状态则设为false。
[0121] 在图10的例子中,示出在从接口定义9解释的数据之中的key为StringB的数据不是预读状态、其它关键字的数据是预读状态。例如,在数据生成处理部25调用并更新对StringB的数据进行更新的方法的情况下,响应返回部24参照预读管理部23的预读管理数据,可知StringB的数据不是预读状态,所以不对用户接口执行部14通知更新后的数据。另一方面,在数据生成处理部25调用并更新对DataA的数据进行更新的方法的情况下,响应返回部24参照预读管理部23的预读管理数据,对预读状态的用户接口执行部14通知更新后的数据。
[0122] 通过进行这样的管理,对不是预读状态的用户接口执行部14不进行不需要的数据的通知,所以能够削减用户接口执行装置2与数据提供部3之间的通信业务量,并且削减用户接口执行装置2中的无用的软件处理。
[0123] <实施例>
[0124] 说明将上述说明的用户接口执行装置2以及数据提供部3应用于车辆导航系统的情况。
[0125] 以下,用户接口执行装置2对应于在汽车的仪表盘中内置的车辆导航系统。输入装置4是安装于驾驶员的转向器的转向遥控器、搭载于车辆导航系统的H/W键、或者红外线遥控器。提示装置5是车辆导航系统的液晶面板。数据提供部3对应于在经由网络的因特网上的服务器中执行的广播节目的节目信息配送服务。另外,作为接口定义9,定义有作为数据取得接口的SongInfo getSongInfo(station_id)。
[0126] 在用户接口执行装置2中,状态转移部18从用户接口设计装置1的状态转移生成部10接收状态转移代码30。另外,数据请求部20从用户接口设计装置1的预读生成部11接收预读执行代码31。另外,数据取得部15从用户接口设计装置1的数据取得生成部12接收储存数据访问代码32。
[0127] 在数据提供部3中,预读管理部23从用户接口设计装置1的预读管理生成部13接收预读管理代码22。
[0128] 通过用户操作输入装置4,在用户接口执行部14的状态成为如果从该状态进行预先确定的次数的操作则向广播节目的信息显示画面转移的状态的情况下,数据请求部20执行作为预读执行代码31的subscribe_SongInfo(station1)。另外,数据取得部15向数据存储部16追加SongInfo_station1的项目(条目),对数据提供部3送出预读请求。此时,作为预读请求,送出作为进行了该预读请求的客户端的车辆导航系统(用户接口执行装置2)的deviceID即“device1”、和key即“SongInfo_station1”。
[0129] 在数据提供部3中,请求处理部22在从用户接口执行装置2接收到预读请求时,向预读管理部23登记SongInfo_station1在device1下是预读状态。然后,响应返回部24将当前的station1的SongInfo返回给用户接口执行装置2。
[0130] 从数据提供部3接收到station1的SongInfo的数据取得部15针对与数据存储部16的key即“SongInfo_station1”对应的value记录tation1的SongInfo,并向事件取得部17传达预读完成的意思。
[0131] 之后,在通过用户的操作而转移到广播节目显示画面的情况下,在数据请求部20对数据取得部15执行getSongInfo(station1)时,从数据取得部15向数据处理部19送出记录在数据存储部16中的tation1的SongInfo。
[0132] 通过进行这样的动作,能够削减用户接口执行部14在需要数据的定时对数据提供部3进行数据取得的请求的处理。
[0133] 另外,在随着时间的经过而由广播节目配送中的乐曲发生变更的情况下,数据提供部3的响应返回部24参照预读管理部23的预读管理数据,掌握SongInfo是预读状态。然后,响应返回部24对用户接口执行装置2的数据取得部15通知变更后的信息。数据取得部15在接收到变更后的信息时,针对数据存储部16的value重写变更后的信息而进行更新,并向事件取得部17通知变更后的信息。
[0134] 根据以上,用户接口执行部14如果是预读状态则始终能够从数据提供部3取得最新的信息。因此,用户接口执行部14无需对延迟大的数据提供部3逐次进行数据的请求,所以能够高速地进行画面的转移或者画面的描绘等,能够向用户提供舒适的操作感。
[0135] 另外,在通过用户的操作,例如开始CD的再现等直至广播节目的信息提供画面为止的操作次数为预先确定的次数以上的情况下,数据请求部20执行预读执行代码31中的作为预读废除请求的unsubscribe_SongInfo(station1),通过数据取得部15将数据存储部16的tation1的SongInfo无效化或者废除。此时,数据取得部15将预读废除请求送出到数据提供部3。数据提供部3的请求处理部22依照接收到的预读废除请求,从由预读管理部23管理的预读管理数据中删除SongInfo_station1在device1下是预读状态的意思的信息。
[0136] 通过数据请求部20执行预读废除请求,从而能够确定在用户接口执行部14的某个状态下成为预读状态的数据,所以在生成决定该处理(与预读废除请求相关的处理)的代码(储存数据访问代码)时,能够确定用于用户接口执行装置2进行动作而所需的存储在数据存储部16中的数据。因此,通过预先规定数据存储部16中的各数据项目(在用户接口的各状态下所需的数据)的最大大小,能够在设计时估计在用户接口执行装置2的动作时所需的数据存储部16的容量。
[0137] 基于以上,根据本实施方式1,在设计用户接口时能够预测存储预读的数据的存储区域的最大大小,并且即使在已预读的数据在预读后被更新的情况下也能够向用户提示更新后的数据。
[0138] <实施方式2>
[0139] 在实施方式1中,说明了分别地设置用户接口执行装置2和数据提供部3的情况,但不限于此。例如也可以一体地设置用户接口执行装置2和数据提供部3。
[0140] 例如有如下情况:在实施方式1的实施例中说明的车辆导航系统中,本车辆执行提供行驶中的当前位置的功能。此时,车辆导航系统对应于用户接口执行装置2,提供本车辆的当前位置的功能对应于数据提供部3。
[0141] 图11是示出本实施方式2的用户接口执行装置34的结构的一个例子的框图。
[0142] 如图11所示,用户接口执行装置34是使实施方式1(参照图1)的用户接口执行装置2和数据提供部3成为一体的结构。另外,用户接口执行部35是在实施方式1的用户接口执行部14中内置数据取得部15以及数据存储部16而成的结构。其它结构以及动作与实施方式1相同,所以在此省略说明。
[0143] 用户接口执行装置34具备用户接口执行部35和数据提供部3。因此,用户接口执行部35从数据提供部3取得数据时的延迟相比于实施方式1变小。另外,在实施方式1中,用户接口执行装置2一般搭载有操作系统(OS),在用户接口执行部14和数据提供部3中存储器空间不同。因此,存在如下问题:在用户接口执行部14与数据提供部3之间交接数据时发生延迟,交接的数据大小以及次数越增加,则延迟变得越大。在本实施方式2中,由于在用户接口执行部35内设置有数据存储部16,所以在取得数据时,能够消除在不同的存储器空间中交接数据的次数。
[0144] <实施方式3>
[0145] 在实施方式1、2中,说明了用户接口执行部14、35是单数的情况,但不限于此。例如,也可以存在多个用户接口执行部。
[0146] 例如,考虑如下情况:在实施方式1的实施例中说明的车辆导航系统中,具备与向驾驶员显示的显示器、向副驾的同乘者显示的显示器以及向后座的同乘者显示的显示器的各个显示器对应的用户接口执行部。
[0147] 图12是示出本发明的实施方式3的用户接口执行装置36的结构的一个例子的框图。
[0148] 如图12所示,用户接口执行装置36的特征在于,具备用户接口执行部41、42、43。另外,用户接口执行部41与提示装置38连接,用户接口执行部42与提示装置39连接,用户接口执行部43与提示装置40连接。此外,用户接口执行部41、42、43具有与实施方式1的用户接口执行部14相同的功能。其它结构以及动作与实施方式1相同,所以在此省略说明。
[0149] 例如在上述车辆导航系统中,能够将向驾驶员显示的显示器设为提示装置38,将向副驾的同乘者显示的显示器设为提示装置39,将向后座的同乘者显示的显示器设为提示装置40,并向提示装置38、39、40的各个装置显示不同的信息。
[0150] 数据取得部44以及数据存储部45在用户接口执行部41、42、43各自中是共用的。通过设为这样的结构,例如在用户接口执行部42预读在用户接口执行部41中所需的数据的情况下,用户接口执行部41无需向数据提供部3进行预读请求,而能够从数据存储部45取得所需的数据。因此,作为用户接口执行装置36整体能够实现高速的响应。
[0151] 为了实现上述动作,例如用户接口执行部41的数据请求部49在执行预读执行代码31时,如图3所示的预读执行代码31的第4行所示那样,将自身的实例(在图3的例子中是“this”)传送给数据取得部44。在数据取得部44中,根据储存数据访问代码32,在数据存储部40中追加项目。此时,在如储存数据访问代码32的第2行所示那样已经是预读状态的情况下,数据取得部44无需对数据提供部3新传送预读请求而结束处理。
[0152] 另外,在数据提供部3中,例如在作为预读状态的“DataA”的值被变更的情况下,接收到变更后的数据的数据取得部44执行储存数据访问代码32的OnNotifyDataA。此时,在将变更后的数据的值记录到数据存储部45之后,针对正在预读DataA的所有接口执行部执行OnChangeDataA。
[0153] 图13是示出由数据存储部45管理的client管理表格的一个例子的图。
[0154] 在数据存储部45中,除了key-value的组合的管理以外,还存储有对正在读出特定的key的client进行管理的client管理表格。
[0155] 在图13中,表示DataA针对clientA(例如用户接口执行部41)和clientB(例如用户接口执行部42)是预读状态,StringB针对clientA是预读状态。
[0156] 基于以上,根据本实施方式3,即使在用户接口执行装置36具备多个用户接口执行部41、42、43的情况下,作为用户接口执行装置36整体也能够实现高速的响应。
[0157] <实施方式4>
[0158] 在实施方式3中,说明了在1个用户接口执行装置36内存在多个用户接口执行部41、42、43的情况,但不限于此。例如,也可以存在多个用户接口执行装置。
[0159] 例如,考虑如下情况:在实施方式1的实施例中说明的车辆导航系统中,如在汽车的仪表盘中内置的车辆导航部件和用户带入汽车内的平板终端,存在多个用户接口执行装置。
[0160] 图14是示出本发明的实施方式4的用户接口执行装置2、61的结构的一个例子的框图。
[0161] 如图14所示,在本实施方式4中,具备多个用户接口执行装置2、61。此外,用户接口执行装置2、61具有与实施方式1的用户接口执行装置2相同的功能。其它结构以及动作与实施方式1相同,所以在此省略说明。
[0162] 例如,在上述车辆导航系统中,能够将在汽车的仪表盘中内置的车辆导航部件设为用户接口执行装置2,将用户带入汽车内的平板终端设为用户接口执行装置61。
[0163] 用户接口执行装置2、61是独立的装置,各自具备数据取得部15、65以及数据存储部16、66。在数据提供部3中,对识别各用户接口执行装置2、61的ID进行管理。具体而言,在执行数据取得部15、65执行的基于储存数据访问代码32的针对数据提供部3的预读的处理( 在图 3 的 例 子 中 ,是 储 存 数 据 访问 代 码 3 2 的 第 5行 所 示 的 处 理 即client.serviceIF.subscribe(key))中,赋予确定用户接口执行装置2、61的deviceID,调用针对数据提供部3的subscribe代码。数据提供部3的请求处理部22根据预读管理代码33,接收deviceID和成为预读对象的数据的key并记录到预读管理部23。另外,在通过数据生成处理部25的处理而数据的值被变更的情况下,响应返回部24参照预读管理部23的预读管理数据,对预读状态的所有用户接口执行装置通知变更后的数据。
[0164] 图15是示出由预读管理部23管理的管理数据的一个例子的图。
[0165] 与实施方式1的预读管理部23的管理数据(参照图10)不同,本实施方式4的预读管理部23的管理数据如图15所示,记录有key与对该key的数据进行预读中的deviceID的组合。在图15的例子中,可知从device1(例如用户接口执行装置2)以及device2(例如用户接口执行装置61)预读DataA。响应返回部24参照预读管理部23的预读管理数据,例如在DataA被更新的情况下,判断为需要向deviceA以及deviceB通知更新后的数据。
[0166] 基于以上,根据本实施方式4,能够得到与实施方式1同样的效果。
[0167] <实施方式5>
[0168] 在实施方式1~4中,其目的在于,降低用户接口执行装置从数据提供部取得数据时的通信延迟以及在设计用户接口时估计数据存储部所需的容量。在本发明的实施方式5中,其目的在于,通过具备对数据存储部进行备份的结构而使用户接口执行装置的启动高速化。
[0169] 图16是示出本实施方式5的用户接口执行装置72的结构的一个例子的框图。
[0170] 如图16所示,用户接口执行装置72具备备份部74以及非易失性存储部75。另外,备份部74与启动停止输入装置73连接。其它结构以及动作与实施方式1(图1)相同,所以在此省略说明。
[0171] 启动停止输入装置73将执行用户接口执行装置2的启动或者停止的信号(启动信号、停止信号)输入到备份部74。
[0172] 备份部74在从启动停止输入装置73被输入启动信号时,使用存储在非易失性存储部75中的数据,恢复数据存储部15的内容以及用户接口执行部14的状态。另外,备份部74在从启动停止输入装置73被输入停止信号时,使数据存储部15的内容以及用户接口执行部14的状态存储(备份)到非易失性存储部75,使用户接口执行装置2停止。
[0173] 非易失性存储部75是SD卡(注册商标)或者HDD等即使无电源供给也能够保持数据的存储设备。
[0174] 另外,用户接口设计装置1的接口定义部7针对接口定义9的数据取得接口,设定表示数据的种类的标志。由此,能够定义根据数据取得接口而取得的数据是否是在电源切断时(用户接口执行装置2的停止时)变化的数据。
[0175] 图17是示出表示针对接口定义9的数据取得接口的数据的种类的标志的设定的一个例子的图。
[0176] 在图17中,指定了fixed的数据表示在电源切断后也不变,指定了periodic的数据表示在电源切断后也变化。通过将这样的定义存储到数据存储部16,能够进行在电源切断后也变化的数据不作为备份的对象这样的处理。
[0177] 图18是示出由数据存储部16管理的数据的形式的一个例子的图。
[0178] 如图18所示,数据存储部16管理key(关键字)-value(值)-type(类型)的组合。备份部74通过参照由数据存储部16管理的图18所示的数据,能够判断在电源切断时将哪个数据存储到非易失性存储部75。
[0179] 例如,在实施方式1的实施例中所说明的车辆导航系统中,保存车辆导航系统的结束时的状态,在下次的启动时需要恢复在结束时动作的应用或者画面所显示的信息的情况下,通过使用本实施方式5的用户接口执行装置72,仅保存结束时的数据之中的在下次的启动时可使用的数据。由此,在下次的启动时无需访问数据提供部就能够恢复上次结束时的数据而启动,所以能够使用户接口执行装置72的启动高速化。
[0180] 基于以上,根据本实施方式5,能够使用户接口执行装置72的启动高速化。
[0181] 此外,在图1、11、12、14、16中,转移设计部6、接口定义部7、状态转移生成部10、预读生成部11、数据取得生成部12、预读管理生成部13、用户接口执行部14、35、41、42、43、64、数据取得部15、44、65、事件取得部17、46、51、56、67、状态转移部18、47、52、57、68、数据处理部19、48、53、58、69、数据请求部20、49、54、59、70、提示控制部21、41、55、60、71、请求处理部22、预读管理部23、响应返回部24、数据生成处理部25、备份部74分别通过由图2的处理器26依照存储在存储器27中的软件程序进行动作来实现。但是,取而代之,转移设计部6、接口定义部7、状态转移生成部10、预读生成部11、数据取得生成部12、预读管理生成部13、用户接口执行部14、35、41、42、43、64、数据取得部15、44、65、事件取得部17、46、51、56、67、状态转移部18、47、52、57、68、数据处理部19、48、53、58、69、数据请求部20、49、54、59、70、提示控制部21、41、55、60、71、请求处理部22、预读管理部23、响应返回部24、数据生成处理部25、备份部74分别也可以构成为硬件(例如构成为针对电信号进行特定的运算或者处理的运算/处理电路等)。另外,也可以使上述两者混合存在。
[0182] 另外,作为将软件的转移设计部6、接口定义部7、状态转移生成部10、预读生成部11、数据取得生成部12、预读管理生成部13、用户接口执行部14、35、41、42、43、64、数据取得部15、44、65、事件取得部17、46、51、56、67、状态转移部18、47、52、57、68、数据处理部19、48、
53、58、69、数据请求部20、49、54、59、70、提示控制部21、41、55、60、71、请求处理部22、预读管理部23、响应返回部24、数据生成处理部25、备份部74的各部和硬件的转移设计部6、接口定义部7、状态转移生成部10、预读生成部11、数据取得生成部12、预读管理生成部13、用户接口执行部14、35、41、42、43、64、数据取得部15、44、65、事件取得部17、46、51、56、67、状态转移部18、47、52、57、68、数据处理部19、48、53、58、69、数据请求部20、49、54、59、70、提示控制部21、41、55、60、71、请求处理部22、预读管理部23、响应返回部24、数据生成处理部25、备份部74的各部进行了组合的概念,也可以使用“处理电路”这样的用词来代替“部”这样的用词。
[0183] 此外,本发明能够在本发明的范围内自由地组合各实施方式、或者将各实施方式适当地变形、省略。
[0184] 虽然详细说明了本发明,但上述说明在所有方式中只是例示,本发明不限于此。应理解为不脱离本发明的范围而能够设想未例示的无数的变形例。

当前第1页 第1页 第2页 第3页