<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-9156796918421571576</atom:id><lastBuildDate>Wed, 15 Apr 2026 23:08:22 +0000</lastBuildDate><category>Domino</category><category>Lotus User Groups</category><category>XPages</category><category>Midwest Lotus User Group Conference 2009</category><category>Midwest Lotus User Group Conference 2011</category><category>GRANITE</category><category>Lotus User Group</category><category>UI Design</category><category>Midwest Lotus User Group Conference 2010</category><category>iPhora</category><category>Lotus Notes</category><category>Dojo</category><category>IBM Domino</category><category>MWLUG 2010</category><category>MWLUG 2011</category><category>Domino Web Development</category><category>MWLUG</category><category>Notes 8</category><category>Notes client</category><category>iPhora AppBuilder</category><category>IBM Connections</category><category>no-code</category><category>IBM Collaboration</category><category>MWLUG 2014</category><category>Quickr</category><category>business process automation</category><category>Biking</category><category>HCL Digital Solutions</category><category>low-code</category><category>JavaScript</category><category>Lotusphere 2008</category><category>Notes 8.5</category><category>Social Collaboration</category><category>HCL Domino</category><category>ICS Community</category><category>Lotus</category><category>Lotus Community</category><category>iPhora AppPlace</category><category>iPhora Touch</category><category>Adobe Flex</category><category>Twitter Bootstrap</category><category>iPhora Automate</category><category>iPhora Process Automation</category><category>workflow automation</category><category>Dojo/MVC</category><category>Lotusphere 2010</category><category>MWLUG Green Project</category><category>Phora Group</category><category>Social Business</category><category>Domino Web Develpment</category><category>IBM</category><category>IBM Collaboration Conference</category><category>IBM Watson Workspace</category><category>Lotusphere 2009</category><category>NodeJS</category><category>Sametime</category><category>Small Business</category><category>UX Pages</category><category>Vacation</category><category>IBM Sametime</category><category>Linux</category><category>MVC</category><category>MWLUG 2016</category><category>Web Security</category><category>iPhora Foundation</category><category>iPhora ProcessFactory</category><category>Chicago</category><category>Connections</category><category>IBM Notes</category><category>Lotus Foundation</category><category>Lotus Symphony</category><category>MWLUG 2013</category><category>Process Automation</category><category>Training</category><category>Virtualization</category><category>Web Application Development</category><category>Workflow</category><category>Civil War</category><category>Grand Rapids</category><category>IBM Business Partner</category><category>IBM Traveler</category><category>ICS</category><category>ICS user groups</category><category>Lotus Traveler</category><category>LotusScript</category><category>MWLUG 2017</category><category>Nginx</category><category>NoSQL</category><category>Notes development</category><category>Rich Internet Applications</category><category>Trade Show</category><category>Web</category><category>data security</category><category>iNotes</category><category>442nd Combat Regiment</category><category>Angularjs</category><category>Blackberry</category><category>Business Process</category><category>CollabSphere 2018</category><category>Composite Applications</category><category>CouchDB</category><category>DLEX</category><category>Flow-based programming</category><category>Fun</category><category>HCL Nomad</category><category>IBM Bluemix</category><category>IBM Champion</category><category>IBM Think</category><category>IBM Verse</category><category>ICS Community. IBM</category><category>ICS User Group Conference</category><category>Life</category><category>Lotusphere Comes to You</category><category>MWLUG 2009 Conference</category><category>MWLUG 2011 Community Outreach Program</category><category>Midwest Lotus User Group Conference 2013</category><category>Node</category><category>Notes</category><category>Notes 8.52</category><category>RIAPalooza</category><category>Restaurants</category><category>Sametime 8.5</category><category>Ubuntu Server</category><category>XWork</category><category>bootstrap</category><category>business user</category><category>dojo widgets</category><category>domino2025</category><category>AMD</category><category>Abraham Lincoln</category><category>Angular</category><category>Beer</category><category>Citizen Developer</category><category>Cloud Computing</category><category>CollabSphere</category><category>CollabSphere 2019</category><category>DNUG</category><category>Data Binding</category><category>Data Privacy</category><category>Data Visualization</category><category>Dijits</category><category>Docker</category><category>DocuSign</category><category>Dojorama</category><category>Engage 2017</category><category>Engage 2025</category><category>Evanston</category><category>Feeding America Eastern Wisconsin</category><category>Fontawesome</category><category>GDPR</category><category>Gettysburg Address</category><category>Google Fiber for Communities</category><category>HCL Software</category><category>Hiking</category><category>History</category><category>IBM Conference</category><category>Integrated Business Framework</category><category>IoT</category><category>JQuery</category><category>JSON RestFul</category><category>Japanese-American</category><category>Loopback</category><category>Lotus Domino Designer 8.51</category><category>MWLUG 2010 Community Outreach Program</category><category>Node-Red</category><category>North Shore History Bike Tour</category><category>Notes Security</category><category>Open Source</category><category>Pink Connections</category><category>Purposeful Social Collaboration</category><category>REST</category><category>RIA</category><category>React</category><category>SSL</category><category>SharePoint</category><category>Sheraton Milwaukee Brookfield Hotel</category><category>Space</category><category>Space Exploration</category><category>VMware</category><category>Virgil Westdale</category><category>WWII</category><category>Weather</category><category>and Notes client</category><category>compliance</category><category>security</category><category>AI</category><category>ATLUG</category><category>ActionStreams</category><category>Amsterdam</category><category>Apache</category><category>Application Development</category><category>Austin</category><category>BES</category><category>Backbone</category><category>Belgium</category><category>Blackberry Development</category><category>Blue Skies and Thunder</category><category>Bold</category><category>Bugs</category><category>Business Partners</category><category>Business Users</category><category>CMS Expo</category><category>CRM</category><category>CSS</category><category>CentOS</category><category>ChartJS</category><category>Child Information Privacy</category><category>Chinese New Years</category><category>Cloud-based service connectors</category><category>Collabsphere 2022</category><category>Collection</category><category>Collections</category><category>Commuinty</category><category>Community</category><category>Couchbase</category><category>DOS</category><category>DX Objects</category><category>Data Breach</category><category>Design</category><category>Dojo Build</category><category>Dojo Toolkit</category><category>ES6</category><category>Ember</category><category>Family</category><category>Flex JSON Parser</category><category>Food Bank</category><category>Ford Windstar</category><category>Four Seasons</category><category>Funny</category><category>HCL</category><category>HCL SoFy</category><category>HTML</category><category>Hilton Mark Center</category><category>House</category><category>IBM Cloud</category><category>IBM Connect 2016</category><category>IBM ConnectED</category><category>IBM Domino Mobile App</category><category>IBM Granite</category><category>IBM Security</category><category>Indianapolis Colts</category><category>Innovation</category><category>Internet Privacy</category><category>Internet Security</category><category>JSON</category><category>Java</category><category>Josh Bleill</category><category>Kids Food Basket</category><category>LTAP 2010</category><category>LUG</category><category>Lawsuits</category><category>LearningDocs</category><category>Lotus Domino</category><category>Lotus Foundations</category><category>Lotus Notes Training</category><category>LotusLive</category><category>Lotusphere</category><category>Lotusphere 2011</category><category>MSI</category><category>MWLUG 2012</category><category>MWLUG 2014 Community Outreach Program</category><category>MWLUG XPages Design Competition</category><category>Message Queue</category><category>Michigan</category><category>Microsoft</category><category>Microsoft VS Code</category><category>MongoDB</category><category>Moy-Beir</category><category>Moy-Bier</category><category>Music</category><category>Musuem of Science and Industry</category><category>Nomad</category><category>Northwestern University</category><category>Notes training</category><category>OpenSSL</category><category>Pascal.js</category><category>Personal Note</category><category>Phora Group HCL Domino</category><category>Picture of the Day</category><category>Project Tasks</category><category>ReCor</category><category>React.js Vue.js domino2025</category><category>Reactive</category><category>Red Pill Now</category><category>SHA-2</category><category>Secure Collaboration</category><category>Service Oriented Architecture</category><category>Social Impact of Technology</category><category>Spring</category><category>Stephanie A Gerdes</category><category>Storm Chasers</category><category>Supply Chain Management</category><category>TX</category><category>Take Flight</category><category>Terser.js</category><category>The Hauge</category><category>UI Experience</category><category>UI interface</category><category>UXPages</category><category>User experience</category><category>VirtualBox</category><category>Vite.js</category><category>Vuejs</category><category>Watson</category><category>Web Accessibility</category><category>Web Application Server</category><category>Web development</category><category>Webpack</category><category>Windows</category><category>Workplace</category><category>X-Force</category><category>Zilker Brewing Company</category><category>automation</category><category>backbone.js</category><category>cc:Mail</category><category>customer expectation</category><category>data control</category><category>database</category><category>digital automation</category><category>easy-to-buy</category><category>electronic signature</category><category>event bus architecture</category><category>freemium edition</category><category>iPad</category><category>iPhone</category><category>iPhora Flow</category><category>kiosks</category><category>microapps</category><category>panagenda</category><category>pro-code</category><category>product purchase</category><category>reverse proxy</category><category>situation apps</category><category>user Group</category><category>vibe coding</category><title>Domino Interface</title><description>My personal stuff and my interest in Business Processes Automation and Management, Data Security, No-code/Low-code and User Experience.  </description><link>http://dominointerface.blogspot.com/</link><managingEditor>noreply@blogger.com (Domino Interface)</managingEditor><generator>Blogger</generator><openSearch:totalResults>539</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-2922610483512956829</guid><pubDate>Wed, 15 Apr 2026 23:08:00 +0000</pubDate><atom:updated>2026-04-15T17:08:22.181-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">AI</category><category domain="http://www.blogger.com/atom/ns#">event bus architecture</category><category domain="http://www.blogger.com/atom/ns#">HCL Domino</category><category domain="http://www.blogger.com/atom/ns#">IBM Granite</category><category domain="http://www.blogger.com/atom/ns#">iPhora</category><category domain="http://www.blogger.com/atom/ns#">microapps</category><category domain="http://www.blogger.com/atom/ns#">no-code</category><category domain="http://www.blogger.com/atom/ns#">vibe coding</category><title>Architecting Microapps on HCL Domino with a mix of Vibe Coding, Event Bus, and Reimagination, Engage 2026</title><description>&lt;p&gt;Next week I will be presenting the&amp;nbsp;&lt;strong&gt;Breaking the Monolith: Architecting Microapps on HCL Domino&amp;nbsp;&lt;/strong&gt;session at Engage 2026 on April 21th.&lt;/p&gt;&lt;p&gt;Microapps are becoming more and more prevalent since the introduction of phone apps.&amp;nbsp; Now with vibe coding many are creating microapps. They are great for personal productivity, but not so for businesses. Businesses require microapps to be secure and communicate with their other systems. So vibe coding an entire app can be problematic.&amp;nbsp;&lt;/p&gt;&lt;p&gt;In this presentation, I will be combining a mix of vibe coding, no coding, AI and the event bus architecture that was presented last year at the October 2025 openNTF webinar to create a secure microapp architecture on HCL Domino.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Hope to see you there next week.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Abstract&lt;/b&gt;&lt;/p&gt;&lt;p&gt;While HCL Domino has traditionally been the home of monolithic 
applications, the modern landscape of low-code, no-code, and AI demands a
 more modular approach. Monoliths offer simplicity at the start but 
often result in scaling bottlenecks and &#39;brittle&#39; codebases. This 
session explores the transition to a Microapp architecture—a strategy 
that unlocks faster development cycles, superior maintainability, and 
true scalability. Richard will demonstrate how to leverage Domino’s core
 strengths alongside a message-queue-driven design that was presented at
 October 2025 OpenNTF webinar to build flexible, independent application
 modules that are ready for the future of enterprise software.&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2026/04/architecting-microapps-on-hcl-domino.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-8753064760099896295</guid><pubDate>Wed, 10 Dec 2025 14:12:00 +0000</pubDate><atom:updated>2025-12-10T08:12:49.070-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">automation</category><category domain="http://www.blogger.com/atom/ns#">business process automation</category><category domain="http://www.blogger.com/atom/ns#">HCL</category><category domain="http://www.blogger.com/atom/ns#">iPhora Automate</category><category domain="http://www.blogger.com/atom/ns#">low-code</category><category domain="http://www.blogger.com/atom/ns#">no-code</category><category domain="http://www.blogger.com/atom/ns#">Workflow</category><title> What is a Business Workflow, Ancient Roman Perspective</title><description>&lt;p&gt;With all the discussions about AI, automation and what it can do, there seems to be confusion about what is workflow? This has come up a number of times in our discussions with customers.&lt;/p&gt;&lt;p&gt;IBM defines it as:&lt;/p&gt;&lt;p&gt;&quot;A workflow is a system for managing repetitive processes and tasks which occur in a particular order. They are the mechanism by which people and enterprises accomplish their work, whether manufacturing a product, providing a service, processing information or any other value-generating activity.&quot;&lt;/p&gt;&lt;p&gt;Basically it is:&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Automation + Human Element = Workflow&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;AI can assist in improving the effectiveness, but it is the human element that determines whether the workflow best reflects the needs of a business.&lt;/p&gt;&lt;p&gt;Here is a brief fun video about workflow in ancient Rome from my colleague Rob Burton.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;337&quot; src=&quot;https://www.youtube.com/embed/HyD1NC4lTFo&quot; width=&quot;600&quot; youtube-src-id=&quot;HyD1NC4lTFo&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2025/12/what-is-business-workflow-ancient-roman.html</link><author>noreply@blogger.com (Domino Interface)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/HyD1NC4lTFo/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-3300528399394300205</guid><pubDate>Wed, 08 Oct 2025 21:21:00 +0000</pubDate><atom:updated>2025-10-08T15:21:26.598-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">HCL Domino</category><category domain="http://www.blogger.com/atom/ns#">Message Queue</category><category domain="http://www.blogger.com/atom/ns#">Phora Group</category><category domain="http://www.blogger.com/atom/ns#">Service Oriented Architecture</category><category domain="http://www.blogger.com/atom/ns#">Web Application Development</category><title>Presenting the October 2025 OpenNTF Webinar: Creating a Service Oriented Architecture Platform with Domino</title><description>&lt;p&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: sans-serif; font-size: 13.3333px;&quot;&gt;Join me for the October 2025 OpenNTF Webinar. I will be presenting &quot;&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 13.3333px;&quot;&gt;Creating a Service Oriented Architecture Platform with Domino.&quot; This webinar&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: sans-serif; font-size: 10pt;&quot;&gt;will take place on October 16th at 10:00 AM CDT.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: sans-serif; font-size: 13.3333px;&quot;&gt;&lt;b&gt;Abstract&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white; color: #333333; font-family: sans-serif; font-size: 13.3333px;&quot;&gt;Service-oriented architecture (SOA) uses software components called services to create business applications. In many cases, SOA platforms are distributed and utilize message queue or service bus to transfer data and requests between servers that handle different services. This approach allows one to scale up the platform when needed. The architecture of HCL Domino unfortunately was design before the concept of SOA and does not include message queue or service bus within its architecture. Or does it? &amp;nbsp;In this session, Richard Moy will present how you can utilize what Domino already has and create your own SOA architecture based on Domino. We will also discuss why Domino provides some key advantages over other technologies.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white; box-sizing: border-box; color: #333333; font-family: sans-serif; font-size: 10pt;&quot;&gt;To register for this webinar, go to&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://attendee.gotowebinar.com/register/4158217087178039382&quot; style=&quot;background-color: white; box-sizing: border-box; color: #337ab7; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; text-decoration-line: none;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; color: blue; font-family: sans-serif; font-size: 10pt;&quot;&gt;https://attendee.gotowebinar.com/register/4158217087178039382&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2025/10/presenting-october-2025-openntf-webinar.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-4406351081802828405</guid><pubDate>Tue, 07 Oct 2025 16:27:00 +0000</pubDate><atom:updated>2025-10-07T12:16:26.315-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business process automation</category><category domain="http://www.blogger.com/atom/ns#">HCL Domino</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppBuilder</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppPlace</category><category domain="http://www.blogger.com/atom/ns#">iPhora Automate</category><title>New release of iPhora Automate Now Available</title><description>&lt;div style=&quot;font-style: normal;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;We are pleased to announce that the latest release of iPhora Automate, our no-code
        user-driven automation platform. This release (2025091002) brings a new iPhora user experience with significant
        improvements in capabilities and features, along with faster performance. It also provides business users and
        other citizen developers with more capabilities for designing and automating their processes. Unlike other
        solutions, iPhora Automate is built from the ground up as a scalable business automation platform.&amp;nbsp;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;iPhora Automate applies a layered approach to process automation. For solutions
        that need the support of application developers, iPhora Automate provides new enhancements to the PhoraScript
        language and improvements in creating custom web service connectors. There are now more extension points in the
        architecture, which allow application developers to utilize PhoraScript in forms, ActionStreams and processes to
        better address the complex functionality required by some processes.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;The initial loading time has been reduced by 30% to provide not only faster
        response but better performance.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;The following improvements and new features include:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial; font-size: 18px;&quot;&gt;ActionStream Designer&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
    &lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial; font-size: 16px;&quot;&gt;Improved performance and new PhoraScript
            functionality&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial; font-size: 18px;&quot;&gt;Form Designer&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;border: none; font-size: 16px; font-style: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;
    &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Support for Field Access Management based on user role&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Users building an application can now control whether fields in a form are
            visible, read-only, or editable based on the user role.&lt;/span&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
    &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Support for Field Access Management based on workflow task&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;This release allows users building a workflow application to control whether a
            field is visible, read-only or editable for a specific task.&lt;/span&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
    &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;PhoraScript&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Forms can now include event-based PhoraScript code for the following events:
            save, saveNew&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial; font-size: 18px;&quot;&gt;Grid Designer&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;
    &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Show Only Authored Content&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;A new grid setting that limits the listing to only documents authored by the
            current user.&lt;/span&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
    &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Draft Workflow Content&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;A new grid setting that prevents draft documents (unsubmitted workflows) from
            appearing in the list.&lt;/span&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
    &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Widget Support&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;User can now drag and drop certain widgets into a grid column.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;
    &lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;
        &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Buttons&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;/blockquote&gt;
    &lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;
        &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Users can now add buttons to download files or copy a value from a field
                stored in the associated document.&lt;/span&gt;&lt;/p&gt;
    &lt;/blockquote&gt;
    &lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;
        &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
    &lt;/blockquote&gt;
    &lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;
        &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Progress Bar&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;/blockquote&gt;
    &lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;
        &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;For workflow-based grids, users can now add a progress bar to the grid to
                indicate the workflow progress of each document.&lt;/span&gt;&lt;/p&gt;
    &lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: arial; font-size: 18px;&quot;&gt;&lt;b&gt;List Designer&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
    &lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial; font-size: 16px;&quot;&gt;Includes fixes to the importing UI interface&lt;/span&gt;
    &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: arial; font-size: 18px;&quot;&gt;&lt;b&gt;Navigator Designer&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
    &lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial; font-size: 16px;&quot;&gt;Improved error handling and information
            messages&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial; font-size: 18px;&quot;&gt;PhoraScript&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
    &lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial; font-size: 16px;&quot;&gt;New commands and functions including:&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;
  &lt;ul&gt;
    &lt;li&gt;@for / @endfor&lt;/li&gt;
    &lt;li&gt;@getField&lt;/li&gt;
    &lt;li&gt;@select / @case&lt;/li&gt;
    &lt;li&gt;@setField&lt;/li&gt;
    &lt;li&gt;@until / @enduntil&lt;/li&gt;
    &lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;
    &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Improved syntax checking&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;This release improves the syntax checking process for errors and wrong
            commands.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;
    &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Support for both global and application-specific scripts&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Users with Application Developer (or higher) roles can now create scripts for
            use in specific applications or create global scripts that are re-useable within any application.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial; font-size: 18px;&quot;&gt;Process Designer&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;
    &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Improved support for Process Chaining&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Business users can chain different process together without the need for an
            application developer to write custom code.&lt;/span&gt;&lt;/p&gt;
    &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Asynchronous Trigger Support&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Release 2025091002 brings in a new asynchronous triggering module that allows
            business users to include in their processes both asynchronous and synchronous tasks and
            events.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
    &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;External Trigger - Task Support - Webhook&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Individual tasks within a process or ActionStream can now be triggered
            externally by a webhook generated by an external web service&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;
    &lt;p style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;External Trigger - Process Support&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
    &lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Workflow processes can now be triggered and initiated
            by external triggers including:&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;External HTML Web Forms&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
        &lt;li&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Webhooks&lt;/span&gt;&lt;/li&gt;
        &lt;li&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Event Trigger by a Button&lt;/span&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: arial; font-size: 18px;&quot;&gt;Service Connector Designer&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
    &lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Improvements and fixes to the Service Connector
            Designer&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
    &lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Service connector nodes are now automatically created
            and made available in the Process Designer node palette when a connector is published.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote style=&quot;border: none; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
    &lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;Fixes to the Endpoint Design Interface&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
  
  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;To learn more, go to &lt;a href=&quot;https://iphora.io&quot; target=&quot;_blank&quot;&gt;https://iphora.io&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2025/10/new-release-of-iphora-automate-now.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-6150761429675413699</guid><pubDate>Wed, 25 Jun 2025 14:47:00 +0000</pubDate><atom:updated>2025-06-25T08:51:00.093-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CSS</category><category domain="http://www.blogger.com/atom/ns#">ES6</category><category domain="http://www.blogger.com/atom/ns#">HCL Domino</category><category domain="http://www.blogger.com/atom/ns#">HTML</category><category domain="http://www.blogger.com/atom/ns#">iPhora</category><category domain="http://www.blogger.com/atom/ns#">JavaScript</category><category domain="http://www.blogger.com/atom/ns#">Microsoft VS Code</category><category domain="http://www.blogger.com/atom/ns#">Phora Group</category><category domain="http://www.blogger.com/atom/ns#">Web Application Development</category><title>Integration of Microsoft VS Code with Domino, a Hack</title><description>&lt;p&gt;Many components make up a Web application some of which includes CSS and JavaScript. Both CSS and JavaScript has rapidly evolved over the many years that Domino has been used as a Web Application Server.&amp;nbsp; Unfortunately, the editors in Domino Designer has not evolved and you can not add and edit JavaScript ES6 code for example. The new Domino 14.5 I have been told allows one to edit ES6 JavaScript as a file resource, but not as a JavaScript script library file.&lt;/p&gt;&lt;p&gt;One of the most popular tools for editing CSS and JavaScript is Microsoft VS Code. There are some many extensions that you can download and work with many different programming languages.&amp;nbsp; One very nice thing about Microsoft VS Code is that it is free and most developers are familiar with VS Code. In addition, it is much nicer of an editor than what is available in the Domino Designer.&amp;nbsp;&lt;/p&gt;&lt;p&gt;There was discussions about VS Code integration with Domino at one of the past CollabSphere a few years ago.&amp;nbsp; Unfortunately, that discussion never resulted in any progress in that direction.&lt;/p&gt;&lt;p&gt;As we developed our Dojo-based iPhora SPA framework many years ago, we found it frustrating not to being able to create and edit ES6 based JavaScript using the Domino Designer editor. So we search for a way to get ES6 level JavaScript into Domino.&lt;/p&gt;&lt;p&gt;The solution we discovered was importing the JavaScript file through DXL as file resources or as JavaScript file as part of Code elements in the script library.&amp;nbsp; Using an external editor like Microsoft VS Code you can create, debug, minify and edit your JavaScript code.&amp;nbsp; Afterward, you can import the code into Domino.&lt;/p&gt;&lt;p&gt;You can further extend this approach in creating and editing HTML and CSS and any text based data including JSON data. This approach works when creating and editing HTML, JavaScript and CSS from version Domino 9 and higher.&amp;nbsp; I believe it works with older versions of Domino, but we never tested it.&lt;/p&gt;&lt;p&gt;In our sample database, we create web container documents for each component whether it is a JavaScript file, CSS file or HTML file.&amp;nbsp; The HTML web container documents are the same documents with the rich text field that are read when the generating the web page as I shown in my previous blog post on DX Objects. For JavaScript and CSS files, they are merely placeholders that let the code to know what to process using DXL.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZIiqbqtDa4FZRGNTDlOuRiWnrQYWI0u77E2drZ64Y-D7FbTYnFqvORkSQMJnEl4wT_2w_Qef7GIFz8XCdJzeUZ3emEmaUpaXVoxyH9NbFxfpq1uzDA9-Q8u7dOOENoLF-QPKlD_6YYpBd9c-UFFhREA4zPdG_Ka7SAwwJeStLU9pOjrimS95z5e6Ude0/s914/js01.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;450&quot; data-original-width=&quot;914&quot; height=&quot;317&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZIiqbqtDa4FZRGNTDlOuRiWnrQYWI0u77E2drZ64Y-D7FbTYnFqvORkSQMJnEl4wT_2w_Qef7GIFz8XCdJzeUZ3emEmaUpaXVoxyH9NbFxfpq1uzDA9-Q8u7dOOENoLF-QPKlD_6YYpBd9c-UFFhREA4zPdG_Ka7SAwwJeStLU9pOjrimS95z5e6Ude0/w640-h317/js01.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;We have a profile document that provides the location of the HTML, CSS and JavaScript File on your local computer.&lt;div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyRJWBi7DnQid0zCDFqlkORaIj_09_GoVQDwgaKId0OOzUVSR3rLaol1Hmdd-ZkNE4oAMt8lW-CEqk900orKh9sYcJ2vXO11OqCC3ZWIovwuAz6X2ogiLEaY5PUHGdlDic_9AwhaDCQ0KkWzDwwL8opzdV5KQWBBLUvxecu1H_XCDPPsiIAglCTBsUAeM/s963/js02.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;241&quot; data-original-width=&quot;963&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyRJWBi7DnQid0zCDFqlkORaIj_09_GoVQDwgaKId0OOzUVSR3rLaol1Hmdd-ZkNE4oAMt8lW-CEqk900orKh9sYcJ2vXO11OqCC3ZWIovwuAz6X2ogiLEaY5PUHGdlDic_9AwhaDCQ0KkWzDwwL8opzdV5KQWBBLUvxecu1H_XCDPPsiIAglCTBsUAeM/w640-h160/js02.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;The local file system contains the files that you create and edit using Microsoft VS Code.&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8Yj8FsWSdmVEUsf3tEzRE9rbZaxaOlcvxySDP0PRcXfvwOdKpefN8DNUAhoO5QZGTtHksKBsIsMyH7MaHMXCLD1TKeVGUQVXZw434U6g7wT7Al5U6Dq3ipTWQt7k7G8qYJD21zznzW1IUqTAEgmVje0gO0uJchxmtZAQCavaPSAVG8wNxl9du-0uapwI/s493/js03.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;460&quot; data-original-width=&quot;493&quot; height=&quot;598&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8Yj8FsWSdmVEUsf3tEzRE9rbZaxaOlcvxySDP0PRcXfvwOdKpefN8DNUAhoO5QZGTtHksKBsIsMyH7MaHMXCLD1TKeVGUQVXZw434U6g7wT7Al5U6Dq3ipTWQt7k7G8qYJD21zznzW1IUqTAEgmVje0gO0uJchxmtZAQCavaPSAVG8wNxl9du-0uapwI/w640-h598/js03.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;With Microsoft VS Code, you can create and edit based on the file structure that you need in a much more organized fashion.&amp;nbsp; It has built-in ability to highlight missing or incorrect HTML tags or missing } or ) which help when coding.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhLcgj07ghoXHh8PzfF1v-GHgLlFcDmnn8zCTA6307wYYe4n0NJYArbwiAhmB6IAfLueISazYlAGg4UQas4UeBTH0k7zxspmjPVQROXL33y9E_qPcgUNoFlKo_5fMGuCNRuPFMZ6oVNydt_vZ3xGSIP9LDQHcap-m-sRVKsX1EPyMlPMPzURHTmWDtrM4/s1046/js05.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1046&quot; data-original-width=&quot;1044&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhLcgj07ghoXHh8PzfF1v-GHgLlFcDmnn8zCTA6307wYYe4n0NJYArbwiAhmB6IAfLueISazYlAGg4UQas4UeBTH0k7zxspmjPVQROXL33y9E_qPcgUNoFlKo_5fMGuCNRuPFMZ6oVNydt_vZ3xGSIP9LDQHcap-m-sRVKsX1EPyMlPMPzURHTmWDtrM4/w638-h640/js05.jpg&quot; width=&quot;638&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In our Domino database view, we have a refresh button that corresponds to reading the local file, determining whether it is a HTML, JavaScript or CSS file and process accordingly.&amp;nbsp; For HTML files, it pushes the HTML code into the rich text field of the web container document and for JavaScript and CSS files it pushes the code into Domino via DXL.&amp;nbsp; The Refresh All button cycles through the document collection and processes all the files.&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU3ERPatbKKvb993rVkYyQ8C3N21RJaomW_8h0l1LS9Z2MzVVc-CghTqKyKcn2QAhsETIOuI5G-_EoJMgQzUEQPBOqK4x7eosyQ9oBA9iTh9WjCIVdJaAOoGGNK9o7Nt5bFiRDoOgkwHIYwjTBuFDHaKrtMbcn0S9zvjbxSWP1hyphenhyphen-KBvS5UfE_saYrjaY/s1248/js04.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;864&quot; data-original-width=&quot;1248&quot; height=&quot;444&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU3ERPatbKKvb993rVkYyQ8C3N21RJaomW_8h0l1LS9Z2MzVVc-CghTqKyKcn2QAhsETIOuI5G-_EoJMgQzUEQPBOqK4x7eosyQ9oBA9iTh9WjCIVdJaAOoGGNK9o7Nt5bFiRDoOgkwHIYwjTBuFDHaKrtMbcn0S9zvjbxSWP1hyphenhyphen-KBvS5UfE_saYrjaY/w640-h444/js04.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Though this is a hack, this approach plus the DX Objects provide Web designers and developers the ability to create Web sites and applications on HCL Domino using more traditional Web development approaches. The Web designer or developer does not necessarily need Domino experience to create the web pages.&amp;nbsp; The Domino platform have many drawbacks when it comes to creating Web applications.&amp;nbsp; However, with a little bit of imagination and hacking it is still one of the best Web application platforms.&lt;/p&gt;&lt;p&gt;This is the last of this series.&amp;nbsp; Below are the links to the previous two blog posts and the sample databases.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2025/06/out-with-old-in-with-old-building-your.html&quot;&gt;https://dominointerface.blogspot.com/2025/06/out-with-old-in-with-old-building-your.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2025/06/engage-2025-visualize-your-domino-data.html&quot;&gt;https://dominointerface.blogspot.com/2025/06/engage-2025-visualize-your-domino-data.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #2b00fe; text-decoration-line: none;&quot;&gt;&lt;a href=&quot;https://phoragroup.com/files/engagedemo.zip&quot;&gt;https://phoragroup.com/files/engagedemo.zip&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br style=&quot;background-color: white; color: #4e4e4e; font-family: Roboto, sans-serif; font-size: 15px;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2025/06/integration-of-vs-code-with-domino-hack.html</link><author>noreply@blogger.com (Domino Interface)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZIiqbqtDa4FZRGNTDlOuRiWnrQYWI0u77E2drZ64Y-D7FbTYnFqvORkSQMJnEl4wT_2w_Qef7GIFz8XCdJzeUZ3emEmaUpaXVoxyH9NbFxfpq1uzDA9-Q8u7dOOENoLF-QPKlD_6YYpBd9c-UFFhREA4zPdG_Ka7SAwwJeStLU9pOjrimS95z5e6Ude0/s72-w640-h317-c/js01.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-725210338308194373</guid><pubDate>Fri, 13 Jun 2025 17:47:00 +0000</pubDate><atom:updated>2025-06-13T11:47:53.197-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Domino Web Development</category><category domain="http://www.blogger.com/atom/ns#">DX Objects</category><category domain="http://www.blogger.com/atom/ns#">HCL Domino</category><category domain="http://www.blogger.com/atom/ns#">iPhora</category><category domain="http://www.blogger.com/atom/ns#">Web development</category><title>Out with the Old, In with the Old, Building your Domino Web Application using DX Objects</title><description>&lt;p&gt;Building a Web application on HCL Domino can be challenging because there are so many ways of creating a Web application. There is just no design pattern to follow or best practices.&amp;nbsp; This is good for us who like to experiment, but bad for developers who just want to follow an official approach.&amp;nbsp; You can use XPages, classic Domino Web with Pages, computing fields and computed text with formula language or you can create apps using REST APIs with LotusScript, Java , DAS (please no) , view read entries or even DRAPI as Paul Withers has demonstrated on his blog,&amp;nbsp;&lt;a href=&quot;https://paulswithers.github.io/blog/2024/08/15/xpages-web-1/&quot;&gt;https://paulswithers.github.io/blog/2024/08/15/xpages-web-1/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;However, there is little talked about a very old technique that dates back to the beginnings when Domino became web enabled.&amp;nbsp; As part of my data visualization session demo at Engage 2025, I used this technique to generate the web pages and dashboards.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;This technique allows you to separate the form, data and business logic and creates a standardize design pattern for one to build web applications. XPages is the only other approach that comes close in enforcing a design pattern.&lt;/p&gt;&lt;p&gt;So what is this technique? A few years ago, I was looking for a way to create a blog for our web site that we had full control. Our Wordpress site was hacked even before we were finished because of vulnerabilities in plug-ins and later it was discovered that the large hosting company did not properly secure passwords. Go figure. But all too familiar.&lt;/p&gt;&lt;p&gt;I attempted to use the Domino Blog template as a replacement.&amp;nbsp; However, trying to modify the Domino blog template was a journey of frustration and a series of futile actions. I truly believe in the separation of form, data and business logic and the Domino Blog template is another example to the contrary. As I dug deeper into the code there was a technique in generating web pages that I had not seen or hear of before.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I coined the phrase DX Objects for this technique. The approach is quite simple but powerful. Each web page is represented by a Web Navigator/Form pair that forms together as a Web page container.&amp;nbsp; Located in each form is a Rich Text Field called html along with other CGI fields that you want to include. Put these all into a sub form.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVF5MvzBAaKODxluwS-Oeee5KDwIRg8X5jF4dnFVq7DSKt_f-l5AMTJz5AZ1uYjh8SJfae7XwSY3bdroXAytRP66ad-7-di96KKzcf3_5A32AJXQP37yN9fEZnFk8OlVEEArGAmL4W07Sp-USBqwvwxZMIiOXPAWHxk16xNtQMiXu6fDIBFTzDGzhE7ys/s386/Image4.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;253&quot; data-original-width=&quot;386&quot; height=&quot;210&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVF5MvzBAaKODxluwS-Oeee5KDwIRg8X5jF4dnFVq7DSKt_f-l5AMTJz5AZ1uYjh8SJfae7XwSY3bdroXAytRP66ad-7-di96KKzcf3_5A32AJXQP37yN9fEZnFk8OlVEEArGAmL4W07Sp-USBqwvwxZMIiOXPAWHxk16xNtQMiXu6fDIBFTzDGzhE7ys/s320/Image4.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtGNDisLrbSEg5TRyDU4KYvPIROQHvXhkso-k896jAZeJd-_MQL1Q4CJceXGKfTFcXeYS-Ni_xUluDSPk_w_G5CvZ2ISGueRriX8arUyy1spQ1NTFNXs24u3Mj0TR0TnzENBP7ekRKzJNEpNQM2p1DslKEE6SiO-a8sU6-pZbtXk2-xO_KTdf6DkZ_iLU/s355/Image2.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;295&quot; data-original-width=&quot;355&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtGNDisLrbSEg5TRyDU4KYvPIROQHvXhkso-k896jAZeJd-_MQL1Q4CJceXGKfTFcXeYS-Ni_xUluDSPk_w_G5CvZ2ISGueRriX8arUyy1spQ1NTFNXs24u3Mj0TR0TnzENBP7ekRKzJNEpNQM2p1DslKEE6SiO-a8sU6-pZbtXk2-xO_KTdf6DkZ_iLU/s320/Image2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfZCQmLnEvMB32L3Fn9XFT0m_jn6HjaViyi_uoTHysJjEUdPcdw7mPxvZoQOEdKVB0pQT8_kj3eFhyyguxNU97HLf0LLoOPyyrji1pAEHJumR5aFE5Pwk6QLtMSxBoUqQ65dc9hy4fFR3Lierbu7rgoXmkmOcsHm46CKjNJjLElf8YTKNBERUgRTuoveQ/s864/Image8.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;529&quot; data-original-width=&quot;864&quot; height=&quot;245&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfZCQmLnEvMB32L3Fn9XFT0m_jn6HjaViyi_uoTHysJjEUdPcdw7mPxvZoQOEdKVB0pQT8_kj3eFhyyguxNU97HLf0LLoOPyyrji1pAEHJumR5aFE5Pwk6QLtMSxBoUqQ65dc9hy4fFR3Lierbu7rgoXmkmOcsHm46CKjNJjLElf8YTKNBERUgRTuoveQ/w400-h245/Image8.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;The WebQueryOpen (buildWebPage) agent in the form is triggered when the user navigates to the Web page that has the corresponding name of the navigator.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;The buildWebPage agent reads from a rich text field in a document with the html that you want to generate and display the web content. The document doesn&#39;t have to be in the same database. This allows you to secure the content and not allow web access.&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;For static web pages that is all you have to do. But more interesting is to use the concept that is found in the Domino Blog template that allows you to add complex business logic in building the web content, DX tag markups with the format of &amp;lt;$DX(something)$&amp;gt;.&amp;nbsp; Now you can use any mark up you want, but for the demo I used the standard DX markup found in the template.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;The goal is to replace the DX markup with business logic that you need and output the response to be included in the html generation of the Web page.&amp;nbsp; The response could be html, text, JSON or others.&amp;nbsp; That depends on your need.&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;In our example below we have the &amp;lt;$DX(CurrentYear)$&amp;gt; and it calls a LotusScript function that returns the current year.&amp;nbsp; That is simple enough, that you can do with computed text in a Domino Page.&amp;nbsp; However, what happens when you need to return a response that needs to lookup data even on a different server, process the data based on a variety of criterions. It maybe possible with formula language, but most likely not.&amp;nbsp; In addition, you are still limited to 32K.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;You can even use it to generate fetch calls to REST APIs to get data or info during the onload process.&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM3B1fn2oi5zYKtGcAaYUp0FO1xtDGyyTDGAveMExNKn13EENxbzh8OnMLqzBX8exOCQVvir_batXJfrdeOA9EIDX_HENSh6yGTF9idajHCvy4X5F-PJyIrIChjljnGrf_ADu6m6bhL-7HebzNawui-ZLE8C9NgZborunxOmhLwCCGl1074-DmrRxyfgQ/s1162/Image10.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;852&quot; data-original-width=&quot;1162&quot; height=&quot;470&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM3B1fn2oi5zYKtGcAaYUp0FO1xtDGyyTDGAveMExNKn13EENxbzh8OnMLqzBX8exOCQVvir_batXJfrdeOA9EIDX_HENSh6yGTF9idajHCvy4X5F-PJyIrIChjljnGrf_ADu6m6bhL-7HebzNawui-ZLE8C9NgZborunxOmhLwCCGl1074-DmrRxyfgQ/w640-h470/Image10.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZuzTEgzioL4KbFCBRTSoZOWEMugxOLBhldNW2sBxhk58puMK1PiUcl7jxrl2U3-j9XB6G2GtBe0t7VqAkAwzpzjQmUEHLWeT2AoPOrOMNy6CHCuro0x6m0lR9G8M7hAhoFDyaHFurMbJ7iF6YIgl1erDTUEhXLv4FecL87bmLXdQGB95bRShnJM5jEek/s950/Image12.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;872&quot; data-original-width=&quot;950&quot; height=&quot;588&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZuzTEgzioL4KbFCBRTSoZOWEMugxOLBhldNW2sBxhk58puMK1PiUcl7jxrl2U3-j9XB6G2GtBe0t7VqAkAwzpzjQmUEHLWeT2AoPOrOMNy6CHCuro0x6m0lR9G8M7hAhoFDyaHFurMbJ7iF6YIgl1erDTUEhXLv4FecL87bmLXdQGB95bRShnJM5jEek/w640-h588/Image12.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;And here is the results of demo01 page.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9sjo06zehZ2paXtGTqGVfvUrYWelg5AE-8uZ_ORvAxDVCOLM6kbRrfy40pQ9VhmbgInX9Ro9ZePqH_ptV1cUunl5y2Ni2wSrIRP0q_1c6zu7P-IchHnzcAJoiK40HWqFQ9uxvhj1rpM4Qo2yhm8gmLsS4dXXpC4MbOCv1NCGnUNmFO5qG84jPPVyocqE/s1919/image.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;888&quot; data-original-width=&quot;1919&quot; height=&quot;296&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9sjo06zehZ2paXtGTqGVfvUrYWelg5AE-8uZ_ORvAxDVCOLM6kbRrfy40pQ9VhmbgInX9Ro9ZePqH_ptV1cUunl5y2Ni2wSrIRP0q_1c6zu7P-IchHnzcAJoiK40HWqFQ9uxvhj1rpM4Qo2yhm8gmLsS4dXXpC4MbOCv1NCGnUNmFO5qG84jPPVyocqE/w640-h296/image.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The advantages of creating your web page with DX Objects are:&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Integration to more up-to-date Dojo/custom widgets or widgets created with React, Vue or other frameworks&lt;/li&gt;&lt;li&gt;HTML output that inhere to HTML 5 standards&lt;/li&gt;&lt;li&gt;Incorporate complex business logic&lt;/li&gt;&lt;li&gt;Add better access control for REST API based applications&lt;/li&gt;&lt;li&gt;The web content can easily excess the 32K limitations&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;For us at Phora Group, we have more advanced features that utilizes our LotusScript Flex Parser and our LotusScript HTML Parser to provide what we need for iPhora.&amp;nbsp; However, there is no limit on what you can do. Only your imagination limits you.&amp;nbsp; You don&#39;t have the crazy 32K limitation of computed text and other restrictions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Performance wise the web page generation is in par with other approaches. It depends on the complexity of your business logic, but also how you get the content.&amp;nbsp; If you are using a lazy load approach to retrieve your data, then the web generation will be extremely fast.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can get the sample Engage 2025 databases that I created from my previous post.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2025/06/engage-2025-visualize-your-domino-data.html&quot;&gt;https://dominointerface.blogspot.com/2025/06/engage-2025-visualize-your-domino-data.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a follow up to this post, next time we will cover how to have basic VS Code&amp;nbsp;integration with Domino and create the HTML, JavaScript, and CSS all using VS Code and have it pushed into Domino.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2025/06/out-with-old-in-with-old-building-your.html</link><author>noreply@blogger.com (Domino Interface)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVF5MvzBAaKODxluwS-Oeee5KDwIRg8X5jF4dnFVq7DSKt_f-l5AMTJz5AZ1uYjh8SJfae7XwSY3bdroXAytRP66ad-7-di96KKzcf3_5A32AJXQP37yN9fEZnFk8OlVEEArGAmL4W07Sp-USBqwvwxZMIiOXPAWHxk16xNtQMiXu6fDIBFTzDGzhE7ys/s72-c/Image4.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-3412643843976098143</guid><pubDate>Mon, 09 Jun 2025 11:43:00 +0000</pubDate><atom:updated>2025-06-09T05:43:48.745-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Data Visualization</category><category domain="http://www.blogger.com/atom/ns#">Engage 2025</category><category domain="http://www.blogger.com/atom/ns#">HCL Domino</category><category domain="http://www.blogger.com/atom/ns#">Phora Group</category><category domain="http://www.blogger.com/atom/ns#">The Hauge</category><title>Engage 2025: Visualize Your Domino Data with Open Source Tools Session Slides and Databases</title><description>&lt;p&gt;Thank you everyone for attending my Engage 2025 session, Visualizing your Domino Data using Open Source Tools. Though I was up against some formidable sessions, I was surprised to have close to 30 attendees in my session. As promised, here is the PowerPoint presentation and sample databases and code.&lt;/p&gt;&lt;p&gt;I would like to thank Kris and Tom for an incredible event and for selecting my session for this year&#39;s event. They did a wonderful job in continuing the tradition of making Engage a premium event.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;After Engage 2025, I spent a day visiting different sites in The Hague.&amp;nbsp; The walk to the beach was a bit longer than I was told!&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://phoragroup.com/files/Visualize_Your_Domino_Data_with_Open_Source_Tools.pdf&quot;&gt;https://phoragroup.com/files/Visualize_Your_Domino_Data_with_Open_Source_Tools.pdf&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://phoragroup.com/files/engagedemo.zip&quot;&gt;https://phoragroup.com/files/engagedemo.zip&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNLeXwg3BwftsbCt7HiDPNYNzuZ4YV87K3-jPSA3tHToduvOW7vjqdIpLWIgkZBKD-7CLVGhXjG2B4ELrEKT0lWue9qcz-v_bd6TPXCU2cyPBy8TfviO7wY2Akh3hyJuHhYLoLtCP6ULYF_6Z7uyC06sfeMYKbsH2tdh0KO7IzkDzTM6wMlpGXMs4OXFk/s4032/IMG_4905.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNLeXwg3BwftsbCt7HiDPNYNzuZ4YV87K3-jPSA3tHToduvOW7vjqdIpLWIgkZBKD-7CLVGhXjG2B4ELrEKT0lWue9qcz-v_bd6TPXCU2cyPBy8TfviO7wY2Akh3hyJuHhYLoLtCP6ULYF_6Z7uyC06sfeMYKbsH2tdh0KO7IzkDzTM6wMlpGXMs4OXFk/w400-h300/IMG_4905.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJFHnhGztYWvyDAXhGwGfhbFZASsjNUoHNVNaPa2jM8EWxjnpFW0nDCf3EPFOOu5NzK6696_EOGskSytqfuJ9OovDzf2Z6q2rTu2IQ_MUomGiczYU3Mp3v1uclItpQMfSxLqNljCi1_F_lRkyJ6KJ14ibFKP-Li9XQvClOUKjYp45D4zuR5Ma1S-DHfOY/s4032/IMG_4899.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJFHnhGztYWvyDAXhGwGfhbFZASsjNUoHNVNaPa2jM8EWxjnpFW0nDCf3EPFOOu5NzK6696_EOGskSytqfuJ9OovDzf2Z6q2rTu2IQ_MUomGiczYU3Mp3v1uclItpQMfSxLqNljCi1_F_lRkyJ6KJ14ibFKP-Li9XQvClOUKjYp45D4zuR5Ma1S-DHfOY/w300-h400/IMG_4899.JPG&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Bqg0RBYKaIcbqPDBpRx17a-rU25pzgCy2narM_XH4TnLYKHTqgy9RfC8YVQpZVAA8rgIZ2tF8ewwElTaQe3GvJSRPrzRq636OTskVqUV8TMuy4oi-5ZQbOieVHPpZlmxar9m5JFEmPD2ExW-hoOw3307-g3CTZFGnSy0OLQUmksusMs0SdjUO6fjVUk/s4032/IMG_4879.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Bqg0RBYKaIcbqPDBpRx17a-rU25pzgCy2narM_XH4TnLYKHTqgy9RfC8YVQpZVAA8rgIZ2tF8ewwElTaQe3GvJSRPrzRq636OTskVqUV8TMuy4oi-5ZQbOieVHPpZlmxar9m5JFEmPD2ExW-hoOw3307-g3CTZFGnSy0OLQUmksusMs0SdjUO6fjVUk/w400-h300/IMG_4879.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2025/06/engage-2025-visualize-your-domino-data.html</link><author>noreply@blogger.com (Domino Interface)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNLeXwg3BwftsbCt7HiDPNYNzuZ4YV87K3-jPSA3tHToduvOW7vjqdIpLWIgkZBKD-7CLVGhXjG2B4ELrEKT0lWue9qcz-v_bd6TPXCU2cyPBy8TfviO7wY2Akh3hyJuHhYLoLtCP6ULYF_6Z7uyC06sfeMYKbsH2tdh0KO7IzkDzTM6wMlpGXMs4OXFk/s72-w400-h300-c/IMG_4905.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-8823891365565625175</guid><pubDate>Tue, 29 Apr 2025 11:17:00 +0000</pubDate><atom:updated>2025-04-29T10:17:40.930-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Dojo Build</category><category domain="http://www.blogger.com/atom/ns#">Dojo Toolkit</category><category domain="http://www.blogger.com/atom/ns#">iPhora</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppPlace</category><category domain="http://www.blogger.com/atom/ns#">iPhora Automate</category><category domain="http://www.blogger.com/atom/ns#">iPhora ProcessFactory</category><category domain="http://www.blogger.com/atom/ns#">JavaScript</category><category domain="http://www.blogger.com/atom/ns#">Pascal.js</category><category domain="http://www.blogger.com/atom/ns#">Phora Group</category><category domain="http://www.blogger.com/atom/ns#">Terser.js</category><category domain="http://www.blogger.com/atom/ns#">Vite.js</category><category domain="http://www.blogger.com/atom/ns#">Webpack</category><title>Our Journey in Optimizing and Bundling JavaScript for Web Applications</title><description>&lt;p&gt;When building a web application, optimizing the loading process is important.&lt;/p&gt;&lt;p&gt;Previously, we used Uglify-ES and recently Terser to minify individual JavaScript files to help reduce the packages and load time.&lt;/p&gt;&lt;p&gt;With the next release of iPhora Automatic coming very soon, we wanted to significantly reduce the loading time needed and the number of HTTP requests handled by the Domino server.&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;Our struggles for the past few weeks have been figuring out
the right JavaScript bundler that works with our Dojo Toolkit-based framework.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;So why are we still using Dojo Toolkit you might first ask? Many have moved away from Dojo Toolkit, the granddaddy of JavaScript frameworks. Dojo provides us the core widget inheritance framework that is not just used for creating widgets like fields and combo boxes, but is used for building the many different app layers of iPhora not just statically but dynamically in real-time. It allows us to have a secure and fast SPA (single page application) architecture. We don&#39;t use any of the original Dojo widgets (Dijits). Each widget that appears in the UI is a custom widget object that is built specifically to work within our framework.&amp;nbsp;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;We first looked at Webpack which is probably the most popular JavaScript and resource bundler. IBM/HCL created the dojo-webpack plugin to bundle and minify Dojo Toolkit based applications and is still in use. We got dojo-webpack working with the latest version of Webpack, v5.98 and Dojo 1.17.3.&amp;nbsp; But we had to upgrade to Node 18.20.8 and NPM 9.3.1. This reduced the loading time from 4.5 to 3.5 seconds.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Everything was great until a user try to navigate to different parts of the iPhora interface. Our iPhora SPA framework relies heavily on Dojo Require to dynamically load different parts of the UI. These modules may or may not exist when a bundle is created. In fact, for each instance the modules are totally different. So we went deep dive into the Dojo code and the dojo-webpack code and attempted many hacks.&amp;nbsp; After many many tries, I was informed that one cannot dynamically load AMD (Asynchronous Module Definition) modules when bundling with the dojo-webpack plugin. Unfortunately, Webpack replaces all Dojo Require with their own Webpack require which only allow static modules. So frustrating.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Since Webpack does not address our requirements. We looked at newer bundlers like Vite and Pascal, but that was going to require a significant effort since no one has a Dojo plug-in. The biggest
struggle was finding examples and answers to questions.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Since the Dojo Toolkit comes with a bundler, we went back to looking at it. However, much of the documentation and examples are very simple as usual and limited. Much of the content was older and incomplete.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;The advantage of the Dojo Build framework is that it allows you to create independent bundles called layers which conforms to how we are using Require to load the AMD modules. It uses the Google Closure compiler which is much more restrictive than
Uglify-ES or Terser (used in webpack). We have been using Uglify-ES and then later Terser for a long time,
but Closure does a better job in finding errors.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;With Dojo Build we are able to build a custom dojo bundle that includes only the dojo modules that we needed and the individual modules that contain our initial loader and custom iPhora widgets.&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;So here are the results.&lt;/p&gt;&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Before Using Dojo Build Bundling&lt;/span&gt;&lt;/b&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj44XkRHRUteidw55gmJYVah7eXPTbuBDJ-LUIwFDMQM4scZBn7J8z03in1yIl6I9B_I2_Tn-iYEo59UL1eYG1Q-9SZZt5obsEqCl2ljDKEgMh4mSy7lL0aoRFGEZTHmV9k_CYS0igf_us8wVnTlgBko6OdtTbp3s7SUoy1K19_MtD_8kW4l3Lh2kXTIC4/s683/before%20bundling.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;363&quot; data-original-width=&quot;683&quot; height=&quot;273&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj44XkRHRUteidw55gmJYVah7eXPTbuBDJ-LUIwFDMQM4scZBn7J8z03in1yIl6I9B_I2_Tn-iYEo59UL1eYG1Q-9SZZt5obsEqCl2ljDKEgMh4mSy7lL0aoRFGEZTHmV9k_CYS0igf_us8wVnTlgBko6OdtTbp3s7SUoy1K19_MtD_8kW4l3Lh2kXTIC4/w513-h273/before%20bundling.jpg&quot; width=&quot;513&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;After Using Dojo Build Bundling&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKQQ8XLvWBosmljQ6F1dnp1A2CD495hiLFNjxeIP33OFraYv4KBCpZksXfjq4zk26DlpWr97WwsSYO9UX-5Dz3DLHePSjl57pO3VBHajUnXRqYH8V1GS3EAE7vKNlRkLh69DAUg7-mM3Dt8Lh7_gtnHUjGYXrJz4p8ua74SoLRTkEz6VRfztAn6JohYq4/s661/after%20bundling.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;485&quot; data-original-width=&quot;661&quot; height=&quot;381&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKQQ8XLvWBosmljQ6F1dnp1A2CD495hiLFNjxeIP33OFraYv4KBCpZksXfjq4zk26DlpWr97WwsSYO9UX-5Dz3DLHePSjl57pO3VBHajUnXRqYH8V1GS3EAE7vKNlRkLh69DAUg7-mM3Dt8Lh7_gtnHUjGYXrJz4p8ua74SoLRTkEz6VRfztAn6JohYq4/w519-h381/after%20bundling.jpg&quot; width=&quot;519&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;As you can see the load time drops from 4.40 seconds to 2.62 seconds.&amp;nbsp; But more importantly is the reduction of HTTP request from 60 to 19.&amp;nbsp; Why 19?&amp;nbsp; One request is a cached request as a results of embedding an base64 image directly into the HTML page rather than requiring a http request.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;As a result, you have better performance and able to handle more users per server instance.&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;I hope this post was informative especially for the HCL community since a number of products still use the Dojo Toolkit framework and as well as many products from other companies.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;For us, the next step is to include the new Dojo Build process into our DevOps process flow and run it automatically as we create new updates.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Listed below are links that might be of interest to you to learn more.&amp;nbsp; If you are attending Engage 2025 next month and have questions, track me down.&amp;nbsp; And if you are interested in data visualization, attend my session on Wednesday at 2:30 PM at the The Hague Conference Centre New Babylon,&amp;nbsp;The Hauge, Netherlands.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://github.com/OpenNTF/dojo-webpack-plugin&quot;&gt;https://github.com/OpenNTF/dojo-webpack-plugin&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://dojotoolkit.org/documentation/tutorials/1.10/build/index.html&quot;&gt;https://dojotoolkit.org/documentation/tutorials/1.10/build/index.html&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://webpack.js.org/&quot;&gt;https://webpack.js.org/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://github.com/vitejs/vite&quot;&gt;https://github.com/vitejs/vite&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://github.com/kanaka/pascal.js/&quot;&gt;https://github.com/kanaka/pascal.js/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://terser.org/&quot;&gt;https://terser.org/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2025/04/our-journey-in-optimizing-and-bundling.html</link><author>noreply@blogger.com (Domino Interface)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj44XkRHRUteidw55gmJYVah7eXPTbuBDJ-LUIwFDMQM4scZBn7J8z03in1yIl6I9B_I2_Tn-iYEo59UL1eYG1Q-9SZZt5obsEqCl2ljDKEgMh4mSy7lL0aoRFGEZTHmV9k_CYS0igf_us8wVnTlgBko6OdtTbp3s7SUoy1K19_MtD_8kW4l3Lh2kXTIC4/s72-w513-h273-c/before%20bundling.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-6048947499928395900</guid><pubDate>Thu, 24 Apr 2025 14:12:00 +0000</pubDate><atom:updated>2025-04-24T08:14:57.704-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Data Visualization</category><category domain="http://www.blogger.com/atom/ns#">Engage 2025</category><category domain="http://www.blogger.com/atom/ns#">Phora Group</category><title>I am speaking at Engage 2025 - Visualize Your Domino Data with Open Source Tools</title><description>&lt;p&gt;If you are attending Engage 2025 and would like to learn more about how to visualize your Domino data, come join my session.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #444444;&quot;&gt;Wednesday, May 21 | 14:30 - 15:15 | 1.4 Breakout 2&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #444444;&quot;&gt;De09. Visualize Your Domino Data with Open Source Tools&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;As they say, a picture is a worth a thousand words.&lt;/p&gt;&lt;p&gt;In the current data driven environment, having the ability to quickly visualize your Domino data is important. It allows you to discover hidden data patterns and trends that may impact important business decisions. There are a number of open-source visualization tools that one can use to create charts, graphs and plots.&lt;/p&gt;&lt;p&gt;In this session, Richard will discuss the different tools that are available and their advantages and disadvantages. Richard will show how to utilize these open-source visualization tools to help you effective visualize your Domino data.&lt;/p&gt;&lt;div&gt;To learn more and register for Engage 2025 go to &lt;a href=&quot;https://engage.ug&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://engage.ug&lt;/a&gt;&amp;nbsp;Hope to see you there.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2025/04/i-am-speaking-at-engage-2025-visualize.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-2250820604260915336</guid><pubDate>Wed, 27 Nov 2024 02:41:00 +0000</pubDate><atom:updated>2024-11-26T20:41:03.067-06:00</atom:updated><title>Situational Apps - Spreadsheet versus No-code tools</title><description>&lt;p&gt;As I mentioned in the previous blog post, the use of spreadsheets is the largest and number one method used to create situational apps.&amp;nbsp; In part 2 of this blog series, we will do a comparison between using spreadsheets versus no-code/low-code tools to create situational apps.&lt;/p&gt;&lt;p&gt;Click on the link below to continue reading about this comparison.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://iphora.io/iphora.nsf/blogentry?open=VQ34NT01&quot;&gt;https://iphora.io/iphora.nsf/blogentry?open=VQ34NT01&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2024/11/situational-apps-spreadsheet-versus-no.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-5526969650555511013</guid><pubDate>Fri, 15 Nov 2024 01:56:00 +0000</pubDate><atom:updated>2024-11-15T06:33:59.159-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Business Users</category><category domain="http://www.blogger.com/atom/ns#">Citizen Developer</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppBuilder</category><category domain="http://www.blogger.com/atom/ns#">no-code</category><title>Situational Apps, What are They and Why They are Important</title><description>&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span face=&quot;OpenSans-Regular&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;As the name implies, situational apps are on-demand apps that are created in response to a specific business situation (or need) that may arise infrequently. In general, the productivity gains attributed to a situational app are limited to only a few occasions a year and to few individuals. Therefore, most corporations are unlikely to devote significant resources to the development of such apps, and typical develop cycles may be so long that the situation itself will have expired before a professionally-developed app is ready.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span face=&quot;OpenSans-Regular&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;OpenSans-Regular&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;To continue reading more about how important situational apps are go to our iPhora blog at:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face=&quot;OpenSans-Regular&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;a href=&quot;https://iphora.io/iphora.nsf/blogentry?open=0F71X90S&quot;&gt;https://iphora.io/iphora.nsf/blogentry?open=0F71X90S&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2024/11/situational-apps-what-are-they-and-why.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-6183722508901671805</guid><pubDate>Fri, 08 Nov 2024 13:33:00 +0000</pubDate><atom:updated>2024-11-08T07:33:38.839-06:00</atom:updated><title>The Beginning of Business Process Collaboration</title><description>&lt;p&gt;We all think of online collaboration and business process automation as a modern concept that is only possible with the power of computers and the internet. My partner Robert Burton whom is somewhat of a history buff has an interesting history of business process collaboration that may surprise you. So, for some light and interesting reading open our latest blog post.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://iphora.io/iphora.nsf/blogentry?open=ZXLW53VT&quot;&gt;&amp;nbsp;https://iphora.io/iphora.nsf/blogentry?open=ZXLW53VT&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2024/11/the-beginning-of-business-process.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-3106273580716554384</guid><pubDate>Tue, 29 Oct 2024 20:03:00 +0000</pubDate><atom:updated>2024-10-29T20:22:55.974-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">iPhora Automate</category><category domain="http://www.blogger.com/atom/ns#">low-code</category><category domain="http://www.blogger.com/atom/ns#">no-code</category><category domain="http://www.blogger.com/atom/ns#">situation apps</category><title>Learning How to Build your First Workflow App Using iPhora Automate - Basic</title><description>&lt;p&gt;Now that you have downloaded and installed iPhora Automate - Basic onto your HCL Domino server,&amp;nbsp; what&#39;s next. It is time to create your first workflow app using iPhora Automate - Basic.&lt;/p&gt;&lt;p&gt;To help you create your first app, we have created a library of training videos covering the basics of iPhora Automate and how to create an app. Each video takes you through a step-by-step process in building, assembling and deploying an app in iPhora Automate.&amp;nbsp; Currently, there are 45 videos in this library with dozens of new videos in production that covers both beginner and advanced topics.&lt;/p&gt;&lt;p&gt;In addition to these tutorial, we have more training content coming soon that highlights the different types of apps you can create using iPhora Automate.&lt;/p&gt;&lt;p&gt;To access these videos go to:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://iphora.io/iphora.nsf/courses&quot;&gt;https://iphora.io/iphora.nsf/courses&lt;/a&gt;&lt;/p&gt;&lt;p&gt;And start accelerating your business through automation.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2024/10/learning-how-to-build-your-first.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-5039852394299401934</guid><pubDate>Wed, 23 Oct 2024 19:46:00 +0000</pubDate><atom:updated>2024-10-23T13:46:04.528-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business process automation</category><category domain="http://www.blogger.com/atom/ns#">business user</category><category domain="http://www.blogger.com/atom/ns#">data control</category><category domain="http://www.blogger.com/atom/ns#">Data Privacy</category><category domain="http://www.blogger.com/atom/ns#">data security</category><category domain="http://www.blogger.com/atom/ns#">freemium edition</category><category domain="http://www.blogger.com/atom/ns#">iPhora Automate</category><category domain="http://www.blogger.com/atom/ns#">no-code</category><category domain="http://www.blogger.com/atom/ns#">workflow automation</category><title>Drive your Business Processes with iPhora Automate - Basic,  Freemium Edition</title><description>&lt;p&gt;We are pleased to announce the release of iPhora Automate - Basic, the freemium edition of our Domino-based automation platform.&amp;nbsp; This limited edition allows you to create and deploy up to 10 workflow apps each can have unlimited flows for up to 10 workflow participants.&amp;nbsp; Unlike some public cloud-based solutions, your flows never expire.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: #fcfcfc;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;A valid HCL Domino license for the number of users is required.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;We recommend that you install it on a HCL Domino server running 12.02 FP4 or higher for Windows, Linux or IBMi.&lt;/p&gt;&lt;p&gt;Go to &lt;a href=&quot;https://iphora.io&quot;&gt;https://iphora.io&lt;/a&gt; to download your copy of iPhora Automate - Basic.&lt;/p&gt;&lt;p&gt;Instructions for installing iPhora Automate - Basic can be found here:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://iphora.io/iphora.nsf/documents&quot;&gt;https://iphora.io/iphora.nsf/documents&lt;/a&gt;&lt;/p&gt;&lt;p&gt;To learn how to create your own workflow apps go to the iPhora Learning content:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://iphora.io/iphora.nsf/courses&quot;&gt;https://iphora.io/iphora.nsf/courses&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;padding: 56.25% 0px 0px; position: relative;&quot;&gt;&lt;iframe allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write&quot; frameborder=&quot;0&quot; src=&quot;https://player.vimeo.com/video/1022635920?badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479&quot; style=&quot;height: 100%; left: 0; position: absolute; top: 0; width: 100%;&quot; title=&quot;Introducing to iPhora Automate - Basic&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2024/10/drive-your-business-processes-with.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-1223920491157807351</guid><pubDate>Mon, 21 Oct 2024 20:00:00 +0000</pubDate><atom:updated>2024-10-21T14:00:48.255-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business process automation</category><category domain="http://www.blogger.com/atom/ns#">HCL Domino</category><category domain="http://www.blogger.com/atom/ns#">iPhora</category><category domain="http://www.blogger.com/atom/ns#">JSON</category><category domain="http://www.blogger.com/atom/ns#">NoSQL</category><category domain="http://www.blogger.com/atom/ns#">Workflow</category><category domain="http://www.blogger.com/atom/ns#">workflow automation</category><title>The iPhora Journey - Part 14 - Bringing All the Parts Together </title><description>&lt;p&gt;Welcome to the final post of &quot;The iPhora Journey&quot;.&lt;/p&gt;&lt;p&gt;Our goal as we started this journey was to take the HCL Domino platform that we loved for more than 25 years and redefining a web application running on Domino.&amp;nbsp;&lt;/p&gt;&lt;p&gt;iPhora was created originally to allow us to provide a flexible platform for building secure web-based applications for our customers as part of our consulting services. However, it has now evolved into a platform that customers and partners can build their own solutions with the emphasis on user-driven workflow applications and process automation.&lt;/p&gt;&lt;p&gt;As an integrated application platform, you can build web applications in a variety of different ways with HCL Domino. In designing iPhora, we looked at the architecture of other platforms, identified their key features and determine how it could be implemented within the capabilities and limitations of HCL Domino and utilized its flexible architecture to the fullest.&lt;/p&gt;&lt;p&gt;We went through many iterations and versions always with a focus on continuous improvement. iPhora started with a pure JavaScript SPA/REST API architecture but as it evolved, we moved to a hybrid server-side generation/JavaScript REST API based architecture to provide better security and more control.&lt;/p&gt;&lt;p&gt;The entire architecture of iPhora is based on JSON which led us to create our own JSON parser written in LotusScript to meet our needs.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;During our journey, we created a few things:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;MongoDB like JSON document storage and data management architecture&lt;/span&gt;&lt;/li&gt;&lt;li&gt;A high performance LotusScript JSON Parser that any JavaScript developer could understand&lt;/li&gt;&lt;li&gt;An entire server-side generation language&lt;/li&gt;&lt;li&gt;A flow-based platform for creating apps, workflows and processes&lt;/li&gt;&lt;li&gt;PhoraScript a JSON-based scripting language&lt;/li&gt;&lt;li&gt;Flow-based ActionStreams&amp;nbsp;&lt;/li&gt;&lt;li&gt;Dozens of custom Dojo-based widgets&lt;/li&gt;&lt;li&gt;An easy-to-use iPaaS platform&amp;nbsp;&lt;/li&gt;&lt;li&gt;Data connector architecture&lt;/li&gt;&lt;li&gt;A new data security model that leveraged the existing capabilities of Domino security&lt;/li&gt;&lt;li&gt;A secure community-based platform for isolating and running applications and processes&lt;/li&gt;&lt;li&gt;A no-code platform for creating apps and workflow processes&lt;/li&gt;&lt;li&gt;Command JSON language to install and configure iPhora automatically onto a Domino server&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;For the past two years we have been focused solely on moving it from being a consulting tool to a commercial product.&amp;nbsp; It has been challenging but fun.&lt;/p&gt;&lt;p&gt;As we end this journey, we are starting a new one. So, look forward to many announcements and things to come.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/10/the-iphora-journey-part-13-automating.html&quot;&gt;The iPhora Journey - Part 13 - Automating the Automate&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/08/the-iphora-journey-part-12-bring-public.html&quot;&gt;The iPhora Journey - Part 12 - Bring the Public Cloud Experience to your Private Environment&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/07/the-iphora-journey-part-11-integration.html&quot;&gt;The iPhora Journey - Part 11 - Integration to Cloud-based Services for Business Users Made Simple&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/07/the-iphora-journey-part-10-actionstream.html&quot;&gt;The iPhora Journey - Part 10 - ActionStream - the Heart of iPhora&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/05/the-iphora-journey-part-9-flow-based.html&quot;&gt;The iPhora Journey - Part 9 - Flow-based Programming for Your User Interface&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/04/the-iphora-journey-part-8-flow-based.html&quot; rel=&quot;nofollow&quot;&gt;The iPhora Journey - Part 8 - Flow-based Programming&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.dominointerface.com/2022/09/the-iphora-journey-part-7-transforming.html&quot;&gt;The iPhora Journey - Part 7 - Transforming Domino with Microservices&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/09/the-iphora-journey-part-6-application.html&quot;&gt;The iPhora Journey - Part 6 - An Application, Rethinking and Redefining&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-5-dammit-jim-im.html&quot;&gt;The iPhora Journey - Part 5 - Dammit Jim, I&#39;m a LotusScripter not a JavaScripter&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king_10.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The How&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The Why&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-3-creating.html&quot;&gt;The iPhora Journey - Part 3 - Creating an Integrated UI Framework&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-ii-domino.html&quot;&gt;The iPhora Journey - Part 2 - Domino, the Little Engine that Could&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-i-reimagining.html&quot;&gt;The iPhora Journey - Part 1 - Reimagining Domino&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2024/10/the-iphora-journey-part-14-bringing-all.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-6847038120299551752</guid><pubDate>Thu, 17 Oct 2024 12:04:00 +0000</pubDate><atom:updated>2024-10-17T06:04:22.424-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">customer expectation</category><category domain="http://www.blogger.com/atom/ns#">easy-to-buy</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppBuilder</category><category domain="http://www.blogger.com/atom/ns#">iPhora Automate</category><category domain="http://www.blogger.com/atom/ns#">Process Automation</category><category domain="http://www.blogger.com/atom/ns#">product purchase</category><category domain="http://www.blogger.com/atom/ns#">UI Experience</category><title>The iPhora Journey - Part 13 - Automating the Automate</title><description>&lt;p style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;This post was to be the final post of our &quot;The iPhora Journey&quot; series and summarize our entire journey and what we created.&amp;nbsp; However, as I was preparing the final post I realize there was one item that I hadn&#39;t discussed. That is the experience of purchasing a product and installing it onto a Domino server. So, Part 14 will be the final post of this series.&lt;/p&gt;&lt;p style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;br /&gt;Whether you are purchasing a product that you really want or paying bills online, purchasing services or products online has become the norm.&amp;nbsp; For a new product launch we wanted this easy-to-buy and deploy experience.&lt;/p&gt;&lt;p style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;br /&gt;Depending on the version of our product, different features are enabled. If a customer wants to upgrade the product to a more advanced version, the experience should be as easy as signing up for the upgrade, paying and the new features should available in the customer&#39;s installation. This is expected for most public cloud-based solutions. However, not so easy for private cloud/on-premises solutions.&lt;/p&gt;&lt;p style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;br /&gt;Normally, it requires new downloads, configuration by the administrator, maybe installing new software and more configuring and testing.&amp;nbsp; This can create a significant barrier to entry especially for SMEs whom may not have the resources.&lt;/p&gt;&lt;p style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;br /&gt;So, our goal was to create this easy-to-buy experience for our private cloud/on-premises solutions.&lt;/p&gt;&lt;p style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;br /&gt;You can breakdown the experience into three areas:&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Registration and payment&lt;/li&gt;&lt;li&gt;Licensing&lt;/li&gt;&lt;li&gt;Distribution and deployment&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;br /&gt;The original plan was to create a custom solution or license a technology that is already available to make this work. But why, we already have an extremely powerful automation platform that we created, iPhora Automate.&lt;/div&gt;&lt;div style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;br /&gt;It was time to Eat Your Own Dog Food.&lt;/div&gt;&lt;div style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;br /&gt;In creating these processes, we discovered more gems that are available within Domino with some capabilities we never knew existed. But that is a discussion for a future blog post.&lt;/div&gt;&lt;div style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;br /&gt;Each of the above processes involve a series of steps and approval processes.&amp;nbsp; For example, during the registration process, a user fills out and submits a form with their information. This triggers an email notification to the user with a verification code that they enter into the verification form to confirm that they are who they claim. Upon verification, a number of asynchronous and synchronous processes are triggered. Some of these processes launch ActionStreams that create entries into the CRM App that we created and some create a user account into the customer portal where a user will get their license key and download the product.&lt;/div&gt;&lt;div style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;The license key is then used during the installation process to determine what features are available to the customer. There are many other processes that are launched during installation to provide this smooth easy-to-buy customer experience that we all come to expect.&lt;/div&gt;&lt;div style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;br /&gt;We are far from done. There are many aspects of the buying process that we are still designing and working on like connecting internal and external services in order to provide customers the best experience in purchasing and deploying our products.&lt;/div&gt;&lt;div style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;br /&gt;Finally, next time the final post of &quot;The iPhora Journey&quot;.&lt;/div&gt;&lt;p style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;line-height: normal; margin-bottom: 0in; text-align: left;&quot;&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/08/the-iphora-journey-part-12-bring-public.html&quot;&gt;The iPhora Journey - Part 12 - Bring the Public Cloud Experience to your Private Environment&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/07/the-iphora-journey-part-11-integration.html&quot;&gt;The iPhora Journey - Part 11 - Integration to Cloud-based Services for Business Users Made Simple&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/07/the-iphora-journey-part-10-actionstream.html&quot;&gt;The iPhora Journey - Part 10 - ActionStream - the Heart of iPhora&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/05/the-iphora-journey-part-9-flow-based.html&quot;&gt;The iPhora Journey - Part 9 - Flow-based Programming for Your User Interface&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/04/the-iphora-journey-part-8-flow-based.html&quot; rel=&quot;nofollow&quot;&gt;The iPhora Journey - Part 8 - Flow-based Programming&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.dominointerface.com/2022/09/the-iphora-journey-part-7-transforming.html&quot;&gt;The iPhora Journey - Part 7 - Transforming Domino with Microservices&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/09/the-iphora-journey-part-6-application.html&quot;&gt;The iPhora Journey - Part 6 - An Application, Rethinking and Redefining&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-5-dammit-jim-im.html&quot;&gt;The iPhora Journey - Part 5 - Dammit Jim, I&#39;m a LotusScripter not a JavaScripter&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king_10.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The How&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The Why&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-3-creating.html&quot;&gt;The iPhora Journey - Part 3 - Creating an Integrated UI Framework&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-ii-domino.html&quot;&gt;The iPhora Journey - Part 2 - Domino, the Little Engine that Could&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-i-reimagining.html&quot;&gt;The iPhora Journey - Part 1 - Reimagining Domino&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2024/10/the-iphora-journey-part-13-automating.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-8091831748641393765</guid><pubDate>Tue, 20 Aug 2024 11:25:00 +0000</pubDate><atom:updated>2024-08-20T05:25:51.951-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business process automation</category><category domain="http://www.blogger.com/atom/ns#">digital automation</category><category domain="http://www.blogger.com/atom/ns#">HCL Domino</category><category domain="http://www.blogger.com/atom/ns#">HCL SoFy</category><category domain="http://www.blogger.com/atom/ns#">iPhora</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppBuilder</category><category domain="http://www.blogger.com/atom/ns#">iPhora Automate</category><category domain="http://www.blogger.com/atom/ns#">iPhora ProcessFactory</category><category domain="http://www.blogger.com/atom/ns#">Phora Group</category><category domain="http://www.blogger.com/atom/ns#">User experience</category><category domain="http://www.blogger.com/atom/ns#">workflow automation</category><title>The iPhora Journey - Part 12 - Bring the Public Cloud Experience to your Private Environment</title><description>&lt;p&gt;&lt;b&gt;Public vs Private&lt;/b&gt;&lt;/p&gt;&lt;p&gt;In the digital automation market, which includes workflow and business process automation, there are literally dozens of no-code or low-code platforms available as public cloud solutions. They range from products like Zapier to Tray.io. In general, they all provide easy-to-use interfaces for assembling cloud services together in order to automate processes. Some are geared towards individual users and some towards enterprise businesses. However, aside from the ones intended for individuals or very small businesses, they may require some significant setup, configuration, and administration.&lt;/p&gt;&lt;p&gt;Public cloud-based solutions have a number of advantages for process automation. You can sign up and get access to these services within minutes and have a new process up and running in a relatively short time.&lt;/p&gt;&lt;p&gt;However, the majority of these solutions operate by routing your data (and the subsequent responses) through a series of different cloud services. Not only is your process dependent on the continued existence of those cloud services, your sensitive business data is now fully exposed to each one and subject to a different set of legal terms and conditions for each service. If any of those services becomes inaccessible due to a variety of factors, you have a critical operational failure within your business. In addition, the security and privacy of your data is only as good as the weakest link in that service chain. That is why more and more companies are opting for private cloud or on-premises solutions.&lt;/p&gt;&lt;p&gt;This brings us to private cloud and on-premises solutions, which have certain key advantages over public cloud solutions:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Data control&lt;/li&gt;&lt;li&gt;Data privacy&lt;/li&gt;&lt;li&gt;Data continuity&lt;/li&gt;&lt;li&gt;Data security&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Unfortunately, most private-cloud or on-premises solutions require significant effort to install, configure, and manage. Updates and new features often require significant planning and coordination to roll out properly. Together, these disadvantages serve to create a barrier to entry for all but the most determined companies.&lt;/p&gt;&lt;p&gt;But what if you found a private solution that has the same ease of deployment, updates, and usage found in public cloud solutions? Then this barrier to entry is significantly lessened.&lt;/p&gt;&lt;p&gt;&lt;b&gt;iPhora Vision&lt;/b&gt;&lt;/p&gt;&lt;p&gt;This is our vision for iPhora, a radically new product that combines the ease of deployment, updates, and usage typically found in public cloud solutions with the data control, privacy, continuity, and security of private cloud/on-premise solutions.&lt;/p&gt;&lt;p&gt;In bringing the public cloud experience to your private environment, we focused on four areas:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Product licensing&lt;/li&gt;&lt;li&gt;Installation and configuration automation&lt;/li&gt;&lt;li&gt;Simple one touch installation of applications and service connectors&lt;/li&gt;&lt;li&gt;Seamless one touch updating and upgrading&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Product Licensing&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Public cloud solutions offer a wide variety of licensing options, ranging from freemium to enterprise level. This allows customers to start using the services quickly, with little or no investment, yet making it easy to upgrade the license to handle more users and provide more features. iPhora uses a similar model: licensing is as simple as registering and paying the initial license fee (for non-freemium versions). License upgrades are handled the same way. We will cover licensing in more detail in a future post.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Installation and Configuration&lt;/b&gt;&lt;/p&gt;&lt;p&gt;As we all know, HCL Domino can be one of the most secure application platforms available. However, in order to ensure the security of web applications, there are literally hundreds of settings that have to be properly configured. Normally, the job of locking down a Domino web server is done by an experienced administrator.&lt;/p&gt;&lt;p&gt;Yet, given our focus on providing iPhora to the broadest possible audience, we have be able to handle customers who have no Domino administrator. As part of our quest to provide a simple, one-touch installation process that can get iPhora up and running within minutes, we had to find a way to fully automate every aspect of the installation/configuration process, while at the same time, being flexible enough to handle unique and/or changing requirements.&amp;nbsp;&lt;/p&gt;&lt;p&gt;In some cases, iPhora is added to an existing Domino installation, and in others, iPhora will be the first and only Domino server they will ever have. Trying to account for both situations was a major challenge. The HCL Domino One Touch setup provided some of this needed capabilities, but it did not have the fine control that we required.&lt;/p&gt;&lt;p&gt;Another factor driving our installation approach was the need for having iPhora Automate available on the HCL SoFy platform. HCL SoFy allows users to spin up their own test versions of iPhora Automate within minutes. Achieving a fully automated installation and configuration process that was fast, complete, and reliable required a great deal of effort. We were successful and iPhora is available on HCL SoFy right now.&lt;/p&gt;&lt;p&gt;By the way, a future post will discuss about bringing your own solutions to HCL SoFy.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Adding applications and service connectors&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;In the language of iPhora, the automated workflow processes you create are known as apps and those apps can be connected to public/private web services using service connectors. In addition to building your own apps and service connectors, you can utilize an increasing number of existing apps and connectors. The goal is to provide the same simple experience that one finds in installing phone apps. So iPhora includes a public/private app and service connector store where apps and service connectors can be securely installed using a one-touch installation process.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9oEmGp3_-T80ys-N4vhAsZWIvWTAr4oox4I_nwV9MlOptGS8Ou8FhyCnokZcvqB8f09VgwDAtxJSnxywdPUHLNkdnVMQ90orkwfVfgS1BTOuTKSaMo3y1rfKny24tTkXfXCSHPpPtgdhwLpcD6CE3pb_5bGoIznNzh-PvVPnCjmHIppcmhuSw4GfZkwk/s1379/appstore.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;742&quot; data-original-width=&quot;1379&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9oEmGp3_-T80ys-N4vhAsZWIvWTAr4oox4I_nwV9MlOptGS8Ou8FhyCnokZcvqB8f09VgwDAtxJSnxywdPUHLNkdnVMQ90orkwfVfgS1BTOuTKSaMo3y1rfKny24tTkXfXCSHPpPtgdhwLpcD6CE3pb_5bGoIznNzh-PvVPnCjmHIppcmhuSw4GfZkwk/s16000/appstore.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Updating and upgrading&lt;/b&gt;&lt;/p&gt;&lt;p&gt;As we all know, it is much easier for public-cloud service providers to keep themselves up to date because they have full control of their platforms and the entire process is transparent to their users, while updating and/or upgrading a private cloud or on-premises platform often requires significant effort.&lt;/p&gt;&lt;p&gt;To make the iPhora update/upgrade process seamless and easy, even for private cloud or on-premise installations, we had to create a process that did not rely on Domino replication and operated entirely via HTTPS. The process had to be able to handle the core iPhora components, as well as apps and connectors. After many iterations, we finally achieved an update/upgrade architecture that was fast and reliable. As you can see below, the update process for an application is initiated with a single click.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie3sBPOMjmukPlpNhL_LfKcf5V55FZ-CUotLHXA87ajo4woQD66huHwpOZFhyuGZKY72B7YQNpuu8zf5awTFfIYjGC5bvq7V4rsfdAt0z5X_gT_0wkioeEhGNh53w5F2WeKd1Nh7JlMX9KMvCfE16FPWyGLqhyphenhyphentwdl2P4K-fKv5Tb8oGHNdxwfJ-JcUEw/s1379/appinstall.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;742&quot; data-original-width=&quot;1379&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie3sBPOMjmukPlpNhL_LfKcf5V55FZ-CUotLHXA87ajo4woQD66huHwpOZFhyuGZKY72B7YQNpuu8zf5awTFfIYjGC5bvq7V4rsfdAt0z5X_gT_0wkioeEhGNh53w5F2WeKd1Nh7JlMX9KMvCfE16FPWyGLqhyphenhyphentwdl2P4K-fKv5Tb8oGHNdxwfJ-JcUEw/s16000/appinstall.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The advent of public cloud computing has brought forward a new level of user expectation, not just in the design of the user interface, but also in the deployment and management of the solution. By bring the public cloud experience to your private environment, a key barrier to entry is eliminated, enabling companies to take advantage of the security and control offered by private cloud or on-premises solutions.&lt;/p&gt;&lt;p&gt;Next time in our final post of “The iPhora Journey” series, we will bring everything together.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/07/the-iphora-journey-part-11-integration.html&quot;&gt;The iPhora Journey - Part 11 - Integration to Cloud-based Services for Business Users Made Simple&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/07/the-iphora-journey-part-10-actionstream.html&quot;&gt;The iPhora Journey - Part 10 - ActionStream - the Heart of iPhora&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/05/the-iphora-journey-part-9-flow-based.html&quot;&gt;The iPhora Journey - Part 9 - Flow-based Programming for Your User Interface&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/04/the-iphora-journey-part-8-flow-based.html&quot; rel=&quot;nofollow&quot;&gt;The iPhora Journey - Part 8 - Flow-based Programming&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.dominointerface.com/2022/09/the-iphora-journey-part-7-transforming.html&quot;&gt;The iPhora Journey - Part 7 - Transforming Domino with Microservices&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/09/the-iphora-journey-part-6-application.html&quot;&gt;The iPhora Journey - Part 6 - An Application, Rethinking and Redefining&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-5-dammit-jim-im.html&quot;&gt;The iPhora Journey - Part 5 - Dammit Jim, I&#39;m a LotusScripter not a JavaScripter&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king_10.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The How&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The Why&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-3-creating.html&quot;&gt;The iPhora Journey - Part 3 - Creating an Integrated UI Framework&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-ii-domino.html&quot;&gt;The iPhora Journey - Part 2 - Domino, the Little Engine that Could&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-i-reimagining.html&quot;&gt;The iPhora Journey - Part 1 - Reimagining Domino&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2024/08/the-iphora-journey-part-12-bring-public.html</link><author>noreply@blogger.com (Domino Interface)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9oEmGp3_-T80ys-N4vhAsZWIvWTAr4oox4I_nwV9MlOptGS8Ou8FhyCnokZcvqB8f09VgwDAtxJSnxywdPUHLNkdnVMQ90orkwfVfgS1BTOuTKSaMo3y1rfKny24tTkXfXCSHPpPtgdhwLpcD6CE3pb_5bGoIznNzh-PvVPnCjmHIppcmhuSw4GfZkwk/s72-c/appstore.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-5392204705972943312</guid><pubDate>Wed, 31 Jul 2024 12:01:00 +0000</pubDate><atom:updated>2024-08-19T18:05:57.114-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ActionStreams</category><category domain="http://www.blogger.com/atom/ns#">business process automation</category><category domain="http://www.blogger.com/atom/ns#">Cloud-based service connectors</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppBuilder</category><category domain="http://www.blogger.com/atom/ns#">iPhora Automate</category><category domain="http://www.blogger.com/atom/ns#">iPhora ProcessFactory</category><category domain="http://www.blogger.com/atom/ns#">low-code</category><category domain="http://www.blogger.com/atom/ns#">no-code</category><title>The iPhora Journey - Part 11 - Integration to Cloud-based Services for Business Users Made Simple</title><description>&lt;p&gt;The world of data processing is far different than it was 10 years ago.&amp;nbsp; More and more of it is being done externally by highly specialized service providers. This enables companies to utilize the best available services -- without having to reinvent the wheel -- and incorporate those services into their core business processes. The resulting approach is also more agile, enabling companies to respond quickly to ever-changing business needs.&lt;/p&gt;&lt;p&gt;You can think of your business users as your subject matter experts. They are the ones who have first hand, daily experience with your data and processes. In a perfect world, they are the people who would be designing your processes, and in today&#39;s environment, that means taking full advantage of external services.&lt;/p&gt;&lt;p&gt;Your IT administrators are the gatekeepers. They are charged with protecting your business from threats and maintaining the security of your data. The last thing they want to see are your business users exposing the company&#39;s data to external services without their knowledge, involvement, or control.&lt;/p&gt;&lt;p&gt;There are many products on the market that allow individual users to include external services in their personal process flows. This means that the interaction is initiated entirely on the user&#39;s device and there is no way for administrators to reign in all the services being accessed. For security and governance reasons, admins would prefer that all these services are accessed on behalf of the business, and not individual users. That is one of the fundamental differences between a personal productivity tool and a scalable business solution. It would also reduce the stress levels of the admins to know that only authorized services are being accessed, that all communication is done securely server-to-server, and that all communication is logged.&lt;/p&gt;&lt;p&gt;In the past, that kind of server-to-server interaction with an external service required a lot of hours from a skilled application developer, taking it completely out of the realm of typical business users. It also greatly increased the cost, hence the demand for effective no-code and low-code solutions.&lt;/p&gt;&lt;p&gt;So how can you provide your business users with ability to create and maintain processes that integrate seamlessly with external data services, while maintaining the strict security and governance that companies need?&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;The iPhora Approach&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Our goal was to create a framework in which application developers can create reusable connectors for internal and external services, connectors that can easily be consumed by business users in their own applications.&lt;/p&gt;&lt;p&gt;We learned the requirements and expectations of businesses during the many years we spent consulting in the field of process automation. Time and again, we had to create connectors for a variety of different data services using different approaches. Based on that experience, we identified the three primary components of a connector: an authentication and verification module, a module to handle the data transaction between the servers, and a UI component that handles the visual representation of a connector within a process flow.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDL0xbD75RNIn1VXj2h83QyOByqsae2hg3G56bGrXVPUFX8S_0C2Wty92h7eQ36GVmT_MVhf5RKircMAWMKuHWeRBE6lFFSHGf9AjU58fXwfBTU0x5Vx670KPsAAHQMtNP17ohVasl_5XnZ_RNMlWwkpSyU32AG4NzM2f_n6HYSbfI68UW22H-A2WScCE/s802/meetings2goworkflow.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;696&quot; data-original-width=&quot;802&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDL0xbD75RNIn1VXj2h83QyOByqsae2hg3G56bGrXVPUFX8S_0C2Wty92h7eQ36GVmT_MVhf5RKircMAWMKuHWeRBE6lFFSHGf9AjU58fXwfBTU0x5Vx670KPsAAHQMtNP17ohVasl_5XnZ_RNMlWwkpSyU32AG4NzM2f_n6HYSbfI68UW22H-A2WScCE/s16000/meetings2goworkflow.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Since the authentication and verification process varies from service to service, the framework had to be full-featured and flexible. Therefore, we created scalable approach that allowed the creator of a connector to select different fixed options, along with the ability to include custom options.&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjifFsUyxBp5pmQ-gT6160z8EQ_vUL2WW-Fbyw0ZNbkLLVB2ghb-Gor3shdBR4fFrwWd0KWQKq8CaicjU6dZ4YFXYG6_6S9Hsd51NmscDzlFczy29QGA2wyuDKxlPWk5X2oNz7kZVTgJxGx_KaJBjoAeP98atZzDDaPzylkzSCiF3YLiOcrAl_6ebOFrqQ/s1551/mailersend%20designer.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;868&quot; data-original-width=&quot;1551&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjifFsUyxBp5pmQ-gT6160z8EQ_vUL2WW-Fbyw0ZNbkLLVB2ghb-Gor3shdBR4fFrwWd0KWQKq8CaicjU6dZ4YFXYG6_6S9Hsd51NmscDzlFczy29QGA2wyuDKxlPWk5X2oNz7kZVTgJxGx_KaJBjoAeP98atZzDDaPzylkzSCiF3YLiOcrAl_6ebOFrqQ/s16000/mailersend%20designer.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Our process flow architecture already had the ability to add custom action nodes, and this was extended to data connectors. Rather than hard coding the data transaction process (endpoints and webhooks), we wanted a fluid way that can be easily modified and updated, since service providers routinely change their specifications. The solution was ActionStreams. As you recall in our previous blog post, we talked about ActionStreams, which are reusable flows that can be used to perform actions within a process. We implemented the endpoints and webhooks of a service using ActionStreams, with all of the advantages of that format, including simplified data mapping and role mapping.&lt;/p&gt;&lt;p&gt;Many solutions like Zapier advertise integration to thousands of apps.&amp;nbsp; However, the fidelity of each integration can be very limited. This is fine for individual users, but businesses often need more than just the one or two most popular endpoints. With the use of ActionStreams, developers can add as many endpoints and webhooks as needed, all of which can be incorporate into the workflow process of your business users.&lt;/p&gt;&lt;p&gt;This granular approach also extends administration. There may be cases in which your business does not want to allow certain endpoints or webhooks. So, administrators have the option of turning on only the parts of a service that they need, as shown below.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlz9jzk6uZ0XsamnQOiG1ITwL1KHKWoiKrdi5_AbFMWd33spAjqXMLF95Pw8S1GAjBdaFNShGWYyHGDcvtNS1i1GWoQh50TcSyQQvShWVPUPWemQMs2EN5ycOKF40Sq_OKbXS00OggKEDnHQkR1t-XA8t3vSRLy557hvAaHlfG69lmkKLjBUlzkNDUimQ/s1058/Meetings2Gomanagement.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;890&quot; data-original-width=&quot;1058&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlz9jzk6uZ0XsamnQOiG1ITwL1KHKWoiKrdi5_AbFMWd33spAjqXMLF95Pw8S1GAjBdaFNShGWYyHGDcvtNS1i1GWoQh50TcSyQQvShWVPUPWemQMs2EN5ycOKF40Sq_OKbXS00OggKEDnHQkR1t-XA8t3vSRLy557hvAaHlfG69lmkKLjBUlzkNDUimQ/s16000/Meetings2Gomanagement.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;We are currently expanding our list of supported connectors, ranging from financial to social media. We would like to hear from you. &lt;b&gt;Which services are most important to you?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;We are getting near to the end of our iPhora Journey series.&amp;nbsp; Next time, we will talk about bringing all things together.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/07/the-iphora-journey-part-10-actionstream.html&quot;&gt;The iPhora Journey - Part 10 - ActionStream - the Heart of iPhora&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/05/the-iphora-journey-part-9-flow-based.html&quot;&gt;The iPhora Journey - Part 9 - Flow-based Programming for Your User Interface&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/04/the-iphora-journey-part-8-flow-based.html&quot; rel=&quot;nofollow&quot;&gt;The iPhora Journey - Part 8 - Flow-based Programming&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.dominointerface.com/2022/09/the-iphora-journey-part-7-transforming.html&quot;&gt;The iPhora Journey - Part 7 - Transforming Domino with Microservices&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/09/the-iphora-journey-part-6-application.html&quot;&gt;The iPhora Journey - Part 6 - An Application, Rethinking and Redefining&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-5-dammit-jim-im.html&quot;&gt;The iPhora Journey - Part 5 - Dammit Jim, I&#39;m a LotusScripter not a JavaScripter&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king_10.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The How&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The Why&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-3-creating.html&quot;&gt;The iPhora Journey - Part 3 - Creating an Integrated UI Framework&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-ii-domino.html&quot;&gt;The iPhora Journey - Part 2 - Domino, the Little Engine that Could&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-i-reimagining.html&quot;&gt;The iPhora Journey - Part 1 - Reimagining Domino&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2024/07/the-iphora-journey-part-11-integration.html</link><author>noreply@blogger.com (Domino Interface)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDL0xbD75RNIn1VXj2h83QyOByqsae2hg3G56bGrXVPUFX8S_0C2Wty92h7eQ36GVmT_MVhf5RKircMAWMKuHWeRBE6lFFSHGf9AjU58fXwfBTU0x5Vx670KPsAAHQMtNP17ohVasl_5XnZ_RNMlWwkpSyU32AG4NzM2f_n6HYSbfI68UW22H-A2WScCE/s72-c/meetings2goworkflow.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-5153874983948686795</guid><pubDate>Sun, 14 Jul 2024 15:06:00 +0000</pubDate><atom:updated>2024-07-14T09:06:31.540-06:00</atom:updated><title>The iPhora Journey - Part 10 - ActionStream - the Heart of iPhora</title><description>&lt;p&gt;In the last post, we discussed the use of flow-based programming for creating user interfaces. In this post, we introduce the ActionStream, which is the the foundational flow-based component in iPhora.&lt;/p&gt;&lt;p&gt;A workflow process consists of series of nodes that are connected together. iPhora AppBuilder supports many different types of nodes, including task nodes, notification nodes, and branching nodes, as well as a wide range of action nodes. A sequence of actions that are connected together is referred to as a flow.&lt;/p&gt;&lt;p&gt;During our 20+ years of experience in automating processes, we encountered many situations where the same repetitive flow occurred within different processes.&amp;nbsp; Therefore, it would be beneficial if it were possible to reuse the same flow in multiple processes and applications. This led directly to the development of the ActionStream, which is a reusable sequence of action nodes, in other words a reusable flow.&lt;/p&gt;&lt;p&gt;Originally, ActionStreams were just a way to quickly implement custom capabilities that could then be added into to the node palette and utilized by business users in their processes. But as ActionStreams evolved over time, we realized that they could do much more.&amp;nbsp; They became the foundational layer for iPhora. In fact, certain parts of iPhora, such as service connectors, are entirely made up of ActionStreams.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;So, what is an ActionStream?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;An ActionStream is a process flow that consists of a series of action nodes. By assembling action nodes together, very complex actions can be implemented. The resulting ActionStream is then given a name, and it can then be reused in different processes. It is possible to create ActionStreams that are truly global in scope, meaning they can be used in any process, or ActionStreams that are limited to only a specific app.&lt;/p&gt;&lt;p&gt;The closest analogy in the programming world is a NodeRed subflow, where an entire subflow is represented by a single node. Unlike NodeRed subflows, ActionStreams are stand-alone and can be reused in multiple processes and workflow applications. ActionStreams can have their own assigned access control settings, but they are also able to inherit the security settings of the parent process.&lt;/p&gt;&lt;p&gt;An ActionStream can include other ActionStreams within its flow. It is also capable of launching a separate workflow process. For example, you may have a form that visitors can fill out on your website to submit information. Upon submission, a form post ActionStream can trigger an entire workflow process that checks the submitted information, adds that information into a database, and notifies the task performer that there is a pending task that needs their attention.&lt;/p&gt;&lt;p&gt;ActionStreams have access to the field data associated with a process. However, the ActionStream itself may use a different set of internal names to refer to those fields. Because of this, a field mapping tool is available whenever an ActionStream is pulled into a process (or other ActionStream). The mapping tool makes it easy to associate the process fields with the ActionStream fields.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJXAugJDIJydL7Qk2-d-WjhbakEwD4xf3wKAYuwqgF3HbVFHAAZjc1ew2_CLsmee8z-ULrCTpCaMEmaylNUY-k9lzvk3sb3GXzNtInSxYJ1jF-nAFgCQOLKhqdV_m7C08l7Z1AXNxRkgVfyF7Zj4-engK0ikaqOlEfA5-Ma5yJkwAceFNPnW4b0uLylYs/s760/ActionStream.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;758&quot; data-original-width=&quot;760&quot; height=&quot;399&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJXAugJDIJydL7Qk2-d-WjhbakEwD4xf3wKAYuwqgF3HbVFHAAZjc1ew2_CLsmee8z-ULrCTpCaMEmaylNUY-k9lzvk3sb3GXzNtInSxYJ1jF-nAFgCQOLKhqdV_m7C08l7Z1AXNxRkgVfyF7Zj4-engK0ikaqOlEfA5-Ma5yJkwAceFNPnW4b0uLylYs/w400-h399/ActionStream.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Just like a workflow process, you design and build an ActionStream using the visual designer in iPhora AppBuilder. Only users with developer and higher access can create/modify and publish ActionStreams. After they are published by the developer, ActionStreams can be accessed from the process design palette for consumption by business users when building their workflow applications.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;As I mentioned, ActionStreams have evolved over time, and they have now become the basis of our flow-based architecture. They provide a consistent and well-structured environment for developers to create the specialized business objects that they need.&amp;nbsp; As a company grows its library of ActionStreams, it provides more and more capabilities that business users can incorporate into their processes.&lt;/p&gt;&lt;p&gt;Next time in our iPhora Journey, we will focus on external service connectors, which form the REST API interface to cloud-based services.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/05/the-iphora-journey-part-9-flow-based.html&quot;&gt;The iPhora Journey - Part 9 - Flow-based Programming for Your User Interface&lt;br /&gt;&lt;/a&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/04/the-iphora-journey-part-8-flow-based.html&quot; rel=&quot;nofollow&quot;&gt;The iPhora Journey - Part 8 - Flow-based Programming&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.dominointerface.com/2022/09/the-iphora-journey-part-7-transforming.html&quot;&gt;The iPhora Journey - Part 7 - Transforming Domino with Microservices&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/09/the-iphora-journey-part-6-application.html&quot;&gt;The iPhora Journey - Part 6 - An Application, Rethinking and Redefining&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-5-dammit-jim-im.html&quot;&gt;The iPhora Journey - Part 5 - Dammit Jim, I&#39;m a LotusScripter not a JavaScripter&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king_10.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The How&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The Why&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-3-creating.html&quot;&gt;The iPhora Journey - Part 3 - Creating an Integrated UI Framework&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-ii-domino.html&quot;&gt;The iPhora Journey - Part 2 - Domino, the Little Engine that Could&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-i-reimagining.html&quot;&gt;The iPhora Journey - Part 1 - Reimagining Domino&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ActionStream is a trademark of Phora Group&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2024/07/the-iphora-journey-part-10-actionstream.html</link><author>noreply@blogger.com (Domino Interface)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJXAugJDIJydL7Qk2-d-WjhbakEwD4xf3wKAYuwqgF3HbVFHAAZjc1ew2_CLsmee8z-ULrCTpCaMEmaylNUY-k9lzvk3sb3GXzNtInSxYJ1jF-nAFgCQOLKhqdV_m7C08l7Z1AXNxRkgVfyF7Zj4-engK0ikaqOlEfA5-Ma5yJkwAceFNPnW4b0uLylYs/s72-w400-h399-c/ActionStream.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-9023541696501210965</guid><pubDate>Wed, 08 May 2024 12:50:00 +0000</pubDate><atom:updated>2024-05-08T06:50:26.693-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business process automation</category><category domain="http://www.blogger.com/atom/ns#">business user</category><category domain="http://www.blogger.com/atom/ns#">Flow-based programming</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppBuilder</category><category domain="http://www.blogger.com/atom/ns#">iPhora ProcessFactory</category><category domain="http://www.blogger.com/atom/ns#">low-code</category><category domain="http://www.blogger.com/atom/ns#">no-code</category><category domain="http://www.blogger.com/atom/ns#">Phora Group</category><category domain="http://www.blogger.com/atom/ns#">UI interface</category><category domain="http://www.blogger.com/atom/ns#">workflow automation</category><title>The iPhora Journey - Part 9 - Flow-based Programming for Your User Interface</title><description>&lt;p&gt;In general, for non-software developers aka business users, an Application is one single object that they download and install onto their device whether a phone or laptop. It may also be a solution that they can access from their web browser. It may contain a series of screens that they navigate between as they use it.&amp;nbsp; The Application most likely includes many components working in unisons some in the background and some generating the visual interface that they see.&lt;/p&gt;&lt;p&gt;The Application may have many screens and visual design elements. For example, you might have a dashboard that shows aggregated data, a grid that list documents, or a form that users will use to fill out data.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Many solutions layout out the different screens using a tree structure that shows the relationships between screens.&amp;nbsp; Usually, you build the connections between the pages by selecting actions within a screen. For example, in Microsoft Power App. the tree structure looks like:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2W5E0WYF_yMidM_am9pB4_rnS4kCcKNHtRWtDzbjt3ZYWFiqP69FLQcQ0nuRTN7MeKaUbENTP9_P2rBsPx-M_8Sqlj2e5Werg-xfxoL7rm-3k4JHjhdJXyjv2QS1fGhLLIJ4oJUQ3RYKPFk9fCH4zwOMoM5PRsQP118X9i_ld41OO_7Xe6I6_gq8WNdY/s1838/powerapps.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1201&quot; data-original-width=&quot;1838&quot; height=&quot;418&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2W5E0WYF_yMidM_am9pB4_rnS4kCcKNHtRWtDzbjt3ZYWFiqP69FLQcQ0nuRTN7MeKaUbENTP9_P2rBsPx-M_8Sqlj2e5Werg-xfxoL7rm-3k4JHjhdJXyjv2QS1fGhLLIJ4oJUQ3RYKPFk9fCH4zwOMoM5PRsQP118X9i_ld41OO_7Xe6I6_gq8WNdY/w640-h418/powerapps.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;However, we wanted a more visual and intuitive way for any user to build their solution allowing them to connect the different parts of the solution as easy as analogous to building with Lego blocks.&lt;/p&gt;&lt;p&gt;We came up with the concept of AppBlocks which represented common components of an application like a form, grid and page.&amp;nbsp; Each is a design element with pre-defined properties and behavior on how they interact with other AppBlocks within an application.&lt;/p&gt;&lt;p&gt;Originally AppBlocks utilized a simple block-based interface with pre-assembled components based on given templates that users might commonly use.&amp;nbsp; This was somewhat restrictive, but worked well.&amp;nbsp; This worked fine until the user wanted to make additional changes or enhancements to the design.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim8ItD-Extxf9RhvlPL9SPgSvgH4Uoxxm40eUOHmqc7tHFerzHSMiGpx622BnnB968IZgQdJsQeEkbyOc2tR-RqoQhl_dABgGZDWCYmnL3I1qwi-aNqCFzPr1wCF0sliQDyXPncLnt5shtmRjr3rFV7N_3Z6f6Tf4x1RcY_ctcCP_4CG_PD7bM0Ed9IeU/s1598/AppBlock%20Concept-2020-0202.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;746&quot; data-original-width=&quot;1598&quot; height=&quot;299&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim8ItD-Extxf9RhvlPL9SPgSvgH4Uoxxm40eUOHmqc7tHFerzHSMiGpx622BnnB968IZgQdJsQeEkbyOc2tR-RqoQhl_dABgGZDWCYmnL3I1qwi-aNqCFzPr1wCF0sliQDyXPncLnt5shtmRjr3rFV7N_3Z6f6Tf4x1RcY_ctcCP_4CG_PD7bM0Ed9IeU/w640-h299/AppBlock%20Concept-2020-0202.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;iPhora AppBlock version 1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Therefore, we looked for a more flexible approach where users could utilize a number of predefined design templates, but also allowed them to visually customize the design of the application without the need for developers to create code.&amp;nbsp; They could even start from scratch with no pre-defined template.&lt;/p&gt;&lt;p&gt;Since we were already using the mxGraph library to allow users to visually design and create their own processes, we wanted to see if was possible to use it for creating the user interface.&amp;nbsp; A user interface and how a user navigate throughout an application is essentially a flow. In fact, developers have used Node Red to create dashboards, but only as a single design element.&lt;/p&gt;&lt;p&gt;But the trick would be again be how to treat each component as a black box with interaction with between AppBlocks governed by a common bus that facilitated communication.&amp;nbsp; In this case, the communication was not only data but user interaction.&lt;/p&gt;&lt;p&gt;Unlike the process node elements, AppBlocks, were much more complex in nature. AppBlocks themselves contained a variety of design elements within themselves and we needed to keep track of the different design elements within an AppBlock.&amp;nbsp; Again, the flexibility of using JSON to represent objects and design came to light.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicGcVyd0sbHCQcVa9cbfyztEA0TO44UHr_nzTzWKGU_ibdE3rCfjbVbgkQ-b2AuK22Hqtck09mwwI8P322NKTItgTGPjnwpLGanYkL0q2gWkpDzQwfRfVMbdvo6tLJmtaA9WQ3yDrw6bN46LnL-sxxi0s7ao5FH1ypPkejttT6VKcVyZJ9tfI9-lXU_Jk/s1500/appblocks.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1000&quot; data-original-width=&quot;1500&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicGcVyd0sbHCQcVa9cbfyztEA0TO44UHr_nzTzWKGU_ibdE3rCfjbVbgkQ-b2AuK22Hqtck09mwwI8P322NKTItgTGPjnwpLGanYkL0q2gWkpDzQwfRfVMbdvo6tLJmtaA9WQ3yDrw6bN46LnL-sxxi0s7ao5FH1ypPkejttT6VKcVyZJ9tfI9-lXU_Jk/w640-h426/appblocks.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;iPhora AppBlock version 4&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;It took almost 6 months, but we were able to get it working. As shown above a user can easily visualize the design of the application that they have created making it easier for them to create and edit applications.&amp;nbsp; Does this approach work for all applications and the answer is no.&amp;nbsp; However, it provides 90% of the need.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Now that we have the tools to visually create applications and processes for which business users can use to automate their processes, we needed a way for iPhora to go beyond basic workflow. Something that business users could easily utilize to scale and handle complex workflows and processes.&amp;nbsp; Next time, iPhora ActionStreams.&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://dominointerface.blogspot.com/2024/04/the-iphora-journey-part-8-flow-based.html&quot; rel=&quot;nofollow&quot;&gt;The iPhora Journey - Part 8 - Flow-based Programming&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.dominointerface.com/2022/09/the-iphora-journey-part-7-transforming.html&quot;&gt;The iPhora Journey - Part 7 - Transforming Domino with Microservices&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/09/the-iphora-journey-part-6-application.html&quot;&gt;The iPhora Journey - Part 6 - An Application, Rethinking and Redefining&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-5-dammit-jim-im.html&quot;&gt;The iPhora Journey - Part 5 - Dammit Jim, I&#39;m a LotusScripter not a JavaScripter&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king_10.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The How&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The Why&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-3-creating.html&quot;&gt;The iPhora Journey - Part 3 - Creating an Integrated UI Framework&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-ii-domino.html&quot;&gt;The iPhora Journey - Part 2 - Domino, the Little Engine that Could&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-i-reimagining.html&quot;&gt;The iPhora Journey - Part 1 - Reimagining Domino&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2024/05/the-iphora-journey-part-9-flow-based.html</link><author>noreply@blogger.com (Domino Interface)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2W5E0WYF_yMidM_am9pB4_rnS4kCcKNHtRWtDzbjt3ZYWFiqP69FLQcQ0nuRTN7MeKaUbENTP9_P2rBsPx-M_8Sqlj2e5Werg-xfxoL7rm-3k4JHjhdJXyjv2QS1fGhLLIJ4oJUQ3RYKPFk9fCH4zwOMoM5PRsQP118X9i_ld41OO_7Xe6I6_gq8WNdY/s72-w640-h418-c/powerapps.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-8445354942073048777</guid><pubDate>Mon, 22 Apr 2024 06:02:00 +0000</pubDate><atom:updated>2024-04-22T00:02:27.455-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business process automation</category><category domain="http://www.blogger.com/atom/ns#">Citizen Developer</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppBuilder</category><category domain="http://www.blogger.com/atom/ns#">iPhora Automate</category><category domain="http://www.blogger.com/atom/ns#">iPhora ProcessFactory</category><category domain="http://www.blogger.com/atom/ns#">low-code</category><category domain="http://www.blogger.com/atom/ns#">no-code</category><category domain="http://www.blogger.com/atom/ns#">workflow automation</category><title>Introducing iPhora Automate - User-driven Automation for Your Mission Critical Processes</title><description>By trade, I am an Electrical Engineer with a specialty in Microwave Engineering. And as part of my education, I had to take courses in process and industrial engineering which involved process optimization and automation. I hated these two courses and naively thought I would never ever use the information that I learned in these two courses. I only had interest in the technical aspect of engineering and with my first job out of college that is what I did. Never did I ever thought that I would spend the past 20 years focused on stuff that I hated in college.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The concepts of iPhora came out of issues that we encountered as we rapidly grew another business many years ago from which spawn our business process automation business which we have been doing for the past 20 years.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For the past few years, we have been transforming our consulting service platform into a commercial off-the-shelf product that focuses on the business user as the target audience. We would like to introduce iPhora Automate, User-driven Automation for Your Mission Critical Processes is now live on HCL Sofy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;padding: 56.25% 0px 0px; position: relative;&quot;&gt;&lt;iframe allow=&quot;autoplay; fullscreen; picture-in-picture; clipboard-write&quot; frameborder=&quot;0&quot; src=&quot;https://player.vimeo.com/video/936520771?badge=0&amp;amp;autopause=0&amp;amp;player_id=0&amp;amp;app_id=58479&quot; style=&quot;height: 100%; left: 0; position: absolute; top: 0; width: 100%;&quot; title=&quot;Introducing iPhora Automate&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;script src=&quot;https://player.vimeo.com/api/player.js&quot;&gt;&lt;/script&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://hclsofy.com/sofy/catalog/iphora-automate?view=doc&amp;amp;file=documentation.md&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;iPhora Automate on HCL SoFy&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2024/04/introducing-iphora-automate-user-driven.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-167645065539174121</guid><pubDate>Mon, 15 Apr 2024 12:12:00 +0000</pubDate><atom:updated>2024-04-15T08:53:15.471-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business process automation</category><category domain="http://www.blogger.com/atom/ns#">business user</category><category domain="http://www.blogger.com/atom/ns#">Flow-based programming</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppBuilder</category><category domain="http://www.blogger.com/atom/ns#">iPhora ProcessFactory</category><category domain="http://www.blogger.com/atom/ns#">low-code</category><category domain="http://www.blogger.com/atom/ns#">no-code</category><category domain="http://www.blogger.com/atom/ns#">workflow automation</category><title>The iPhora Journey - Part 8 - Flow-based Programming</title><description>&lt;p&gt;After my last post in this series -- way back in September 2022, several things happened that prevented any further installments. First came CollabSphere 2022 and then CollabSphere 2023, and organizing international conferences can easily consume all of one&#39;s spare time. Throughout this same time period, our product development efforts continued at full speed and are just now coming to fruition, which means it is finally time to continue our blog series. So let&#39;s get started...&lt;/p&gt;&lt;p&gt;As developers, most of us create applications through the conscious act of programming, either procedural, as many of us old-timers grew up with, or object-oriented, which we grudgingly had to admit was better. This is true whether we are using Java, LotusScript, C++ or Rust on Domino. (By the way, does anyone remember Pascal? When I was in school, I remember being told it was the language of the future, but for some reason it didn&#39;t seem to survive past the MTV era).&amp;nbsp; But in the last decade, there are some new developments in the programming world that we need to take into account... and no, I&#39;m not talking about AI.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Let&#39;s start with the basics:&lt;/p&gt;&lt;p&gt;Based on recent surveys, 60 to 70% of all enterprise applications are associated with implementing business processes, and a simple definition of a &quot;business process&quot; is that it is a series of tasks that need to be performed by an organization to achieve a defined business goal.&lt;/p&gt;&lt;p&gt;In general, if the business process involves interaction with humans we refer to those processes as workflows.&lt;/p&gt;&lt;p&gt;Simple business processes are usually linear and may involve only a few steps and decisions.&amp;nbsp; However, more complex processes are often non-linear and involve the launching of other processes or sub processes. They may also involve data or data processing requests to external services.&lt;/p&gt;&lt;p&gt;If the business process needs to occur frequently, it is best to automate it. This can be achieved via software programming using any of a multitude of available languages. For example, over the past 30 years, literally thousands of workflow applications have been built by Domino developers and many of them are still in use today.&lt;/p&gt;&lt;p&gt;However, the core business process itself is fluid; it is always changing. This is because the business environment itself changes over time and competitive pressure means that improvements are always necessary. Unfortunately, constant tweaking and adjusting of all process across an entire organization is a tremendously expensive proposition, so much so, that most processes are rarely touched once they are rolled out.&lt;/p&gt;&lt;p&gt;When we first built iPhora Foundation to automate workflows and processes for our customers, it was XML-based and functionally similar to how typical Domino-based workflows operated. But that approach did not allow for the flexibility that we needed to handle non-linear processes, and of course, if any changes or improvements were needed, the customer has to pay our consulting rates to get it done.&lt;/p&gt;&lt;p&gt;But that experience taught us a great deal. We knew we needed to develop a different approach. Non-linear processes involve asynchronous triggering of incoming and outgoing requests. It may involve a mix of user-based and automated actions, as well interaction with external services.&lt;/p&gt;&lt;p&gt;At the same time, the industry has since moved in the direction of no-code programming, where the developers are the business users themselves. The goal of this approach is to make the resulting applications more suitable to business needs of the users and to reduce the costs associated with creating and maintaining applications. There are now hundreds of no-code and low-code solutions on the market, most of them utilizing the concept of flow-based programming. A well-known flow-based tool is Node RED, which is designed for low-code and pro-code developers.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;From Wikipedia, flow-based programming is defined as.&lt;/p&gt;&lt;p&gt;&lt;i&gt;&quot;In computer programming, flow-based programming (FBP) is a programming paradigm that defines applications as networks of black box processes, which exchange data across predefined connections by message passing, where the connections are specified externally to the processes. These black box processes can be reconnected endlessly to form different applications without having to be changed internally. FBP is thus naturally component-oriented.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;FBP is a particular form of dataflow programming based on bounded buffers, information packets with defined lifetimes, named ports, and separate definition of connections.&quot;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;You can think of it as creating a flowchart with each node performing a specific business operation. Each node is a black box and should be reusable.&lt;/p&gt;&lt;p&gt;So our goal was to transform iPhora Foundation to utilize a flow-based model of process automation. This turned out to be a much more daunting task than we originally imagined. Most flow-based solutions on the market use a simplified security model. Since many of the processes that our customers needed involved sensitive data, we wanted a higher level of security, where the operation of each node is allowed or disallowed based on workflow roles, which could be evaluated in real time based on a number of criteria.&lt;/p&gt;&lt;p&gt;We needed a framework that would allow us to create different types of nodes with defined business logic and make them available for users to build their processes. But how do you get these different nodes to communicate with one another? To handle this we created a persistent common bus that allowed the nodes to communicate and transfer data between themselves as long as the process was active. We decided that the communication pathway should be in the form of JSON objects. This allowed for a standard data packet structure that could handle any situation from the simple to the complex.&amp;nbsp; Since we had already developed a LotusScript-based JSON parser, this was a no brainer.&lt;/p&gt;&lt;p&gt;We started with 5 basic nodes:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Start&lt;/li&gt;&lt;li&gt;Task&lt;/li&gt;&lt;li&gt;Notification&lt;/li&gt;&lt;li&gt;Conditional Branching&lt;/li&gt;&lt;li&gt;Complete&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;With these nodes, business users can easily automate a basic workflow process. To handle more complex processes, we came up with dozens of additional nodes, including a node that can handle independent threaded processes called ActionStreams. (We will talk more about ActionStreams in a future blog post.)&lt;/p&gt;&lt;p&gt;We are constantly coming up with new nodes. Some of them require a low-code or pro-code developer to design and build, but the resulting node can then be consumed by business users in their own applications, giving them a wealth of business logic that they can include in their designs with no coding on their part.&lt;/p&gt;&lt;p&gt;The other part of the puzzle is the user interface. Our target audience of business users requires an intuitive, visual interface to assemble their processes.&amp;nbsp; Luckily, we were able identify a great open source solution, mxGraph, that provided the visualization that was needed.&amp;nbsp; If you have ever used a great little product called draw.io to layout a flow diagram, it uses the mxGraph library.&lt;/p&gt;&lt;p&gt;But setting the goals and selecting the tools was the easy part. Creating an effective, easy-to-use interface to our node processing engine was the majority of the battle. After many tries and redesigns, we were successful, and this design is now incorporated into our iPhora AppBuilder solution.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLpseVJHyvweSjIAuM67I8MQOY42S0Fs198jHqvORBWUGa-O5fXBTTFlPOLcREkditw5O3hDxzzcTzSimmCOoBxC5Sb_5miFI_B-9bJe-P0OArExlw74I0w35Nsj4UzuqzfgYtub1IPa_IwkotDhFFv9WCaXcVHrms03sLWKD07bSsPgbvdzanIyCE37k/s941/workflow-process.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;696&quot; data-original-width=&quot;941&quot; height=&quot;474&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLpseVJHyvweSjIAuM67I8MQOY42S0Fs198jHqvORBWUGa-O5fXBTTFlPOLcREkditw5O3hDxzzcTzSimmCOoBxC5Sb_5miFI_B-9bJe-P0OArExlw74I0w35Nsj4UzuqzfgYtub1IPa_IwkotDhFFv9WCaXcVHrms03sLWKD07bSsPgbvdzanIyCE37k/w640-h474/workflow-process.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Flow-based programming is a powerful methodology for creating applications.&amp;nbsp; It forces you to think in terms of reusable independent building blocks, and the result is reduced development time and less need for skilled developers..&lt;/p&gt;&lt;p&gt;Next time, we will take flow-based programming to a different level, The iPhora Journey - Part 9 - Flow-based UI Programming.&lt;/p&gt;&lt;div&gt;&lt;a href=&quot;http://www.dominointerface.com/2022/09/the-iphora-journey-part-7-transforming.html&quot;&gt;The iPhora Journey - Part 7 - Transforming Domino with Microservices&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/09/the-iphora-journey-part-6-application.html&quot;&gt;The iPhora Journey - Part 6 - An Application, Rethinking and Redefining&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-5-dammit-jim-im.html&quot;&gt;The iPhora Journey - Part 5 - Dammit Jim, I&#39;m a LotusScripter not a JavaScripter&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king_10.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The How&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The Why&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-3-creating.html&quot;&gt;The iPhora Journey - Part 3 - Creating an Integrated UI Framework&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-ii-domino.html&quot;&gt;The iPhora Journey - Part 2 - Domino, the Little Engine that Could&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-i-reimagining.html&quot;&gt;The iPhora Journey - Part 1 - Reimagining Domino&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2024/04/the-iphora-journey-part-8-flow-based.html</link><author>noreply@blogger.com (Domino Interface)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLpseVJHyvweSjIAuM67I8MQOY42S0Fs198jHqvORBWUGa-O5fXBTTFlPOLcREkditw5O3hDxzzcTzSimmCOoBxC5Sb_5miFI_B-9bJe-P0OArExlw74I0w35Nsj4UzuqzfgYtub1IPa_IwkotDhFFv9WCaXcVHrms03sLWKD07bSsPgbvdzanIyCE37k/s72-w640-h474-c/workflow-process.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-5036263686219828794</guid><pubDate>Thu, 27 Oct 2022 06:39:00 +0000</pubDate><atom:updated>2022-10-27T00:39:08.141-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business process automation</category><category domain="http://www.blogger.com/atom/ns#">HCL Digital Solutions</category><category domain="http://www.blogger.com/atom/ns#">HCL Domino</category><category domain="http://www.blogger.com/atom/ns#">HCL Nomad</category><category domain="http://www.blogger.com/atom/ns#">iPhora</category><category domain="http://www.blogger.com/atom/ns#">iPhora Process Automation</category><category domain="http://www.blogger.com/atom/ns#">low-code</category><category domain="http://www.blogger.com/atom/ns#">no-code</category><category domain="http://www.blogger.com/atom/ns#">workflow automation</category><title>CollabSphere 2022 Presentation: COL103 Advanced Automation and Cloud Service Integration for your Notes/Nomad Applications</title><description>&lt;p&gt;Our presentation for CollabSphere 2022. Learn how to quickly add workflow automation into Notes/Nomad applications using No-code tools that can utilize cloud-based services.&lt;/p&gt;
 &lt;div style=&quot;text-align:center&quot;&gt;&lt;iframe allow=&quot;autoplay; fullscreen&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;564&quot; src=&quot;https://player.vimeo.com/video/764336060?h=d89c5940ca&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2022/10/collabsphere-2022-presentation-col103_27.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-4935001504050520378</guid><pubDate>Fri, 16 Sep 2022 22:04:00 +0000</pubDate><atom:updated>2022-09-16T16:04:47.933-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">business process automation</category><category domain="http://www.blogger.com/atom/ns#">Flow-based programming</category><category domain="http://www.blogger.com/atom/ns#">HCL Digital Solutions</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppBuilder</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppPlace</category><category domain="http://www.blogger.com/atom/ns#">iPhora Process Automation</category><title>The iPhora Journey - Part 7 - Transforming Domino with Microservices</title><description>&lt;p&gt;Most of the concepts that we have been talking about in our iPhora Journey are neither new nor revolutionary. Collectively, they merely represent the current state of the art in designing web applications.&lt;/p&gt;&lt;p&gt;In other (i.e., non-Domino) platforms, you would need an array of services each running on a separate server, and you would have to build the integration between the different components and maintain security between all of those components. With virtualization and containers all of the necessary services can now bundled into a single installation, which is helpful, but the integration of those components can still be fraught with issues, especially compatibility between different versions of those services.&lt;/p&gt;&lt;p&gt;With Domino all of this is taken care for you: authentication, directory services, security, web services, and database services are all tightly integrated in a single server,&amp;nbsp; which is an advantage that no other technology offers. While Domino has its quirks and does not support many of the latest features, hopefully HCL will be addressing those in the near future.&amp;nbsp; Even as it stands right now, the simple addition of nginx as a proxy to Domino addresses most of the deficiencies.&lt;/p&gt;&lt;p&gt;The iPhora platform is built on Domino, and in doing that we take advantage of the inherent integration of the Domino services. But we also incorporate design methodologies that are usually associated wit non-Domino applications. With this approach, iPhora has the capabilities and features of a modern web application, but all it needs to run is a single server with the most minimal of hardware requirements. We challenge any vendor to be able to do everything that iPhora does on a single box as small as this.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoX5KJhVijpYwGYhZH1lLRgpoNCabwmedQCUz6zqbMBBoz3E-qhQmiHe0dRohJFabbhNdmBVJoIrzdFibo0sFr_UR-RNptNY-dlFjsEAI-Mc_hBmvw3wjLAkudu9uy68EV9uQ7-tKgqlsTKNd4fALtAbVt0GfTLMaYjYRvf9vt8eO7G_cZTsjO_IsX/s4032/~b817020.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoX5KJhVijpYwGYhZH1lLRgpoNCabwmedQCUz6zqbMBBoz3E-qhQmiHe0dRohJFabbhNdmBVJoIrzdFibo0sFr_UR-RNptNY-dlFjsEAI-Mc_hBmvw3wjLAkudu9uy68EV9uQ7-tKgqlsTKNd4fALtAbVt0GfTLMaYjYRvf9vt8eO7G_cZTsjO_IsX/s320/~b817020.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Creating a modern application is not solely about using latest technology to build the application. Well-supported technologies with a long term commitment to maintenance are always preferable to the latest design fad. The important question is what you do with that technology?&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The iPhora concept evolved over the span of 15 years, as we developed applications for organizations, both large&amp;nbsp; and small, and gained experience with how companies handled their internal business processes. Step by step, we abandoned the more monolithic approach normally used when creating Domino applications, for a more fluid and plug and play architecture. Eventually, we wound up with a service based and loosely coupled architecture, a microservice architecture. It should be noted that this applies to the iPhora components that we developed, not to the underlying Domino services.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Wikipedia defines microservice as:&lt;/p&gt;&lt;p&gt;&lt;i&gt;&quot;A microservice architecture – a variant of the SOA (service-oriented architecture) structural style – arranges an application as a collection of loosely-coupled services. In a microservice architecture, services are fine-grained and the protocols are lightweight. The goal is that teams can bring their services to life independent of others. Loose coupling reduces all types of dependencies and the complexities around it, as service developers do not need to care about the users of the service, they do not force their changes onto users of the service. Therefore it allows organizations developing software to grow fast and big, as well as use off-the-shelf services more easily. Communication requirements are reduced. These benefits come at a cost to maintaining the decoupling. Interfaces need to be designed carefully and treated as a public API.&quot;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Using the programming tools available in Domino, we were able to build a microservice architecture that passes data in and out using a common bus and transport schema. Each microservice is an isolated black box with only input and output.&lt;/p&gt;&lt;p&gt;Remember that in a previous blog I mentioned the importance of the JSON format and the ability to quickly process JSON. The reason is that the data transport layer between microservices is all JSON. By having all input and output defined as JSON objects, we achieve a standardized and easily extensible communication layer. This allows microservices to be independent and reusable by multiple services and processes. A typical process can chain together a series of microservices to accomplish a specific and highly complex task, as opposed to writing a custom services to accomplish the same thing.&lt;/p&gt;&lt;p&gt;But how do you connect these different microservices together to create your application? This leads to our next discussion next time, flow-based programming.&lt;/p&gt;&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/09/the-iphora-journey-part-6-application.html&quot;&gt;The iPhora Journey - Part 6 - An Application, Rethinking and Redefining&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-5-dammit-jim-im.html&quot;&gt;The iPhora Journey - Part 5 - Dammit Jim, I&#39;m a LotusScripter not a JavaScripter&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king_10.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The How&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king.html&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The Why&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-3-creating.html&quot;&gt;The iPhora Journey - Part 3 - Creating an Integrated UI Framework&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-ii-domino.html&quot;&gt;The iPhora Journey - Part 2 - Domino, the Little Engine that Could&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-i-reimagining.html&quot;&gt;The iPhora Journey - Part 1 - Reimagining Domino&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2022/09/the-iphora-journey-part-7-transforming.html</link><author>noreply@blogger.com (Domino Interface)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoX5KJhVijpYwGYhZH1lLRgpoNCabwmedQCUz6zqbMBBoz3E-qhQmiHe0dRohJFabbhNdmBVJoIrzdFibo0sFr_UR-RNptNY-dlFjsEAI-Mc_hBmvw3wjLAkudu9uy68EV9uQ7-tKgqlsTKNd4fALtAbVt0GfTLMaYjYRvf9vt8eO7G_cZTsjO_IsX/s72-c/~b817020.jpeg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9156796918421571576.post-6870529939839599298</guid><pubDate>Tue, 06 Sep 2022 23:52:00 +0000</pubDate><atom:updated>2022-09-06T19:08:52.814-06:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Domino</category><category domain="http://www.blogger.com/atom/ns#">HCL Digital Solutions</category><category domain="http://www.blogger.com/atom/ns#">iPhora</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppBuilder</category><category domain="http://www.blogger.com/atom/ns#">iPhora AppPlace</category><category domain="http://www.blogger.com/atom/ns#">iPhora Process Automation</category><category domain="http://www.blogger.com/atom/ns#">LotusScript</category><category domain="http://www.blogger.com/atom/ns#">low-code</category><category domain="http://www.blogger.com/atom/ns#">no-code</category><category domain="http://www.blogger.com/atom/ns#">Process Automation</category><title>The iPhora Journey - Part 6 - An Application, Rethinking and Redefining</title><description>&lt;p&gt;In our previous articles, we discussed the advantages of using JSON in applications and the importance of being able to effectively process JSON. This leads to the interesting question: what exactly is an application, and the answer to that question may differ depending on who you ask. Most people today would assume you are referring to a phone app, and even then there are wide range of options. A college student might think of apps like Tiktok or WhatsApp, and a person looking for a significant other might automatically think of Hinge or Tinder. All of these people would be able to provide you with multiple examples of apps, and they might be able to list some of the common features of an app, even if they do not understand any of the technical details.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://img.freepik.com/free-photo/portrait-young-woman-look-smartphone-screen-smiling-reading-message-cell-phone-using-mobile-app-messanger-standing-against-white-background_176420-47640.jpg?w=996&amp;amp;t=st=1662512848~exp=1662513448~hmac=415c7cba650f446362f4ce6a770a2d32221389f7478fc0d08d71558ca44c8be6&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;533&quot; data-original-width=&quot;800&quot; height=&quot;266&quot; src=&quot;https://img.freepik.com/free-photo/portrait-young-woman-look-smartphone-screen-smiling-reading-message-cell-phone-using-mobile-app-messanger-standing-against-white-background_176420-47640.jpg?w=996&amp;amp;t=st=1662512848~exp=1662513448~hmac=415c7cba650f446362f4ce6a770a2d32221389f7478fc0d08d71558ca44c8be6&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;In general, a web app today consists of the following four modules, even if the technical details may differ tremendously from app to app:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;User interface (UI)&lt;/li&gt;&lt;li&gt;Database&lt;/li&gt;&lt;li&gt;Business Logic&lt;/li&gt;&lt;li&gt;Security&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Now, let&#39;s consider what an app is in the traditional Notes/Domino sense. Here, an application still consists of the same four modules, but everything is mixed together (actually smeared-together may be a better term), as opposed to being separated. A Domino application consists of one or more Domino databases, and access and security is defined within each database using ACLs.&amp;nbsp; This is true for both Notes client and Web-based applications created on Domino -- so far, so good.&amp;nbsp; However, when it comes to the UI and Database modules, Domino uses the concept of a form, which defines both the user interface and the data structure for storage, modules that are typically separated in more modern apps.&lt;/p&gt;&lt;p&gt;Moreover, the business logic is programmed directly into the actual UI components all over the form. Even something as simple and basic as controlling what UI elements are visible (i.e., hide-when formulas) requires that the programming logic is dispersed throughout the form and may be associated with each and every UI component.&lt;/p&gt;&lt;p&gt;This approach can work for stand alone applications or situations involving only a few applications. However, as the number of applications increases, providing the infrastructure to effectively create and manage the applications and user access becomes more and more difficult.&amp;nbsp; This is very true for Domino applications because the business logic can be implemented in so many different ways and in so many different places.&lt;/p&gt;&lt;p&gt;The complexity of Domino applications tends to increase even further because the data is distributed throughout multiple databases using different data structures. The more different forms an application uses, the more views are needed and the more indexing is required, resulting in the need for more storage space.&lt;/p&gt;&lt;p&gt;So our primary goal was to structure iPhora to follow a modern application architecture, but still provide the extensive data security one expects from Domino. We wanted to be able to build and manage hundreds of applications with the same ease as doing it for one application. Almost all of the development projects that we have been involved with so far began with one critical application that eventually expanded to dozens of related applications, each with different sets of users and different ACLs requirements. For one customer, that one initial application grew into 50 applications and over 100 processes, each with different roles and user access requirements and all accessed and managed within a single instance of iPhora. Yet even as more and more applications were added, no additional Domino databases were needed.&lt;/p&gt;&lt;p&gt;An iPhora installation uses only seven Domino databases, each serving a specific purpose within the iPhora architecture:&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;API / GateKeeper&lt;/li&gt;&lt;li&gt;Attachment Store&lt;/li&gt;&lt;li&gt;Business Logic&lt;/li&gt;&lt;li&gt;Data Store&lt;/li&gt;&lt;li&gt;Logging&lt;/li&gt;&lt;li&gt;UI Interface&lt;/li&gt;&lt;li&gt;User Profile&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In other words, there is no longer a one-to-one relationship between applications and Domino databases. Any number of applications, including widely different types of applications, can be accommodated using this structure.&lt;/p&gt;&lt;p&gt;Since data security is of the upmost importance for iPhora, it was extremely important that users never have direct access to the data, which is contrary to a traditional Domino application. We wanted all of the databases to be totally locked down. Our API consists of LotusScript agents that interact with the data according to strict protocols. In general, the only database that users interact with is the database that holds those agents, and the UI interface. The other databases cannot be opened using Domino URL commands.&lt;/p&gt;&lt;p&gt;Since data is stored as JSON, the data store module utilizes a single Domino form to store all records regardless of the application, although the fields may different from one form to another. Any attachments that are uploaded into a data store document are actually stored in a separate attachment store database which also utilizes only one single Domino form. With DAOS, we can handle 1 TByte of attachments and if more are needed, we just can simply add another attachment store.&lt;/p&gt;&lt;p&gt;For companies that already have data in Domino databases, iPhora has the ability to read and display data from other Domino databases, including databases that are structured in the traditional Domino way. The only requirement is that form structure needs to be defined and added to iPhora.&lt;/p&gt;&lt;p&gt;In conclusion, by re-thinking and re-imagining what an application is in Domino, Domino becomes a scalable application platform on which to build and run secure applications that utilize a modern design framework.&amp;nbsp; The advantages of a structured and scalable application architecture become apparent as one moves towards utilizing no-code/low-code tools to build applications, something we will consider later in this series.&amp;nbsp;&lt;/p&gt;&lt;p&gt;How we access and communicate with external services including non-iPhora Domino applications is the subject of our next discussion, Microservices and Naoservices&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-5-dammit-jim-im.html&quot;&gt;The iPhora Journey - Part 5 - Dammit Jim, I&#39;m a LotusScripter not a JavaScripter&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;color: #0000ee; text-decoration-line: underline;&quot;&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king_10.html&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The How&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #0000ee; text-decoration-line: underline;&quot;&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-4-json-is-king.html&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;The iPhora Journey - Part 4 - JSON is King - The Why&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #0000ee; text-decoration-line: underline;&quot;&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/08/the-iphora-journey-part-3-creating.html&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;The iPhora Journey - Part 3 - Creating an Integrated UI Framework&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span style=&quot;color: #0000ee; text-decoration-line: underline;&quot;&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-ii-domino.html&quot;&gt;The iPhora Journey - Part 2 - Domino, the Little Engine that Could&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;a href=&quot;http://dominointerface.blogspot.com/2022/07/the-iphora-journey-part-i-reimagining.html&quot;&gt;The iPhora Journey - Part 1 - Reimagining Domino&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Domino Interface&lt;/div&gt;</description><link>http://dominointerface.blogspot.com/2022/09/the-iphora-journey-part-6-application.html</link><author>noreply@blogger.com (Domino Interface)</author><thr:total>0</thr:total></item></channel></rss>