一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

跨平台的协调动作的制作方法

2021-10-19 21:23:00 来源:中国专利 TAG:协调 动作 申请 平台 专利申请

跨平台的协调动作
1.本技术是2016年7月20日提交的申请号为201680043198.9、名称为“跨平台的协调动作”的发明专利申请的分案申请。


背景技术:

2.越来越期望集成提供在不同的平台上运行(或者在不同的操作系统上运行,或者以不同的编程语言来编程)的两个不同的服务的系统,或者以不同的编程语言被编程的两个不同的服务。例如,大型企业现在常常具有多个不同的系统,其不一定很好地彼此集成。作为另一示例,现在家庭和办公室通常充满各种连接的设备,它们常常不是自然地相互通信,或者甚至根本不相互通信。
3.为了协调由这样的系统所提供的服务,我们常规地必须针对每个特定的服务对而具体地设计专门的、专有的接口。这通常涉及具有大规模集成和实现开销,并且当包括新设备和系统时具有高的维护成本的复杂系统,或者涉及针对具体的系统和设备的成本极高的定制开发。


技术实现要素:

4.根据在本文中所公开的一个方面,提供了协调服务器,其用于在作为第一提供方的服务的第一计算机化服务与作为第二提供方的服务的第二计算机化服务之间进行协调(例如,这些可以是两个不同的公司、或公司内的两个不同的部门);其中第一服务基于包括第一操作系统和/或第一编程语言的第一平台来操作,而第二服务基于包括第二操作系统和/或第二编程语言的第二不同的平台来操作。
5.协调服务器提供包括针对多个预先定义类型的动作中的每个类型的动作的相应的动作id的目录,所述多个预先定义类型的动作中的每个类型的动作可以由人类用户通过用户的用户设备来执行(例如,点击用户设备的用户界面中的某一按钮、通过设备提交某一表格、或者执行由用户设备的一个或多个运动传感器检测到的某一运动)。
6.协调服务器被配置为从第一服务接收请求,其请求第一服务成为所述类型的动作中的一个类型的动作的报告者。作为响应,其将第一提供方的id作为报告者id映射至目录的条目中的相应的动作标识符。这由此定义了以下事件:当用户在使用第一服务的同时执行相应类型的动作时,该事件将被认为会发生。协调服务器还被配置为从第二服务接收请求,其请求第二服务成为所述事件的订阅者。作为响应,其将第二提供方的id作为订阅者id映射至目录的所述条目中的所述事件。
7.此外,协调服务器被配置为将平台无关代码模块的相应实例发布至第一服务和第二服务中的每个。平台无关代码模块是这样的模块:其被配置为在包括第一服务和第二服务的不同的第一平台和第二平台的多个不同的平台中的任何一个平台上运行,并且被配置为由此使得第一服务和第二服务能够与协调服务器交互。
8.在操作中,协调服务器从第一服务经由由第一服务运行的平台无关代码模块的实例来接收多个类型的动作中的所述一个类型的动作发生的指示,由此指示所述事件的发
生。基于所述目录,协调服务器接着将针对所述事件的相应的动作id经由由第二服务运行的平台无关代码模块的实例而发送至第二服务,由此使得第二服务响应于所述事件而服务于所述用户的一个或多个用户设备中的一个用户设备。该发送步骤可以响应于从第一服务接收的事件发生的指示,或者
9.因此,动作id充当通用标识符以允许跨平台的事件的一般描述。此外,所述平台无关代码模式使得服务能够无缝地访问在上文中提及的报告和订阅功能,而不管它们的特定的本地实现(并且潜在地访问其他相关功能,例如,允许第一服务器添加新的动作类型,或者在动作id与由第一服务或第二服务所使用的动作的专有定义之间进行转换)。
10.提供了该发明内容以用简化的形式引入在以下的具体实施方式中进一步描述的概念的选择。本发明内容并不旨在标识要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。所要求保护的主题也不限于解决在背景技术部分中所述的缺点中的任何一个或所有缺点的实现。
附图说明
11.为了帮助理解本公开并且示出可以如何实现实施例,将作为示例来对附图进行参考,其中:
12.图1是根据本公开的通信系统的示意性框图,
13.图2是根据第一实现的协调过程的示意性表示,
14.图3是根据第一实现的协调过程的示意性表示,以及
15.图4是根据第一实现的协调过程的示意性表示。
具体实施方式
16.下面描述了允许各方(例如,实施者、终端用户、和/或消费者)独立地或基于来自系统内的设备和应用的反馈事件来创建能够在不同的系统或设备上被执行的逻辑指令集。这是通过软件实现的,所述软件使得第三方系统或设备能够基于来自中央协调服务的反馈来报告事件或执行指令,其中,中央协调服务动态地提供其自身的集成封装以最小化第三方实施者的集成开销。接着,消费系统或设备可以基于在其他不同并且完全不连接的系统中采取的动作来暴露对区域或功能的临时或永久访问。
17.为了实现这一点,系统提供唯一密钥的集中化存储,所述唯一密钥映射至具体(任何或所有)用户的设备、事件、和可执行动作,并且能够用于以直接的方式来协调这些系统之间的数据。此外,该系统能够向消费服务(无论是在用户设备上运行的服务器或应用上或是在两者的组合上实现的)提供软件组件“可执行”或“库”,其提供了用于与被解译为jit(及时)并且实时的系统进行通信的可消耗api(应用编程接口)。这允许利用来自消费的第三方的最小努力的无缝集成,并且允许系统在无需停机时间或升级对消费者的成本的情况下的动态可更新性。
18.在任何事物都被分配了id(例如,动作id:aid,用户id:uid,报告id:rid,订阅者id:sid,系统id:syid)的实施例中,这些id是全局唯一的并且随后被列出在目录中,其中实施者可以利用人类可理解的定义来对他们进行查找和交叉引用。
19.平台无关代码模块提供了集成点,但是也在请求之后将进行请求的动作、用户、和
系统/应用映射至唯一的id,以基于所提供的参数(如果没有提供任何参数,则假设默认映射和参数集)来执行其自己到进行请求的系统的集成。
20.图1示出了根据在本文中所公开的各种实施例的系统。
21.所述系统包括:一个或多个用户设备102、由第一提供方a提供的第一计算机化服务104、由第二提供方b提供的第二计算机化服务、以及用于协调第一服务102和第二服务104的操作的协调器服务108(即,用于集成服务以使它们能够彼此进行交互从而将协同结果提供至用户设备102的终端用户)。一个或多个用户设备102中的每个用户设备可以采用任何合适的形式,例如,智能电话、平板计算机、膝上型计算机、台式计算机、或机顶盒。协调器108是在协调器服务的运营商的服务器上实现的。第一服务104可以在第一提供方a的服务器上实现,或者在由第一提供方a提供、但是在用户的用户设备102中的一个上运行的应用中实现,或者在第一提供方的服务器和由第一提供方提供以在用户设备102上运行的应用的组合上被实现。类似地,第二服务106可以在第二提供方b的服务器上实现或者在由第二提供方b提供、但是在用户的用户设备102中的一个上运行的应用中实现,或者在第二提供方的服务器和由第二提供方提供以在用户设备102上运行的应用的组合上被实现。
22.为了执行在本文中所讨论的各种通信,第一服务104被布置成能够与用户设备102中的至少一个并且与协调器108进行通信;并且第二服务被布置成能够与用户设备102中的至少一个并且还与协调器108进行通信。这些元件中的任何元件之间的所描述的各种通信中的任何通信可以通过各种方式中的任何方式来实现,例如,经由一个或多个网络(例如,互连网或诸如公司内联网、本地无线局域网、或移动蜂窝网络之类的其他有线或无线网络)中的任何网络。
23.第一服务104和第二服务106是经由他们的用户设备(包括在附图中所示出的一个或多个用户设备102的用户)来服务终端用户的服务。例如,它们可以包括在线购物;向用户提供诸如地图、警报之类的信息或者广告的服务;或者使得用户能够将信息(例如,财务信息或完成的调查)提交至相应服务的服务。协调器108不向终端用户(至少不直接地)提供服务,而用协调服务来服务下游提供方a、b,以使它们能够将其服务集成至终端用户。应当注意的是,类似于第一提供方和第二提供方a、b的更多的下游提供方可以由协调器108来服务,以使得以各种组合将各种服务集成至终端用户,但是出于说明的目的,在这里仅仅示出了两个提供方a、b。
24.两个提供方a、b可以是希望一起进行操作以向用户提供一些协作结果的两个不同的公司。在该情况下,协调器服务108的运营商可以是独立方,其使其集成功能对第一提供方和第二提供方a、b可用并且潜在地对可以希望以各种组合进行集成的各种其他提供方可用。可替代地,两个提供方a、b可以是满足同一公司内的不同角色的不同的部门。在该情况下,协调器可以是在公司内提供的内部功能,或者再次可以由给该公司供应(并且潜在地)集成服务的外部方来实现。
25.通常而言,到终端用户的服务的不同下游提供方将倾向于使用多种不同的平台来实现它们相应的服务。这包括使用第一平台来实现第一服务104的第一提供方a,以及使用第二不同的平台来实现第二服务106的第二提供方b。这里的不同平台意指不同的操作系统和/或不同的代码环境(这使得对该服务的任何更新或插件都必须是以该编程语言编写的)。在实施例中,每个服务104、106还使用其自身的内部专有协议来检测由用户通过用户
设备102执行的动作。
26.为了集成两个服务104、106,期望当用户通过用户设备102来执行作为使用第一服务104的一部分的动作时,这可以被报告至第二服务106以便第二服务106作为响应给用户的用户设备102(不一定是通过其执行动作的相同设备)供应与所讨论的动作的性能相关的相关联的服务。
27.作为示例,第一提供方a可以是诸如机票之类的某些产品(商品或服务)的供应商,其提供用于通过用户终端102在线购买产品的服务104。在该示例中,第一提供方a希望与另一提供方b协作以实现忠诚奖励方案,由此用户接收忠诚分数以作为经由第一服务进行购买的交换,其中奖励方案是由提供方b实现的。即,当用户通过第一服务104进行购买时,这应当触发第二服务106以记录对应的奖励分数的量,并且向用户发送消息以关于奖励通知他或她(或者当用户登录到第二服务时,可以使得记录通过在线简档可获得)。然而,提供方a可能不希望必须设计专用的专有api以便能够与b进行交互,也不希望通过这样的方式被绑定来永久地使用提供方b作为奖励方案的提供方。
28.另一示例是对公司内的某些工作流的完成进行“游戏化”。例如,第一服务104可以是由人力资源部门使用的使得用户能够提交某些就职相关的文档(例如,p60)的计算机系统,或者是由会计部门用来提交某些会计相关的文档(例如,纳税申报单)的计算机系统。“游戏化”的思想是向某些任务的完成分配荣誉,就像用户在游戏中获得分数一样,并且由此为尽可能多地完成任务提供激励。尽管在公司内具有多个不同的系统(例如hr系统和会计系统等,其中的每一个都可能是第一服务104),但是公司可以希望以统一风格来提供该游戏化方案。为此,可以部署第二服务106,其实现了记录用户因为完成该方案下所涵盖的各种任务而可以接收到的工作荣誉的分数。
29.为了实现这样的应用或其他应用,协调器108向下游提供方104、106提供了上游服务,以允许第一服务104基于通用动作id的系统向中央协调器服务108报告相关活动(例如,进行在线购买或提交某些文档)的发生,如将在下文中更加详细地讨论的。从特定提供方(在该情况下为a)的服务中被报告的特定动作的组合定义了事件。可选地,其他条件也可以被附加至该事件,例如,由特定用户执行的从特定服务104被报告的特定动作、或者从特定服务104的特定子系统被报告的特定动作。接着,另一协作服务106的提供方(例如b)可以通过协调器服务108来订阅该事件,以使得协调器108将再次使用通用动作id的系统来通知第二提供方106关于事件的发生。响应于由第一服务104向协调器108指示的事件的发生,至第二服务106的报告可以立即从协调器108被推送到第二服务106上。可替代地,协调器108可以等待接收来自第二服务106的查询事件是否发生的请求,此时协调器108相应地进行回复。无论哪种方式,响应于因此被通知关于事件的发生,第二服务106接着执行相关的补充服务,例如,发布奖励分数或工作荣誉。
30.此外,为了实现与协调器108的所描述的交互,协调器108被配置为给利用协调器108的下游提供方中的每个下游提供方发布平台无关代码模块110的相应实例。因此,第一服务104被发布有平台无关代码模块的第一实例110a,并且第二服务110a被发布有平台无关代码模块的第二实例110a。在所讨论的提供方最初使用协调器108之前,代码模块110至少被发布一次,并且可选地也可以在随后的几次中被更新。代码模块110的功能是使得第一提供方和第二提供方104、106能够与协调器108进行通信以便访问在本文中所描述的功能,
而不管由相应的提供方a、b所使用的平台——即操作系统和/或代码环境。为此,平台无关代码模块是以通常由许多平台识别的标准可消耗语言(例如,java script、python、或pearl)来实现的。当在相应的服务104、106上运行时,代码模块110被实时地被解译。其被配置为在运行时将api暴露至协调器服务108,并且由此执行与协调器108的相关握手以及订阅监视。
31.因此,通过通用id与平台无关代码模块110相结合的系统,第一提供方a能够将其服务104与另一提供方b的服务106集成在一起,而无需设计特定于a和b的特定配对的专用接口。另一效果是如果a想要改变伙伴或添加新的伙伴,则它不需要设计新的接口,而是只让另一提供方c替代b(或者附加于b)而经由协调器108订阅其报告。例如,在其中a是在线销售机票的航空公司而b是实现奖励方案的伙伴的示例中,如果a希望与新的奖励方案提供方c(代替或附加于b)一起工作。
32.为了详细描述,协调器108维护包括针对多个可能的预先确定的动作中的每个可能的预先确定的动作的动作id(aid)的目录。可选地,所述目录还可以包含与动作id中的一个或多个动作id中的每个相关联的元数据(例如,人类可读的字符串),以帮助服务104、106的人类实施者识别每个aid的目的。因此,目录可以是以下形式。
[0033][0034][0035]
动作id中的每个动作id与能够由人类用户作为使用用户设备102的一部分来使用服务(例如,第一服务104)执行的相应类型的动作相对应。例如,该动作可以是通过鼠标或触摸屏经由图形用户界面的特定用户输入,或者可以是由用户显示地(有意地)或隐式地(偶然地)执行并且由用户设备102的一个或多个运动传感器检测的运动(例如,用户移动持有用户设备102的手臂,并且这是由设备102上的加速度计检测到的)。
[0036]
在实施例中,动作id中的每个动作id都是全局唯一的。也就是说,id是遍及世界唯一的,或者至少与世界上任何地方的另一随机分配的id相同的可能性是统计上可忽略的。这可以以至少两种不同方式来实现。第一种方式是跟踪已经发布的所有id以确保没有两个被发布的标识符是相同的(这仅仅确保了id在给定系统内是唯一的,并且需要更多管理)。第二种方式是针对每个id使用大量的比特并且随机地生成它们,以使得即使在没有“确保”唯一性本身的情况下被随机分配时,与另一这样的id冲突的可能性是可忽略地小的。这样的示例是128

比特guid(全局唯一标识符)。因此在实施例中,目录中的每一个aid是随机生成的128

比特guid。
[0037]
在实施例中,目录中的动作中的一些或全部可以由协调器服务108的运营商预先确定。这些可以是对多个不同的服务有可能共同的动作,例如,基本ui功能(例如,打开窗口、关闭窗口、点击ok和/或提交表格)。
[0038]
可替代地或额外地,协调器108可以允许提供方(例如,第一提供方a)将针对新类型动作的动作id添加到目录中,这将倾向于更加特定于应用的动作(例如,提交纳税申报单将是特定于会计服务的)。为此,第一服务104通过运行以下形式的代码(这里表示为伪代码)来调用平台无关代码模块110a的相应实例:
[0039]
codemodule

>newaction("submitted p60")(代码模块

>新的动作(“提交的p60”))
[0040]
(其中元数据是可选的)。这甚至可以在用于实现第一服务104的语言的单行代码中被实现。作为响应,协调器108生成新的动作id(例如,以guid为形式),并且将其与指定的任何可选元数据一起添加到目录中。
[0041]
为了监视特定类型的动作的发生,协调器108接着定义目录中的事件。为此,第一服务104使用其平台无关代码模块110a的实例来向协调器108提交请求以成为具有特定动作id的动作的报告者:
[0042]
codemodule

>reporton(aid)(代码模块

>报告关于(aid))
[0043]
接着,协调器108与充当事件的报告者id(rid)的第一提供方a的id相关联地对此进行记录。另外,第二服务106使用其平台无关代码模块110b的实例来向协调器108提交请求以成为源自第一服务104的动作的发生的订阅者:
[0044]
codemodule

>subscribeto(aid,rid)(代码模块

>订阅至(aid,rid))
[0045]
作为响应,协调器108与动作aid和事件的报告者id相关联地记录第二提供者的标识符,作为订阅者id(sid)。
[0046]
再次,在实施例中,代码模块110a、110b的以上请求操作中的任一个或两者可以仅由以用于分别实现第一服务104和第二服务106的编程语言的相应的单行代码来调用。
[0047]
可选地,来自第一服务104或者第二服务106的请求还可以指定特定用户的id(uid)、和/或第一服务的特定系统或子系统的id(syid)。和/或,来自第一服务104的请求(或一个请求)可以可选地以许可设置的形式来指定另外的元数据,以指定被允许订阅所述事件的一个或多个其他提供方的标识符或多个标识符。
[0048]
因此,协调器108在目录的另一部分中创建条目,以定义要针对其进行监视的事件。这可以采取以下形式。
[0049][0050]
(其中方括号中的列是可选的)。因此,事件是(至少)由动作和报告提供方的组合来定义的。即,该事件被认为是在指定类型的动作被报告为从特定的指定提供方发生的情况下发生的,所述特定的指定提供方在该情况下是a(但是如果从另一提供方发生,则同一动作类型将不会触发事件)。如果使用用户id,则这增加了如下的额外条件:事件仅仅被认为在该动作也源自特定的指定用户的情况下发生。如果是syid,则这增加了如下的额外条件:事件仅仅被认为在也源自特定的指定系统或子系统的情况下发生。
[0051]
在实施例中,aid、rid、sid以及在被使用的情况下的uid和/或syid中的每一个都是全局唯一的(根据在上文中给出的相同定义)。例如,每一个都可以是随机生成的128

比特guid。
[0052]
因此,已经在协调器108的目录中建立了该事件,接着,针对事件发生的监视和报告事件发生的过程可以如下进行。
[0053]
在随后的时间,第一服务104检测通过用户的用户设备102中的一个用户设备执行的等待类型的活动的实例的发生。在实施例中,第一服务可以从用户设备102接收以第一服务自身的专有协议(其将不一定对协调器108或第二服务106是可理解的)来表达的对此的指示。例如:user=dave&action=filedtaxreturn(用户=dave&动作=提交纳税申报表)
[0054]
接着,在第一服务104上运行的平台无关代码模块110a将其转换成来自通用id的上述方案的id的组合:fgh567、jkl901[hij789,ijk890],并且将其报告给协调器108。在实施例中,第一服务104可以仅通过对第一服务进行编程的语言的单行代码的方式来调用代码模块110a的该操作。
[0055]
作为响应,协调器108向第二服务108报告该事件,在实施例中仍然根据通用id的方案来表达:fgh567、jkl901[hij789,ijk890]。可替代地,协调器108可以在对此进行报告之前等待由第二服务106来轮询。无论哪种方式,在实施例中,在第二服务104上运行的平台无关代码模块110b将其转换成第二服务106的专有协议(其将不一定对协调器108或第一服务104是可理解的)。例如:
[0056]
event:dave,taxreturncomplete(事件:dave,纳税申报完成)
[0057]
注意,如果使用许可设置,则只在针对该事件的许可中指定了第二提供方的id的条件下,才将其报告给第二服务106。
[0058]
最后,响应于事件被表达为发生在第二服务自身的本地协议中,第二服务106接着执行要与事件的发生集成的相关功能,例如,针对用户的账户记录将奖励分数或工作信用。
[0059]
在实施例中,代码模块110a、110b的以上转换操作中的一个或两者可以仅由以用于分别实现第一服务104和第二服务106的编程语言的相应的单行代码来调用。
[0060]
应当注意的是,在上述通信流中,第一服务104绝不是必须与第二服务106进行通信的。同样,任何用户设备102绝不是必须与协调器108直接地通信的。
[0061]
还应当注意的是,发送至第一提供方和第二提供方的代码模块110的实例不一定是相同的。相反,尽管其大部分由对所有实例110a、110b是共同的代码(例如,大约95%的代码)组成,但是其也包括专用于与相应服务104、106的特定技术进行交互的一小部分(例如,5%),例如,以在动作的专有定义与动作id之间进行转换。在实施例中,协调器108被配置为响应于来自相应服务104、106的请求,动态地生成由每个服务104、106所需要的代码模块的相应实例;即,在并且当由相应的服务104、106需要时,其被配置为按要求生成并发布代码模块110a、110b的相应实例。再次,每个这样的请求可以由相应的服务104、106被写的语言的单行代码来调用。
[0062]
现在参考图2至图4来描述一些更加详细的示例。
[0063]
图2示出了简单的系统访问示例。通信序列如下。在步骤s10处,用户设备102向第一服务104提交请求以报告设备102的用户已经完成某一动作。这可以根据第一服务104的专有协议来表达,或者根据aid和/或uid(如果用户设备102上的应用知道它们)来表达。作
为响应,在步骤s20处,第一服务104向协调器108提交请求以通过指定动作的动作id(aid)和完成该动作的用户的用户id(uid)来报告该动作已经发生。在步骤s30处,用户使用用户设备102来提交用于访问第二服务106的“特征n
…”
的请求。在步骤s40处,第二服务106向协调器108提交请求以询问“用户<uid>是否已经完成动作<aid>?”在步骤s50处,协调器108针对第二服务108对此进行确认或拒绝。在步骤s60处,第二服务106响应于用户设备指示访问是否被适当地准许或拒绝。
[0064]
图3示出了推送模型或通知模型。通信序列如下。在步骤t10处,用户使用第一用户设备102a来向第一服务104提交请求以指定用户已经完成了某一动作。这可以根据第一服务104的专有协议来表达,或者根据aid和/或uid(如果用户设备102上的应用知道它们)来表达。在步骤t20处,作为步骤s20处的响应,第一服务104向协调器108提交请求以通过指定动作的动作id(aid)和完成该动作的用户的用户id(uid)来报告该动作已经发生。在步骤t30处,协调器108通过通知第二服务106用户<uid>已经完成动作<aid>来进行响应。进而,在步骤t40处,第二服务106经由第二用户设备102b或他或她当前出现在的所有用户的设备102a、102b来通知用户在成功地完成动作之后,对第二服务106的一个或多个特征的访问已经变得可用。
[0065]
图4示出了其他平台无关功能。通信序列如下。在步骤u10处,用户向第一服务104的服务器提交请求以指示他或她希望参与协调同时消费第一服务104。在步骤u20处,第一服务104通过通知用户设备102要对此进行实现其应当联系协调器108以便成为要协调的虚拟端点来进行响应。在步骤u30处,用户设备102相应地联系协调器108以说出“提供方a已经针对协调向我进行了发送”。在步骤u40处,协调器108对用户设备102进行响应,以说出“这里是你可以解译的你要求被协调的代码”,并且提供要在用户设备102自身上运行的平台无关代码模块110的实例。在该情况下,第一服务可以被认为是至少部分地在用户设备102自身上的应用中被实现的。接着,在用户设备102上运行的第一服务可以使用其接收的代码模块110,以与上述类似的方式来与第二服务106进行协调。在实施例中,第二服务106还可以作为在用户设备102上运行的另一应用整体或部分地被实现。
[0066]
应该理解的是,以上实施例仅仅是作为示例来描述的。
[0067]
例如,在可替代的实施例中,第一服务104和/或第二服务106不一定需要使用事件的相应的专有定义,并且因此平台无关代码模块110不一定需要就这一点执行转换功能。替代地,第一服务可以检测从用户设备接收的动作的指示,和/或可以在其自己的协议内在预先知道的情况下直接根据通用aid来内部地表达动作的发生。类似地,第二服务106可以直接基于通用aid来行动,而无需首先转换至其自身的相应专有事件定义。最小值仅用于第一服务104将动作id和提供方id发送至协调器108,并且用于协调器108将动作id报告至第二服务。
[0068]
此外,本公开的范围不限于仅第一提供方a和第二提供方b以及第一响应服务104和第二相应服务106。在其他实施例中,所述协调器108的包括到通用id的目录的访问的上游服务也可用于一个或多个其他提供方(起着类似于第一提供者即报告者或第二提供者即订阅者的作用)。例如,扮演类似于第一提供方角色的第三提供方可以重新使用在目录中由第一提供方104生成的动作id,以便向第二提供方106和/或一个或多个其他提供方报告其自身的事件。和/或,扮演类似于第二提供方角色的第四提供方可以订阅第一提供方、第三
提供方、和/或一个或多个其他提供方的事件。
[0069]
各种其他变型可以落入本公开的范围内。
[0070]
根据在本文中所公开的一个方面,提供了一种协调服务器,其用于在作为第一提供方的服务的第一计算机化服务与作为第二提供方的服务的第二计算机化服务之间进行协调,所述第一服务基于包括第一操作系统和/或第一编程语言的第一平台来进行操作,而所述第二服务基于包括第二操作系统和/或第二编程语言的第二不同的平台来进行操作;其中,所述协调服务器被配置为执行以下操作:提供目录,所述目录包括针对能够由人类用户通过所述用户的一个或多个用户设备中的一个用户设备执行的、多个预先定义类型的动作中的每个类型的动作的相应的动作id;从所述第一服务接收请求,该请求请求所述第一服务成为所述类型的动作中的一个类型的动作的报告者,并且作为响应,将所述第一提供方的id作为报告者id映射至所述目录的条目中的相应的动作标识符,由此定义了将被认为是当所述用户在使用所述第一服务的同时执行相应类型的动作时发生的事件;从所述第二服务接收请求,该请求请求所述第二服务成为所述事件的订阅者,并且作为响应,将所述第二提供方的id作为订阅者id映射至所述目录的所述条目中的所述事件;将平台无关代码模块的相应的实例发布至所述第一服务和所述第二服务中的每一个,所述平台无关代码模块被配置为在包括所述第一服务和所述第二服务的不同的所述第一平台和所述第二平台在内的多个不同平台中的任何平台上运行,由此使得所述第一服务和所述第二服务能够与所述协调服务器进行交互;经由由所述第一服务运行的所述平台无关代码模块的实例而从所述第一服务接收所述类型的动作中的所述一个类型的动作的发生的指示,由此指示所述事件的发生;以及基于所述目录,经由由所述第二服务运行的所述平台无关代码模块的所述实例而将针对所述事件的相应的动作id发送至所述第二服务,由此使得所述第二服务响应于所述事件而服务所述用户的所述一个或多个用户设备中的一个设备。
[0071]
在实施例中,由所述第一服务运行的所述平台无关代码模块的实例可以被配置为:以所述第二服务不理解的、所述第一服务的第一计算机可读专有定义的形式接收所述类型的动作的发生的指示;并且将第一专有定义转换为所述相应的动作id以用于向协调器服务器报告。
[0072]
在实施例中,由所述第二服务运行的所述平台无关代码模块的实例可以被配置为:将所述相应的动作id转换为由所述第二服务使用的第二计算机可读专有定义。
[0073]
在实施例中,所述协调服务器可以被配置为分别响应于来自所述第一服务和/或所述第二服务的请求,动态地生成动态代码模块的相应的实例。
[0074]
在实施例中,所述协调服务器可以被配置为从所述第一服务或所述第二服务接收所述用户的用户id,并且被配置为包括所述目录中的所述条目中的所述用户的id,其中,所述事件被认为在具有所述用户id的用户执行所述相应类型的动作的条件下发生。
[0075]
在实施例中,所述动作id、报告者id、订阅者id、和/或用户id中的每一个可以是全局唯一的。
[0076]
在实施例中,所述目录还包括元数据,所述元数据可以包括以下中的一个或两者:被映射至所述动作id中的一个或多个动作id中的每个动作id的相应动作的人类可读定义;和/或许可设置,其指定一个或多个提供方中的哪个提供方被允许订阅所述事件,其中,所述一个或多个提供方至少包括所述第二提供方。
[0077]
在实施例中,所述第一服务可以是至少部分地基于所述第一提供方的服务器实现的,并且所述协调服务器被配置为从所述第一提供方的所述服务器接收所述指示。
[0078]
可替代地,所述第一服务是至少部分地在由所述第一提供方提供的、但是在所述发生通过其发生的用户设备上运行的应用中实现的,并且所述协调服务器被配置为当所述第一提供方的所述应用在所述发生通过其发生的所述设备上运行时从所述应用接收所述指示。
[0079]
在实施例中,所述第二服务可以是至少部分地基于所述第二提供方的服务器来实现的。
[0080]
在实施例中,所述第二服务可以是至少部分地在由所述第二提供方提供、但是在由所述第二服务所服务的用户设备上运行的应用中实现的。
[0081]
在实施例中,由所述第二服务服务的所述用户设备可以是与由所述第一服务从其中接收到所述指示的用户设备相同的用户设备。
[0082]
可替代地,由所述第二服务服务的所述用户设备可以是与由所述第一服务从其中接收到所述指示的用户设备不同的用户设备。
[0083]
在实施例中,所述协调服务器可以被配置为响应于从所述第一服务接收到所述指示而执行向所述第二服务发送所述动作id。
[0084]
在实施例中,所述协调服务器可以被配置为响应于来自所述第二服务的询问所述协调服务器确认所述事件是否发生的请求,而执行向所述第二服务发送所述动作id。
[0085]
在实施例中,预先定义的动作类型可以包括由所述协调服务器的运营商设置的一个或多个默认动作类型;所述协调服务器可以包括这样的机制:其使得所述第一提供方能够提交针对所述类型的动作中的一个或多个新的类型的动作的动作添加请求,并且能够响应于所述动作添加请求而动态地分配所述目录中的所述相应的动作id。
[0086]
在实施例中,所述协调服务器可以被配置为还将针对所述事件的所述相应的动作id发送至一个或多个另外的计算机化服务,而不是仅仅发送至订阅所述事件的发生的所述第二服务;和/或所述类型的动作中的一个或多个类型的动作能够用于由除了所述第一服务之外的一个或多个另外的服务来使用以报告一个或多个类型的动作的发生。
[0087]
在实施例中,所述第一服务可以从不与第二服务进行通信而不是经由协调器间接地与第二服务进行通信。
[0088]
在实施例中,所述代码模块可以被配置以使得所述指示从所述第一服务到所述协调服务器的提交可以由所述第一服务的所述编程语言的单行相应代码来调用。在实施例中,所述代码模块被配置以使得从所述第一专有定义到所述动作id的转换可以由所述第一服务的所述编程语言的单行相应代码来调用。在实施例中,所述代码模块被配置为使得所述动作类型中的一个新的动作类型的定义可以由所述第一服务的所述编程语言的单行相应代码来调用。在实施例中,所述代码模块被配置为使得由所述第二服务从所述协调服务器接收所述相应的动作id可以由所述第二服务的所述编程语言的单行相应代码来调用。在实施例中,所述代码模块被配置以使得从所述动作id到所述第二专有定义的所述转换可以由所述第二服务的所述编程语言的单行相应代码来调用。
[0089]
根据本文公开的另一方面,提供了一种系统:第一服务和第二服务以及协调服务器。
[0090]
根据本文公开的另一个方面,提供了一种用于在作为第一提供方的服务的第一计算机化服务与作为第二提供方的服务的第二计算机化服务之间进行协调的方法,所述第一服务基于包括第一操作系统和/或第一编程语言的第一平台来进行操作,并且所述第二服务基于包括第二操作系统和/或第二编程语言的第二不同的平台来进行操作;其中,所述方法包括:提供目录,所述目录包括针对能够由人类用户通过所述用户的一个或多个用户设备中的一个用户设备执行的、多个预先定义类型的动作中的每个类型的动作的相应的动作id;从所述第一服务接收请求,该请求请求所述第一服务成为所述类型的动作中的一个类型的动作的报告者,并且作为响应,将所述第一提供方的id作为报告者id映射至所述目录的条目中的相应的动作标识符,由此定义了将被认为是当所述用户在使用所述第一服务的同时执行相应类型的动作时发生的事件;从所述第二服务接收请求,该请求请求所述第二服务成为所述事件的订阅者,并且作为响应,将所述第二提供方的id作为订阅者id映射至所述目录的所述条目中的所述事件;将平台无关代码模块的相应的实例发布至所述第一服务和所述第二服务中的每一个,所述平台无关代码模块被配置为在包括所述第一服务和所述第二服务的不同的所述第一平台和所述第二平台在内的多个不同平台中的任何平台上运行,由此使得所述第一服务和所述第二服务能够与所述协调服务器进行交互;经由由所述第一服务运行的所述平台无关代码模块的实例而从所述第一服务接收所述类型的动作中的所述一个类型的动作的发生的指示,由此指示所述事件的发生;以及基于所述目录,经由由所述第二服务运行的所述平台无关代码模块的所述实例而将针对所述事件的相应的动作id发送至所述第二服务,由此使得所述第二服务响应于所述事件而服务所述用户的所述一个或多个用户设备中的一个设备。
[0091]
根据本文公开的另一方面,提供了一种用于在作为第一提供方的服务的第一计算机化服务与作为第二提供方的服务的第二计算机化服务之间进行协调的计算机程序产品,所述第一服务基于包括第一操作系统和/或第一编程语言的第一平台来进行操作,并且所述第二服务基于包括第二操作系统和/或第二编程语言的第二不同的平台来进行操作;其中,所述计算机程序产品包括在计算机可读存储介质上实施的代码,并且被配置为当在协调器服务的服务器上运行时执行以下操作:提供目录,所述目录包括针对能够由人类用户通过所述用户的一个或多个用户设备中的一个用户设备执行的、多个预先定义类型的动作中的每个类型的动作的相应的动作id;从所述第一服务接收请求,该请求请求所述第一服务成为所述类型的动作中的一个类型的动作的报告者,并且作为响应,将所述第一提供方的id作为报告者id映射至所述目录的条目中的相应的动作标识符,由此定义了将被认为是当所述用户在使用所述第一服务的同时执行相应类型的动作时发生的事件;从所述第二服务接收请求,该请求请求所述第二服务成为所述事件的订阅者,并且作为响应,将所述第二提供方的id作为订阅者id映射至所述目录的所述条目中的所述事件;将平台无关代码模块的相应的实例发布至所述第一服务和所述第二服务中的每一个,所述平台无关代码模块被配置为在包括所述第一服务和所述第二服务的不同的所述第一平台和所述第二平台在内的多个不同平台中的任何平台上运行,由此使得所述第一服务和所述第二服务能够与所述协调服务器进行交互;经由由所述第一服务运行的所述平台无关代码模块的实例而从所述第一服务接收所述类型的动作中的所述一个类型的动作的发生的指示,由此指示所述事件的发生;以及基于所述目录,经由由所述第二服务运行的所述平台无关代码模块的所述实
例而将针对所述事件的相应的动作id发送至所述第二服务,由此使得所述第二服务响应于所述事件而服务所述用户的所述一个或多个用户设备中的一个设备。
[0092]
根据在本文中所公开的另一方面,可以提供一种方法,包括(a)使用本机代码模块(被设计为用于执行第一过程)和统一代码模块(被设计为用于执行第二过程),(b)使得所述统一代码模块能够联系服务器并且取回事件的列表(取回的事件)和针对每个事件的相关联的交互id,(c)使得统一代码模块能够监视本机代码模块中与所述取回的事件中的一个事件相对应的事件,(d)使得所述统一代码模块能够当所述本机代码模块内发生了取回的事件时检测所述事件,并且(e)使得所述统一代码模块能够将经检测的事件的信息(例如,特定事件的细节、所述事件的相关联的交互id、运行所述代码模块的身份的用户id)发送至所述服务器。在实施例中,服务器可以维护针对每个用户发生的事件的数据库。
[0093]
已知本文中的公开内容的情况下,其他变型和实现对于本领域技术人员而言可以变得显而易见。本公开的范围不受所描述的实施例的限制,而是仅由所附权利要求来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜