{"id":3857,"date":"2020-03-26T13:32:43","date_gmt":"2020-03-26T13:32:43","guid":{"rendered":"https:\/\/sandbox.weareadaptive.com\/?p=3857\/"},"modified":"2020-11-18T14:51:18","modified_gmt":"2020-11-18T14:51:18","slug":"showcasing-new-openfin-platform-api-reactive-trader","status":"publish","type":"post","link":"https:\/\/sandbox.weareadaptive.com\/fr\/2020\/03\/26\/showcasing-new-openfin-platform-api-reactive-trader\/","title":{"rendered":"Showcasing the new OpenFin Platform API with Reactive Trader<sup>\u00ae<\/sup>"},"content":{"rendered":"<p><a href=\"https:\/\/sandbox.weareadaptive.com\/2019\/04\/05\/reactive-trader-cloud-major-update\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">Reactive Trader<sup>\u00ae<\/sup><\/span><\/a><span style=\"font-weight: 400;\">\u00a0is our real-time, fully open-source showcase FX trading platform. We recently integrated it with <\/span><a href=\"https:\/\/openfin.co\/openfin-desktop\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">OpenFin Desktop<\/span><\/a><span style=\"font-weight: 400;\"> (formerly OpenFin Cloud Services &#8211; you can take a look at our blog post <\/span><a href=\"https:\/\/sandbox.weareadaptive.com\/2019\/07\/11\/getting-reactive-trader-running-openfin-cloud-services\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\"> to learn more). We\u2019re now excited to announce that Reactive Trader<sup>\u00ae<\/sup> has implemented the new <\/span><a href=\"https:\/\/developers.openfin.co\/docs\/platform-api\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">OpenFin Platform API<\/span><\/a><span style=\"font-weight: 400;\">!\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3861 size-full\" src=\"https:\/\/sandbox.weareadaptive.com\/wp-content\/uploads\/2020\/03\/platform_intro.gif\" alt=\"\" width=\"1024\" height=\"768\" \/><\/p>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400;\">What\u2019s New?<\/span><\/h4>\n<p>The OpenFin Platform API is now available in OpenFin runtime 14+, and represents a significant upgrade to the Layouts 1.0 Service. In this article, we\u2019ll describe what features are available in this new release, and then give you an overview of how we upgraded our showcase application, Reactive Trader<sup>\u00ae<\/sup>, to take advantage of them.<\/p>\n<h3><span style=\"font-weight: 400;\">Snapshots in the Platform API<\/span><\/h3>\n<p>With the new Platform API, the layouts service is completely integrated into the runtime, and available under the platform namespace. It now supports tabbed views, grid views, and even separate window configurations for greater UI flexibility. Since the layout service was an integral part of the OpenFin ecosystem, having it integrated directly into the API will accelerate development and ensure greater compatibility and stability in your OpenFin applications.<\/p>\n<p>To replace workspaces, the Platform API introduces a new concept called <strong><span style=\"color: #27578c;\">snapshots<\/span><\/strong>. Each time you save a snapshot, you\u2019re saving your desktop state with child window information, layout and view positioning, and custom application state. For layouts, the Platform API offers similar functionality, but it now composes the desktop experience into views.<\/p>\n<p>As you can see below, the Platform API now allows you to easily preconfigure a set of snapshots which you can then apply to desktops across your organization at the click of a button.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3887 size-full\" src=\"https:\/\/sandbox.weareadaptive.com\/wp-content\/uploads\/2020\/03\/platform_two_updated.gif\" alt=\"\" width=\"1024\" height=\"640\" \/><\/p>\n<p><span style=\"font-weight: 400;\">You can think of a view as a micro-frontend inside a container window; it allows you to have several views enclosed within a single window, and each view can store its relevant app state in the saved snapshot. If you\u2019re used to the previous Layouts 1.0 service, you could also think of the platform as a replacement for <span style=\"color: #800000;\">startup_app<\/span><\/span><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Our platform configuration for Reactive Trader<sup>\u00ae<\/sup>, for example, looks like this:<\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"default\" data-enlighter-title=\"\">&quot;platform&quot;: {\r\n\u00a0 \u00a0 &quot;uuid&quot;: &quot;reactive-trader-cloud-platform-demo&quot;,\r\n\u00a0 \u00a0 &quot;applicationIcon&quot;: &quot;https:\/\/web-openfin.adaptivecluster.com\/static\/media\/icon.ico&quot;,\r\n\u00a0 \u00a0 &quot;url&quot;: &quot;https:\/\/web-openfin.adaptivecluster.com&quot;,\r\n\u00a0 \u00a0 &quot;defaultWindowOptions&quot;: {\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;contextMenu&quot;: true,\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;frame&quot;: false,\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;url&quot;: &quot;https:\/\/web-openfin.adaptivecluster.com\/openfin-window-frame&quot;\r\n\u00a0 \u00a0 }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<h3><span style=\"font-weight: 400;\">Custom Stylesheets and Window Frames<\/span><\/h3>\n<p>Another exciting change is the ability to add custom stylesheets, and even to customize your entire window frame. While the layouts 1.0 service gave you the ability to customize the tab strip, having the ability to customize the window frame was always a top-rated feature request. Now, each view that you move out of the main platform window can be customized with your own styles and functionality.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3866 size-full\" src=\"https:\/\/sandbox.weareadaptive.com\/wp-content\/uploads\/2020\/03\/platform_three.gif\" alt=\"\" width=\"1024\" height=\"640\" \/><\/p>\n<p>Before the Platform API, developing a custom window frame was achievable, but difficult. Now, you can include your own window frame customization with great ease, allowing you to build in the specific functionality you need. For Reactive Trader<sup>\u00ae<\/sup>, we used a React component to build our own window frame &#8211; but you could use plain HTML, JavaScript, or the frontend framework of your choice. You can also include your own styles, icons, and added logic to give your OpenFin applications the desktop experience your users have come to expect.<\/p>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400;\">Platform Configuration<\/span><\/h4>\n<p>If you\u2019re already familiar with the OpenFin manifest file, you\u2019ll find many of the same options available in the Platform configuration. You can still configure window options, but now you can configure view options as well. The window options have been moved into the snapshot configuration found under the Platform settings. As an example, you can find our window options for Reactive Trader<sup>\u00ae<\/sup> views below.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"default\" data-enlighter-title=\"\">\u00a0 &quot;snapshot&quot;: {\r\n\u00a0 \u00a0 &quot;windows&quot;: [\r\n\u00a0 \u00a0 \u00a0 {\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;autoShow&quot;: true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&quot;defaultCentered&quot;: false,\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;defaultHeight&quot;: 893,\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;defaultLeft&quot;: 4,\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&quot;defaultTop&quot;: 10,\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;defaultWidth&quot;: 801,\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;minHeight&quot;: 600,\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;defaultCentered&quot;: true,\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;resizable&quot;: true,\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;maximizable&quot;: true,\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;minimizable&quot;: true,\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;saveWindowState&quot;: false,\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;frame&quot;: false,\r\n\u00a0 \u00a0 \u00a0 \u00a0 ...\r\n\u00a0 \u00a0 \u00a0 \u00a0 &quot;layout&quot;: {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &quot;content&quot;: [\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&quot;height&quot;: 801,\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&quot;isClosable&quot;: true,\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &quot;reorderEnabled&quot;: true,\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &quot;type&quot;: &quot;stack&quot;,\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ...<\/pre>\n<p><span style=\"font-weight: 400;\">One last bonus &#8211; while you can of course hand-roll the configuration needed for the Platform API, OpenFin provides a <\/span><a href=\"https:\/\/developers.openfin.co\/docs\/platform-api#section-example-layouts\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">handy configuration tool<\/span><\/a><span style=\"font-weight: 400;\"> to generate a template Platform configuration. This is particularly useful if you want to migrate to or experiment with the new Platform API.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400;\">What\u2019s coming next?<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">We\u2019re looking forward to even more exciting changes to the new Platform API from the OpenFin team, and we\u2019ll be integrating them into Reactive Trader<sup>\u00ae<\/sup> as and when they\u2019re released. The roadmap currently includes platform events, hotkey support, platform-defined dialogs and menus, as well as improved <\/span><a href=\"https:\/\/fdc3.finos.org\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">FDC3<\/span><\/a><span style=\"font-weight: 400;\"> support.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400;\">Want to know more?<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">You can learn more about the OpenFin Platform API in this <\/span><a href=\"https:\/\/www.youtube.com\/watch?v=IMob2pOVjS8\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">45 minute video<\/span><\/a><span style=\"font-weight: 400;\">, featuring our Head of Desktop Strategy, <\/span><a href=\"https:\/\/www.linkedin.com\/in\/rikoe\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">Riko Eksteen<\/span><\/a><span style=\"font-weight: 400;\">. In the video, Riko demonstrates the new features in action using Reactive Trader<sup>\u00ae<\/sup>. There\u2019s an extensive Q &amp; A included, but please feel free to reach out to <\/span><a href=\"mailto:riko@weareadaptive.com\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">Riko<\/span><\/a><span style=\"font-weight: 400;\"> or myself with any other questions you might have.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400;\">Keep in touch<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Thanks for taking the time to learn about Reactive Trader<sup>\u00ae<\/sup>, and the new OpenFin Platform API. To try out Reactive Trader<sup>\u00ae<\/sup> yourself, navigate to our installer <\/span><a href=\"https:\/\/github.com\/AdaptiveConsulting\/ReactiveTraderCloud\/raw\/master\/src\/client\/install\/ReactiveTraderCloud-platform.exe\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\"> (for those of you using a Mac, you can use <\/span><a href=\"https:\/\/github.com\/AdaptiveConsulting\/ReactiveTraderCloud\/raw\/master\/src\/client\/install\/ReactiveTraderCloud-platform.dmg\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">this link<\/span><\/a><span style=\"font-weight: 400;\">). You can also check out the code &#8211; and even contribute yourself &#8211; at our <\/span><a href=\"https:\/\/github.com\/AdaptiveConsulting\/ReactiveTraderCloud\/tree\/platform-api\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">Github repository<\/span><\/a><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">At Adaptive we\u2019re always keen to keep Reactive Trader<sup>\u00ae<\/sup> Cloud updated with the latest desktop platform technologies, and we\u2019d love to hear your comments and ideas. Feel free to get in touch at <\/span><a href=\"mailto:info@weareadaptive.com\"><span style=\"font-weight: 400;\">info@weareadaptive.com<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: justify;\"><strong>Author:<\/strong><\/h2>\n<h3 style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/ca.slack-edge.com\/T04U03PJZ-URN1AQXF0-6617d3e1861e-512\" alt=\"Profile photo for Ben\" width=\"174\" height=\"174\" \/><\/h3>\n<h2 style=\"text-align: justify;\"><strong>Ben Spencer<\/strong><\/h2>\n<p style=\"text-align: justify;\">Senior Web Applications Developer, Adaptive Financial Consulting Ltd<\/p>\n<p style=\"text-align: justify;\"><a href=\"mailto:sales@weareadaptive.com\" target=\"_blank\" rel=\"noopener noreferrer\"><span class=\"btn-flat\">Contact us<\/span><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Reactive Trader\u00ae\u00a0is our real-time, fully open-source showcase FX trading platform. We recently integrated it with OpenFin Desktop (formerly OpenFin Cloud &#8230;<\/p>\n","protected":false},"author":24,"featured_media":3861,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,242,135,245,139],"tags":[221,244],"class_list":["post-3857","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-desktop-strategy","category-reactive-web-development","category-showcase","category-software-development-management-processes","tag-adaptive-reactive-trader","tag-showcase"],"_links":{"self":[{"href":"https:\/\/sandbox.weareadaptive.com\/fr\/wp-json\/wp\/v2\/posts\/3857"}],"collection":[{"href":"https:\/\/sandbox.weareadaptive.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sandbox.weareadaptive.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sandbox.weareadaptive.com\/fr\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/sandbox.weareadaptive.com\/fr\/wp-json\/wp\/v2\/comments?post=3857"}],"version-history":[{"count":3,"href":"https:\/\/sandbox.weareadaptive.com\/fr\/wp-json\/wp\/v2\/posts\/3857\/revisions"}],"predecessor-version":[{"id":5503,"href":"https:\/\/sandbox.weareadaptive.com\/fr\/wp-json\/wp\/v2\/posts\/3857\/revisions\/5503"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sandbox.weareadaptive.com\/fr\/wp-json\/wp\/v2\/media\/3861"}],"wp:attachment":[{"href":"https:\/\/sandbox.weareadaptive.com\/fr\/wp-json\/wp\/v2\/media?parent=3857"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sandbox.weareadaptive.com\/fr\/wp-json\/wp\/v2\/categories?post=3857"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sandbox.weareadaptive.com\/fr\/wp-json\/wp\/v2\/tags?post=3857"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}