{"id":484,"date":"2012-01-23T12:04:38","date_gmt":"2012-01-23T18:04:38","guid":{"rendered":"http:\/\/garysamuelson.com\/blog\/?p=484"},"modified":"2012-01-23T14:36:37","modified_gmt":"2012-01-23T20:36:37","slug":"bpm-mobility-server-architectures-reviewed","status":"publish","type":"post","link":"https:\/\/garysamuelson.com\/blog\/?p=484","title":{"rendered":"BPM Mobility: Server Architectures Reviewed"},"content":{"rendered":"<h2><em>Forward<\/em><\/h2>\n<p>If you haven&#8217;t already done so I highly recommend you &#8220;tool up&#8221; for iOS (iPhone) or Android development. Speaking more on the Android platform with this point, but Android is based on Linux &#8211; meaning that the Android &#8220;smartphone&#8221; is a small, pocket-sized Linux computer. And, behind this tiny, touch-screen UI, we have an event-driven framework suited for wireless IO (communication) and\u00a0 distributed client (end-user) services. This makes a good fit for BPM mobility as it applies focused, via platform constraints, user-to-process interaction.<\/p>\n<p>So, in warming up to enterprise-scale BPM Mobility, I want to first walk through a few system architectures &#8211; this prior to diving into the details of Android computing. Goal being a build-up towards mobile device UI\/IO requirements: from current state to future capabilities.<\/p>\n<p>&nbsp;<\/p>\n<h2>BPM Desktop Client: Web-portal, JSP Struts\/Tiles<\/h2>\n<div id=\"attachment_404\" style=\"width: 379px\" class=\"wp-caption alignright\"><a href=\"http:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/portal_01.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-404\" class=\" wp-image-404 \" title=\"BPM Portal\" src=\"http:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/portal_01.png\" alt=\"\" width=\"369\" height=\"335\" srcset=\"https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/portal_01.png 615w, https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/portal_01-300x272.png 300w, https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/portal_01-150x136.png 150w, https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/portal_01-400x363.png 400w\" sizes=\"auto, (max-width: 369px) 100vw, 369px\" \/><\/a><p id=\"caption-attachment-404\" class=\"wp-caption-text\">JSP Struts\/Tiles Workhorse of BPM (Lombardi)<\/p><\/div>\n<p>The portal has been with BPM practically from the very beginning and it exists today mostly in its original form as a jsp STRUTS\/Tiles web-application.<\/p>\n<p>Though somewhat dated in its technology, we must give credit as it has been and still is the BPM workhorse: delivering process execution, management, tracking, and reporting to our end-users. However, the portal leaves us wanting. Today&#8217;s users require a &#8220;rich web&#8221; experience &#8211; something beyond the reach of traditional architectures (form based: HTTP get\/post). And, though the BPM Portal remains unsurpassed in features it simply cannot function as a mobile application.<\/p>\n<p>For example, with the portal loaded into a 10&#8243; tablet web-browser, there are just too many active features and UI elements for reasonable touch-screen interaction. I found myself constantly zooming in for navigation and then back out again to review effects and options. However, dashboard and charting elements do work well when broken out on their own as separate elements.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>IBM-BPM v751 \u2013 Advanced: Dojo, Widgets, ReST API<\/h2>\n<div id=\"attachment_497\" style=\"width: 392px\" class=\"wp-caption alignright\"><a href=\"http:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/businessspace_on_sgs_01a.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-497\" class=\" wp-image-497 \" title=\"BPM Advanced with Business Space\" src=\"http:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/businessspace_on_sgs_01a.png\" alt=\"\" width=\"382\" height=\"403\" srcset=\"https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/businessspace_on_sgs_01a.png 636w, https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/businessspace_on_sgs_01a-284x300.png 284w, https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/businessspace_on_sgs_01a-142x150.png 142w, https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/businessspace_on_sgs_01a-400x422.png 400w\" sizes=\"auto, (max-width: 382px) 100vw, 382px\" \/><\/a><p id=\"caption-attachment-497\" class=\"wp-caption-text\">With BPM 751-Advanced, we now have dojo v1.6, Business Space, and ReST APIs<\/p><\/div>\n<p>Business Space enhances end-user experience with iWidgets and supporting dojo infrastructure. \u00a0Users now have rich web-applications without the downside of additional overhead costs required for custom in-house web development.<\/p>\n<p>New BPM ReST APIs also opens the door to previously unattainable (within reason) web capabilities. Fully in-browser, JavaScript libraries now have direct access to process management. This leads to better performing web applications with reduced UI-interrupting side-effects caused by (legacy) HTML \u201cpost\u201d and \u201cget\u201d operations.<\/p>\n<p>Though very close, I\u2019m not sure that we\u2019re at mobile computing. I need to qualify this however because Business Space runs well on Tablets. The catch is that it requires screen real-estate, network bandwidth, and additional CPU. Honestly, these are negligible on today\u2019s desktop\/laptop computers. Even reasonably powerful tablets are fully capable of running Business Space over wifi.<\/p>\n<p>Business Space on a smart-phone though does spot-light a few problems.<\/p>\n<p>Screen real-estate is tight on smart-phones! Slow performance is also noticeable as the phone\u2019s CPU just doesn\u2019t seem to keep up and deliver on the same snappy performance previously experienced on both desktop and tablet execution.<\/p>\n<p>Phones require their own native BPM application.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>Mobile Applications for Mobile Process Management<\/h2>\n<div id=\"attachment_498\" style=\"width: 404px\" class=\"wp-caption alignright\"><a href=\"http:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/mobile_native_architecture_01a.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-498\" class=\" wp-image-498 \" title=\"Mobile Architecture\" src=\"http:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/mobile_native_architecture_01a.png\" alt=\"\" width=\"394\" height=\"403\" srcset=\"https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/mobile_native_architecture_01a.png 657w, https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/mobile_native_architecture_01a-293x300.png 293w, https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/mobile_native_architecture_01a-146x150.png 146w, https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/mobile_native_architecture_01a-400x408.png 400w\" sizes=\"auto, (max-width: 394px) 100vw, 394px\" \/><\/a><p id=\"caption-attachment-498\" class=\"wp-caption-text\">With Android hosting activity services, external BPM requests flow through ReST APIs<\/p><\/div>\n<p>Writing native applications feels counter-intuitive but it\u2019s our only alternative given the constraints and limitations for mobile computing. Moving task services to Android (for example) significantly improves performance. Execution latency and UI \u201clag\u201d disappear as timings drop into sub-second range.<\/p>\n<p>With local execution, we\u2019re looking at:<\/p>\n<ul>\n<li>Reduced IO traffic via local application loading<\/li>\n<li>Discrete JSON server requests via ReST APIs.<\/li>\n<li>Native (java) run-time execution<\/li>\n<li>Local device data-storage. For example, Android includes a database usable for both caching and offline process execution.<\/li>\n<li>Local application services. These include: notification, document viewers, contacts, identity, and geo\/mapping.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>Conclusion<\/h2>\n<p>In working towards an architecture suitable for mobile BPM we take into account accompanying constraints and capabilities. We&#8217;re on a different path in that we&#8217;ve re-focused on building native phone applications.<\/p>\n<div id=\"attachment_476\" style=\"width: 447px\" class=\"wp-caption alignright\"><a href=\"http:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/native_android_neworder_01.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-476\" class=\" wp-image-476  \" title=\"Native Android BPM Task List\" src=\"http:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/native_android_neworder_01.png\" alt=\"\" width=\"437\" height=\"264\" srcset=\"https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/native_android_neworder_01.png 810w, https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/native_android_neworder_01-300x181.png 300w, https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/native_android_neworder_01-150x90.png 150w, https:\/\/garysamuelson.com\/blog\/wp-content\/uploads\/2012\/01\/native_android_neworder_01-400x241.png 400w\" sizes=\"auto, (max-width: 437px) 100vw, 437px\" \/><\/a><p id=\"caption-attachment-476\" class=\"wp-caption-text\">BPM Task List on Samsung Galaxy S II, Android v2.3.6 (Gingerbread), Dual Core Qualcomm CPU \u2013 1.5GHz<\/p><\/div>\n<p>Smartphones require discrete UIs, optimized coding techniques, and light-weight network IO. These challenges though are well worth the investment as mobility advances user-to-process interaction to near-personal proximity.<\/p>\n<p>Acknowledging the tens of millions of new users purchasing smartphones, new expectations are set\/re-set on almost a daily basis. Now&#8217;s the time to revisit our architecture and build-in these future capabilities.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Forward If you haven&#8217;t already done so I highly recommend you &#8220;tool up&#8221; for iOS (iPhone) or Android development. Speaking more on the Android platform with this point, but Android is based on Linux &#8211;<a class=\"moretag\" href=\"https:\/\/garysamuelson.com\/blog\/?p=484\"> Read more&hellip;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4],"tags":[],"class_list":["post-484","post","type-post","status-publish","format-standard","hentry","category-business-process-management-bpm","category-software-architecture"],"_links":{"self":[{"href":"https:\/\/garysamuelson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/garysamuelson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/garysamuelson.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/garysamuelson.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/garysamuelson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=484"}],"version-history":[{"count":16,"href":"https:\/\/garysamuelson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/484\/revisions"}],"predecessor-version":[{"id":503,"href":"https:\/\/garysamuelson.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/484\/revisions\/503"}],"wp:attachment":[{"href":"https:\/\/garysamuelson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/garysamuelson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/garysamuelson.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}