很久以来,十大淘客软件排名,我一直想写这篇文章,在几秒钟的空闲时间里(因为我几乎忘记了如何放松),我想我应该把一些东西放在一起。
几个月前,我在澳大利亚"掌握SAP"研讨会上被要求就Fiori、UI5和SAP HR企业的移动未来展开公开讨论人力资源,工资和成功因素"会议。这当然是一个挑战,我不确定我是否会再次举手,但正如Robbo所说,你只能通过尝试学习。
为了让它更有趣一点,我想我应该建立一个移动UI5应用程序来配合会议。为了让它更有趣,我给自己16个小时的前一周会议开始做的工作。哦,还有云。因为云。
这个"计划"是有一个网站(一个HTML"应用程序"),通过简单的RESTful界面将设备连接到云(SAP HANA云平台),将所有与会者的投票结果发送到一个图表,该图表将随着人们的投票而实时更新。图表将使用WebSockets更新,这样应用程序发送给HCP的任何信息都将自动更新。哦,为了好玩,为了检索问题,大数据的现状,用户需要摇动他们的移动设备。
16小时,我疯了!
SAPUI5和OpenUI5最大的区别之一(除了Open往往是提前发布)是OpenUI5中缺少图表库。因为这不是一个使用任何SAP工具(除了HCP)的SAP产品,所以我认为我最好使用OpenUI5。所以这让我(花了大约一分钟)寻找另一种画图的方法。在Google中输入"开源javascript图表websockets"后,第一个结果是一篇来自科学期刊的论文,接下来的两个结果与D3.js有关。所以我看了一下。
现在玩了一点D3,我对它的功能印象深刻,但对大量的文档和示例印象更深刻。对我来说这是关键。我能复制的例子越多,我需要做的工作就越少,这16个小时看起来非常短。再加上以前人们似乎已经有了D3和websockets来玩得很好了,所以我当然也可以这么做。
现在HCP是我选择的开发平台,我真的掌握了JPA的窍门(尤其是Spring),而且很简单。而且–因为云。
嗯,我肯定我在SCN上看到了一个博客…哦,是的-就在那里。看起来很简单……(哦,我真傻)。值得注意的是jsr356的定义和支持。简单来说,这意味着可以在saphana云平台上定义WebSocket端点,只需使用一些非常简单的类表示法。表示法太棒了,XML太糟糕了,我通过Spring的学习学到了这一点。所以我很高兴继续使用WebSockets。
大约一个月前,我看到了一个很酷的功能,John Astill在一些SAP内部工具上演示了这个功能,在这个功能中,shacking设备进入了"反馈模式",用于发送错误报告和其他有关应用程序的反馈。他告诉我这只是一段简单的代码。所以我去找了。最后我找到了一个叫做震动.js一个叫亚历克斯·吉布森的家伙,住在英国。很好的分享他,特别是要明确什么许可证。我不确定我的使用是否100%正确,因为我似乎偶尔不得不重新启动手机以使其接收新的震动事件(认为浏览器中用于定向事件的侦听器数量有限,有时(特别是在调试时)我不清理我使用过的侦听器。坏我。
所以我有所有的零碎-现在怎么办?是时候开始编码了。
所有的代码都可以在GitHub上找到–https://github.com/wombling/mobilequiz
我将介绍一些更有趣的内容(在我看来)以及结果:
我将包括WebSockets类的全部代码,因为我发现很少有完整的示例说明如何构建这样的服务。我很失望,我不得不使用静态方法来发送更新,但WebSocket支持只在spring4中提供,我还没有太多的经验。更不用说它看起来不像我在下面使用的JSR-356标准那么简单。因此,与Spring依赖注入自动连线/服务的集成将不得不等待。注:问题服务确实有一个接口,引用时使用@Autowired,所以我没有完全放弃这个想法。我知道我应该实现一个接口,并为此进行测试,也许处理了异常,但好吧,16小时的哥们!
值得注意的是Google Gson的使用,它是将pojo转换为JSON和将JSON转换为pojo的最棒的库。这让我的生活轻松多了,强烈推荐。还有,谁想用其他格式发送数据。(当然,除非你觉得自己特别有进取心,在这种情况下,有一种治疗方法,叫做Apache Olingo。)
随着websockets广播的进行和测试(我也使用了暗WebSocket终端来测试),万云,需要一些东西来订阅和反应我的消息。
这实际上是相对的简单–UI5的MV*构建非常适合于从任何内容更新模型(在本例中是websockets更新)和框架来处理其余部分。
下面是从我的admin视图的onInit方法中提取的代码片段。
能够根据我是否在本地通过http和ws运行来更改协议和端口而不是https和wss在HCP上运行是一个重要的考虑因素。实际上,这是一个非常简单的代码,实际上在很多方面都比AJAX调用简单。
我想讨论的另一个代码片段是捕获震动的逻辑。