Method and system for managing app development, particularly including event artifacts

A visual model-based and low-code app development platform simplifies app management by importing event artifacts and integrating them into a data storage platform, addressing inefficiencies in current systems and making app development more accessible.

JP7771366B2Active Publication Date: 2025-11-17MENDIX TECH BV
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2024515356
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-09-07
Filing Date
2022-08-09
Publication Date
2025-11-17
Estimated Expiration
2042-08-09

AI Technical Summary

Technical Problem

Current app development systems are inefficient and require advanced coding or manual steps, making the management and development of apps, particularly those including event artifacts, difficult and time-consuming, especially for non-IT professionals.

Method used

A visual model-based and low-code app development platform that facilitates app management by capturing user intent to import event artifacts, developing apps using these artifacts, deploying them on target devices, and integrating event information into a data storage platform for generating output data through app algorithms.

Benefits of technology

Enables efficient and intuitive app development accessible to non-IT professionals, simplifying the process by reducing manual coding, enhancing accessibility, and improving the management of complex app development environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007771366000004
    Figure 0007771366000004
  • Figure 0007771366000005
    Figure 0007771366000005
  • Figure 0007771366000006
    Figure 0007771366000006
Patent Text Reader

Abstract

For improved app (120) management, especially for development of apps (120) that include event artifacts (122), providing an application development user interface (UI) (116) of the application development platform (118) to a user for developing an application (120); capturing a user's intent to import each event artifact (122) from each deployed and running producing app (124) to develop an app (120) in response to a user interaction with an app development UI (116); importing each event artifact (122) corresponding to the captured user intent into an app development UI (116); developing an app (120) through an app development UI (116) using each imported event artifact (122); Deploying and executing the developed app (120) on a target device (140); importing event information (126) corresponding to each event artifact (122) from each producing app (124) into a data storage platform (150); providing the event information (126) imported into the data storage platform (150) from the data storage platform (150) to the deployed and running application (120); applying app algorithms (128) configured by the deployed and running app (120) to the provided event information (126) to generate output data (130); A computer-implemented method is proposed, which includes:
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure is directed generally to software management systems, and in particular to systems for developing apps, that can be used to manage, build, test, deploy, and repeat such apps (collectively referred to herein as production systems). [Background technology]

[0002] In recent years, an increasing number of computer software products, in the form of applications, are used for both personal and business needs. Such apps may be used in a mobile context, as well as on cloud computing platforms or "on-premise", and may provide a specific set of functionality. The present invention relates generally to the development and creation of such apps, particularly apps that include event artifacts. Summary of the Invention [Problem to be solved by the invention]

[0003] Currently, there are product systems and solutions that support the management and development of such apps, but there is room for improvement. [Means for solving the problem]

[0004] Various disclosed embodiments comprise methods and computer systems that can be used to facilitate app management.

[0005] According to a first aspect of the present invention, a computer-implemented method for managing apps comprises: Providing an app development user interface (UI) of the app development platform to a user for developing an app; capturing, in response to a user interaction with the app development UI, a user intent to import a respective event artifact from each production app that is deployed and running to develop the app; importing each event artifact corresponding to the captured user intent into the app development UI; Developing the app through the App Development UI using each imported event artifact; Deploying and running the developed app on a target device; importing event information corresponding to each event artifact from each producing app into a data storage platform; providing the event information imported into the data storage platform from the data storage platform to the deployed and running app; applying an application algorithm configured by the deployed and running application to the provided event information to generate output data; can contain

[0006] According to a second aspect of the present invention, a computer system may be arranged and configured to perform the steps of this computer-implemented method for managing apps. In particular, the computer system described may comprise: Providing an app development user interface (UI) of the app development platform to a user to develop an app; capturing a user's intent to import a respective event artifact from a respective production app deployed and running to develop the app in response to a user interaction with the app development UI; importing each event artifact corresponding to the captured user intent into the app development UI; Developing the app through the App Development UI using each imported event artifact; Deploying and running the developed app on a target device; importing event information corresponding to each event artifact from each development application into a data storage platform; providing the event information imported into the data storage platform from the data storage platform to the deployed and running app; applying app algorithms configured by the deployed and running app to the provided event information to generate output data; The method may be arranged and configured to:

[0007] According to a third aspect of the present invention, a computer program product may include computer program code that, when executed by a computer system, causes the computer system to perform this computer-implemented method for managing apps.

[0008] According to a fourth aspect of the present invention, a computer-readable medium may include computer program code that, when executed by a computer system, causes the computer system to perform the computer-implemented app management method. By way of example, the computer-readable medium may be non-transitory and may further be a software component on a storage device.

[0009] In some examples, the mentioned app development platform may be a visual model-based and / or low-code app development platform.

[0010] The foregoing has outlined, rather broadly, the technical features of the present disclosure so that those skilled in the art may better understand the detailed description that follows. Additional features and advantages of the present disclosure will be described hereinafter, which form the subject of the claims. Those skilled in the art will appreciate that they may readily use the conception and specific embodiments disclosed as a basis for modifying or designing other structures for carrying out the same purposes of the present disclosure. Those skilled in the art will also appreciate that such equivalent constructions do not depart from the spirit and scope of the present disclosure in its broadest form.

[0011] Also, before proceeding with the following detailed description, various definitions for certain terms are provided throughout this patent document, and those of ordinary skill in the art should understand that such definitions often apply to prior as well as future uses of the defined term. While some terms may constitute a wide variety of embodiments, the appended claims may expressly limit these terms to specific embodiments. [Brief explanation of the drawings]

[0012] 1-8 are each functional block diagrams of exemplary systems that facilitate management of apps in a product system. 9-13 each illustrate a flow diagram of an exemplary method for facilitating management of apps in a product system. FIG. 14 illustrates a block diagram of a data processing system in which embodiments may be implemented. DETAILED DESCRIPTION OF THE INVENTION

[0013] Various technologies related to systems and methods for managing apps, particularly apps that include event artifacts, in a product system are described below with reference to the drawings. The drawings described below and the various embodiments used in this patent document to explain the principles of the present disclosure are for illustrative purposes and should not be construed as limiting the scope of the disclosure. Those skilled in the art will understand that the principles of the present disclosure may be implemented in any suitably arranged device. It should be understood that functions described as being performed by a particular system element may be performed by multiple elements. Similarly, for example, an element may be configured to perform functions described as being performed by multiple elements. Many innovative teachings of this patent document are described with reference to exemplary, non-limiting embodiments.

[0014] An app generally refers to a software program that, when executed, performs a particular desired task. Apps typically run on one or more operating systems ("OS"), virtual machines (e.g., Java), and other operating systems. TM (registered trademark), device drivers, etc.

[0015] Apps, including native apps, can be created, edited, and expressed using traditional source code. Examples of such traditional source code include C, C++, Java, Flash, Python, Perl, and other script-based methods of expressing apps. Development, creation, and management of such script-based apps, or portions of such script-based apps, can be accomplished by manual coding by appropriately trained users.

[0016] Developers often use an Application Development Framework ("ADF") (which is itself an application or app) to implement / develop their desired app. An ADF provides a set of predefined code / data modules that can be used directly / indirectly in developing the app. An ADF may also provide tools such as integrated development environments ("IDEs"), code generators, and debuggers, making it easier for developers to code / implement the desired logic of the app faster / easier.

[0017] Generally, ADFs simplify app development by providing reusable components that app developers can use to define the user interface ("UI") and logic of their app, for example by selecting components that perform a required task and defining the appearance, behavior, and interactions of the selected components. Some ADFs are based on the Model-View-Controller design pattern, which promotes loose coupling and makes apps easier to develop and maintain.

[0018] According to another approach, apps can be created, edited, and represented using visual model-based representations. Unlike traditional source code implementations, such apps can be created, edited, and / or represented by drawing, moving, connecting, and / or disconnecting visual representations of logical elements within a visual modeling environment. A visual model-based representation of an app can use symbols, shapes, lines, colors, shading, animations, and / or other visual elements to represent logic, data, memory structures, or user interface elements. To program traditional script-based apps, programmers typically must type out detailed scripts following complex programming syntax rules. In contrast, programming a visual model-based app can sometimes be done by connecting various logical elements (e.g., action blocks and decision blocks) to create visual flowcharts that define the app's behavior. Similarly, data structures (e.g., variable types, database objects, classes) and user interface elements (e.g., drop-down boxes, lists, text entry boxes) in a visual model-based app can be defined by drawing, arranging, or connecting visual representations of logical elements within a virtual workspace, rather than by typing detailed commands in a script. Thus, visual model-based apps, including native apps, can be more intuitive to program and / or edit compared to traditional script-based apps. An approach is proposed herein for managing apps, particularly for developing apps consisting of event artifacts, which may involve the described visual model-based representation.

[0019] For brevity, references to a “model,” “visual model,” or “application” or “app” should be understood to refer to visual model-based apps, including native apps, unless otherwise specified. In some cases, such visual model-based apps may represent complete standalone apps for execution on a computer system. A visual model-based app may also represent individual modules configured to perform particular tasks or functions, but does not represent a complete app. Instead, such individual modules may be inserted into a larger app or combined with other individual modules to perform more complex tasks. Examples of such individual modules may include a module for validating zip codes, a module for receiving current weather information from a weather feed, and / or a module for rendering graphics.

[0020] A visual model may be represented in two forms: an internal representation and one or more associated visual representations. The internal representation may be a file encoded according to a file format used by the modeling environment to capture and define the behavior of the app (or parts of the app). For example, the internal representation may define the inputs the app can accept, the outputs the app can provide, the algorithms and operations the app can use to arrive at a result, the data the app can display, the data the app can save, and so on. The internal representation may also be used to instruct the execution environment on how to execute the app's logic at runtime. The internal representation may be stored in the form of non-human-readable code (e.g., binary code). The internal representation may also be stored according to the Javascript Object Notation (JSON) format stored in binary and / or XML format. At runtime, the execution engine may use the internal representation to compile and / or generate executable machine code that, when executed by a processor, causes the processor to implement the model's functionality.

[0021] The internal representation may be associated with one or more visual representations. Visual representations may consist of visual elements that show how the app's logic flows but are not designed to be compiled or executed. These visual representations include, for example, flowcharts or decision trees that show the user how the app operates. Visual models may also visually depict data received from the user, data stored, and data displayed to the user. These visual models may also be interactive, allowing users to manipulate the model in an intuitive manner. For example, visual representations may be configured to display a certain level of detail by default (e.g., the number of branches, the number of parameters displayed, the granularity of the logic displayed). For example, branches of logic may be shown or hidden, or sets of parameters may be shown or hidden. Details associated with elements of the visual model may not be displayed by default but may be displayed in sliding windows or pop-ups that appear on the screen when the user clicks on the appropriate element. Users may also be able to zoom in or out of the model and / or pan around to inspect different parts of the model. It is also possible to copy or paste a branch of logic from one part of a model to another, or from a first model to a second model. In some cases, one part of a model may contain a link to another part, and when a user clicks the link, the user is automatically taken to another part of the model. A viewing user can interact with the visual representation in at least the same way as a viewing user would interact with the model if it were displayed within a modeling environment. In other words, the visual representation can be configured to mimic how the model would appear if displayed within a visual modeling environment. A single internal representation can accommodate multiple visual representations that use different styles or formatting rules to display app logic.For example, multiple visual representations corresponding to the same internal representation may differ from one another in the use of color, elements included or omitted, and the use of symbols, shapes, lines, colors, and / or shades to depict logic flow.

[0022] Approaches that incorporate visual model-based representations, visual model-based apps, and / or the above-described functionality of visual models may be understood to comprise so-called low-code development platforms. As an example, such low-code development platforms can be further described as software that provides a development environment used to create application software through graphical user interfaces and configurations instead of traditional hand-coded computer programming. Low-code models enable developers with various experience levels to create applications using visual user interfaces combined with model-driven logic. Such low-code development platforms can create fully operational applications or require additional coding for specific situations. Low-code app development platforms reduce the amount of traditional hand-coding, enabling the rapid delivery of business apps. A common benefit is that a wider range of people, not just those with formal programming skills, can contribute to app development. Low-code app development platforms also lower the initial costs of setup, training, deployment, and maintenance.

[0023] Referring to FIG. 1 , a functional block diagram of an exemplary computer system or data processing system 100 that facilitates management of apps 120, particularly apps 120 that include event artifacts 122, is shown. The processing system 100 may include a (visual model-based) app development platform 118 that includes at least one processor 102 configured to execute at least one application software component 106 from a memory 104 accessed by the processor 102. Here, the app development platform 118 may configure visual model-based representations, visual model-based apps, and / or the above-described functionality of visual models, and may, by way of example, be a visual model-based app development platform or a low-code app development platform. The application software component 106 may be configured (i.e., programmed) to cause the processor 102 to perform various acts and functions described herein. For example, the described application software component 106 may constitute and / or correspond to one or more components of an app development application configured to generate and store product data in a data store 108, such as a database. Furthermore, the described application software component 106 may constitute and / or correspond to one or more components of an app creation or development application.

[0024] As an example, app development platform 118 may be cloud-based, internet-based, and / or operated by a provider that offers app development and creation support, including, for example, supporting low-code and / or visual model-based app development. A user may be located near app development platform 118 or may be located remotely from app development platform 118, e.g., elsewhere, and may use, for example, a mobile device to connect to app development platform 118 over the internet, where the mobile device may be comprised of input device 110 and display device 112. In some examples, app development platform 118 may be installed and run on a user's device, such as a computer, laptop, pad, on-premise computing facility, etc.

[0025] An example of a product system that can be adapted to configure app management and / or development including the event artifact functionality described herein can comprise a low-code software development platform from Mendix Inc. of Boston, Massachusetts, USA. This platform provides tools for building, testing, deploying, iterating, developing, creating, and managing apps 120 and is based on visual, model-driven software development. However, it should be understood that the systems and methods described herein can be used with other product systems (e.g., product lifecycle management (PLM), product data management (PDM), application lifecycle management (ALM) systems) and / or any other type of system that generates and stores product data in a database. Additionally, an example of a database that can be used as one or more data stores described herein can comprise a database server application such as Oracle, Microsoft SQL Server, or any other type of data store operable to store data records. It should be appreciated that in a complex app development and / or management environment, managing apps 120, especially developing apps 120 that include event artifacts 122, can be difficult and time-consuming. For example, advanced coding or software development or management knowledge from the user may be required, or many option selections must be made consciously, both of which involve many manual steps, making this a long and inefficient process.

[0026] To enable development of enhanced management apps 120, particularly apps 120 that include event artifacts 122, the described production system or processing system 100 can include at least one input device 110 and at least one display device 112 (e.g., a display screen). The described processor 102 can be configured to generate a graphical user interface (GUI) 114 via the display device 112. Such GUI 114 can be comprised of GUI elements such as buttons, links, search boxes, lists, text boxes, images, scroll bars, etc. usable by a user through the input device 110 to provide input that contributes to developing and, e.g., deploying, the app 120. As an example, the GUI 114 can constitute an app development UI 116 that is provided to a user for developing the app 120.

[0027] In an exemplary embodiment, the application software component 106 and / or the processor 102 may be configured to provide a user with an app development user interface (UI) 116 of the app development platform 118 for developing apps 120.

[0028] As described above, the app development platform 118 can configure a visual model-based representation, a visual model-based app, and / or the above-described functionality of the visual model, for example, a visual model-based app development platform or a low-code app development platform. The app development UI 118 can provide an interactive user interface of the app development platform 118 that supports and enables a user to develop the app 120. As an example, the app 120 can be, or can be comprised of, a software program that performs a particular desired task when executed. In some examples, the application software component 106 and / or the processor 102 may be further configured to capture, in response to a user interaction with the app development UI 116, a user's intent to import respective event artifacts 122 from respective deployed and running produce apps 124 to develop the app 120.

[0029] As an example, an event may be an action or occurrence recognized by software, e.g., a respective producing app 124 or a developing app 120, and may often be emitted asynchronously from the external environment, such as a respective producing app 124, and processed by the software. For example, computer events may be generated or triggered by the system, by a user, or in other ways. Events may be processed synchronously with the program flow. That is, software may have one or more dedicated locations, frequently event loops, where events are processed. The source of an event may consist of a respective producing app 124, (or other) users, machines, or devices that may interact with the software, such as a respective producing app 124. The software may also trigger its own set of events into the event loop, for example, to signal the completion of a task. Software that changes its behavior in response to events is said to be event-driven and is often intended to be interactive. In this context, a respective event artifact 122 may be a piece of information that characterizes or describes such an event or such type of event.

[0030] Such event artifacts 122 may be composed or generated by other apps, such as respective producing apps 124, which may be deployed and running on other devices 144. A user may interact with the app development UI 116 to express an intent to import a respective event artifact 122 to develop the app 120. This may significantly ease and speed up the development of the app 120, especially for users who are non-IT professionals, since a wide variety of different event artifacts 122 may be imported and used to develop the app 120. As an example, an event artifact search UI 136 may be provided to a user via the app development UI 116 to allow the user to search for a particular event artifact 122. Available event artifacts 122 are displayed to the user via the event artifact search UI 136 for selection, and the user may select one of the displayed event artifacts 122 for import into the app development UI 116 for purposes of developing the app 120. In some examples, all available event artifacts 122 are displayed to the user via the event artifact search UI 136 for selection, and the user may select one of the displayed event artifacts 122 for import for purposes of developing the app 120.

[0031] In some examples, available event artifacts 122 may be stored in a repository 150 of event artifacts 122. Such a repository 150 may be provided, for example, by GitHub, Inc. of San Francisco, California, USA. In other examples, repository 150 of event artifacts 122 may be configured by app development platform 118 or data processing system 100.

[0032] It should be appreciated that in a further example, the application software component 106 and / or the processor 102 may be further configured to import the respective event artifacts 122 corresponding to the captured user intent into the app development UI 116. As an example, the importing may be performed via a “drag-and-drop” or “drop-down” window in the app development UI 116.

[0033] Importing each event artifact 122 can involve, for example, copying the respective event artifact 122 to the app development UI 116. In some examples, importing each event artifact 122 can consist of importing metadata of the respective event artifact 122 or associated event information 126, which will be described in more detail below. Such metadata can include information about the origin of the event artifact, such as the respective producing app 124, (another) user, machine, or device. The referenced metadata can consist, by way of example, of information about a status that may change when an event occurs during operation of the respective producing app 124, such as started, stopped, pending, completed, or about possible changes or transitions between statuses. In some examples, the referenced metadata can consist of information about the type and / or format of the respective event artifact 122 or associated event information 126, such as an integer, a decimal number, a text string, Boolean data, etc.

[0034] For an exemplary produce app 124 in the retail domain, each event artifact 122 may relate to a new purchase order for a customer, and the referenced metadata of each event artifact 122 may include information about the customer, the vendor, the product, the quantity, the price, the delivery date, etc. In an industrial environment, the produce app 124 may be used to operate or monitor machines or other devices 144, whereby each event artifact 122 may relate to a failure of the other device 144 that may require a service action. In this environment, the referenced metadata may include typical normal operation scenarios and / or different typical error scenarios of the other device 144, e.g., scenarios of broken or worn hardware parts, scenarios of software bugs or IT security issues, etc.

[0035] In some examples, the import of the respective event artifact 122 may further include connectivity information that may be required to enable retrieval or retrieval of the respective event artifact 122 and / or event information 126, described below, from the respective producing app 124. Such connectivity information may, as an example, enable establishment of a communication connection between the respective producing app 124 and ultimately the (consuming) app 120 (potentially including intermediate communication participants, such as the data storage platform 150, described below). The import of each event artifact 122 may, in some examples, be such that the respective information may be used during the development and / or creation phase of the app 120 or during the deployment and / or operation of the created app 120.

[0036] In a further example, the application software component 106 and / or the processor 102 may be further configured to develop the app 120 via the app development UI 116 by using the respective imported event artifacts 122.

[0037] Using the imported respective event artifacts 122, the app 120 may be developed via an app development UI 116 that may interact with, by way of example, ADF, an IDE, a visual model-based representation, or the above-mentioned (low-code) app development platform 118 to accomplish development of the app 120. Here, the app development platform 118, together with the respective event artifacts 122, may be facilitated to support non-expert users to use the respective event artifacts 122 to develop the app 120.

[0038] As an example, the application software component 106 and / or the processor 102 may be further configured to deploy and execute the developed app 120 on the target device 140 .

[0039] Here, an app 120 can be understood to be deployed once the activities necessary to make the app 120 available to app users on target devices 140 have been performed. The app deployment process may consist of several interrelated activities with possible transitions between them. These activities may occur on the producer side (e.g., by an app developer) or the consumer side (e.g., by an app user or end user), or both. In some examples, the app deployment process may consist of at least releasing the app 120 and installing and launching the app 120. The release activities may follow from a completed development process and may be classified as part of the development process rather than the deployment process. This may consist of operations necessary to prepare a system (here, e.g., the app development platform 118 or an online app store) for assembly and transfer to a production computer system (here, e.g., the app development platform 118). This may include determining the resources required for the system to operate with acceptable performance and planning and / or documenting the subsequent activities of the deployment process. For simple systems, installing the app 120 may involve establishing some form of command, shortcut, script, or service to run the app 120 software (manually or automatically). For complex systems, it may involve configuring the system—possibly by questioning the end user about the intended use of the app or by directly asking how they would like it configured—and / or making all necessary subsystems available. Activation may be the act of launching the software or executable components of the app 120 for the first time (this is not to be confused with the common use of the term activation in reference to software licenses, which are a function of digital rights management systems).Once the app 120 is deployed to each target device 140, the app 120 can be run to meet the business needs of the app (end) user.

[0040] In some examples, each target device 140 may be a smartphone, smartwatch, handheld, pad, laptop, etc., or a desktop device, e.g., a desktop computer, or other "smart" device, e.g., a smart television set, a refrigerator, a home or industrial automation device, e.g., a television set with integrated internet capabilities, or a set-top box for a television that offers more advanced computing power and connectivity than modern basic television sets.

[0041] Further, by way of example, each target device 140 may be or consist of a manufacturing operations management (MOM) system, a manufacturing execution system (MES), an enterprise resource planning (ERP) system, a supervisory control and data acquisition (SCADA) system, or any combination thereof.

[0042] In some examples, each device 140 on which an app 120 may be deployed and executed may use each event artifact 122 of each producing app 124 that may be deployed and executed on another device 144. The other devices 144 may, in some examples, be or consist of sensors, electric motors, actuators such as valves or robots, inverters supplying electric motors, gearboxes, programmable logic controllers (PLCs), communication gateways, and / or other parts or components associated with industrial automation products and industrial automation in general. Each target device 140 may be part of a complex production line or production plant, e.g., a bottle filing machine, a conveyor, a welding machine, a welding robot, etc. In some examples, each target device 140 may belong to a higher level of the automation pyramid, such as the field level or the control level, while the other devices 144 belong to a lower level of the automation pyramid, such as the sensor / actuator or field level.

[0043] It should also be understood that in some examples, the application software component 106 and / or the processor 102 may be further configured to import event information 126 corresponding to each event artifact 122 from each producing app 124 to the data storage platform 150.

[0044] In some examples, the event information 126 can be considered live or up-to-date information related to the respective event artifact 122, whereby each event artifact 122 can form the framework for the corresponding event information 126. Corresponding to the above description of each event artifact 122, the event information 126 can consist, by way of example, of a particular change in status (start, stop, completion, etc.) as the event just occurs during operation of the respective producing app 124.

[0045] In the example of the produce app 124 in the retail domain example above, the event information 126 may be or consist of information that a particular customer purchase order has just been received, processed, stopped, or completed. In some examples, the event information 126 may further include information about the particular purchase order, such as a particular customer, a particular vendor, a particular product, a particular quantity, a particular price, or a particular delivery date. Also, in the example of the produce app 124 in the industrial environment example above, the event information 126 may be or consist of information that a particular operational state or failure of another device 144 has just occurred. In these examples, the event information 126 may consist of information that a production step has been completed or that a particular error scenario has now been applied to another device 144, such as a particular newly detected broken or worn hardware part, a software bug, or an IT security issue.

[0046] The import of event information 126 from each producing app 124 to the data storage platform 150 may occur, in some examples, as soon as the event information 126 is generated by each producing app 124. This allows each producing app 124 to generate some kind of live or up-to-date information about the event information 126 corresponding to each event artifact 122. In other examples, the import may occur at a predetermined frequency, for example, once per minute or hour, so that each producing app 124 can then automatically send the event information 126 to the data storage platform 150, or the data storage platform 150 can actively poll each producing app 124 for recent event information 126. Furthermore, the import of event information 126 may be understood as a data transmission of the event information 126 from each producing app 124 to the data storage platform 150. As an example, the described import of event information 126 from each producing app 124 to the data storage platform 150 may be performed asynchronously such that the involved communication participants, particularly from each producing app 124 to the data storage platform 150, are only loosely coupled.

[0047] As an example, the data storage platform 150 may include Apache Kafka, an open-source stream processing software platform developed by the Apache Software Foundation. Apache Kafka provides a unified, high-throughput, low-latency platform for processing real-time data feeds. In some examples, Apache Kafka may be closer, have higher throughput, and be more available, than each producing app 124 and / or each device on which each producing app 124 is running. It should be appreciated that importing the event information 126 from each producing app 124 to the data storage platform 150 may enable asynchronous communication and a low level of coupling. Thus, the use of the data storage platform 150 may be particularly advantageous in some examples when each producing app 124, each device on which each producing app 124 is running, the (consuming) app 120, and / or the target device 140 are not always available, as the data storage platform 150 still enables communication and import of the event information 126. It should also be appreciated that in some examples, the data storage platform 150 may enable partial or complete rollback of the event information 126 if data is corrupted with respect to the event information 126 or if an event associated with the event information 126 is canceled, rolled back, etc.

[0048] Data storage platform 150 may be, for example, a cloud-based platform accessible essentially anywhere via the Internet. Data storage platform 150 may be hosted by one of the large cloud computing providers, including, for example, Amazon Web Services, Alibaba, SAP, Google, etc. Alternatively, data storage platform 150 may be an on-premises platform including appropriate computing facilities located, for example, on the premises of the enterprise that manages the artifact information. Hybrid versions or virtual private cloud solutions are also possible for data storage platform 150. In some examples, data storage platform 150 is configured by or incorporated into app development platform 118 or data processing system 100.

[0049] Furthermore, it should be understood that the concept of introducing a data storage platform 150 between the producing apps 124 and the (consuming) apps 120 can be considered, in some examples, as a data broker or message broker. In some examples, the data storage platform 150 can function as an intermediary computer program module that translates messages (here, the event information 126) from the formal messaging protocol of the sender (here, the respective producing apps 124) to the formal messaging protocol of the receiver (here, the (consuming) apps 120). Furthermore, the concept of introducing a data storage platform 150 between the producing apps 124 and the (consuming) apps 120 can be understood, as an example, as an architectural pattern for validating, transforming, and routing messages (here, the event information 126). This mediates communication between the applications (here, the respective producing apps 124 and the (consuming) apps 120), minimizing the mutual knowledge the applications need to have of each other to be able to exchange messages, effectively implementing decoupling.

[0050] As an example, the application software component 106 and / or the processor 102 may be further configured to provide the event information 126 imported into the data storage platform 150 from the data storage platform 150 to the deployed and running app 120.

[0051] After the event information 126 is imported from each producing app 124 into the data storage platform 150, the event information 126 may be provided (e.g., sent) from the data storage platform 150 to the deployed and running (consuming) app 120.

[0052] The provision of the event information 126 from the data storage platform 150 to the (consuming) app 120 may occur, in some examples, as soon as the event information 126 is imported into the data storage platform 150, or in further examples, as soon as the event information 126 is generated by the respective producing app 124. This allows each producing app 124 to generate some kind of live or up-to-date information about the event information 126 corresponding to each event artifact 122. In other examples, the import may occur at a predetermined frequency, for example, once per minute or hour, so that the data storage platform 150 may then automatically send the event information 126 to the (consuming) app 120, or the (consuming) app 120 may actively poll the data storage platform 150 for recent event information 126. As an example, the two communication steps a) from each producing app 124 to the data storage platform 150 and b) from the data storage platform to the (consuming) app 120 may occur asynchronously so that the involved communication participants, in particular each producing app 124 and (consuming) app 120, are only loosely coupled.

[0053] In some examples, the application software component 106 and / or the processor 102 may be further configured to apply app algorithms 128 configured by the deployed and running app 120 to the provided event information 126 to generate output data 130.

[0054] The app 120, in some examples, includes app algorithms 128 that correspond to predetermined business logic or app objectives. The app algorithms 128 can accept provided event information 126 as input data that is processed according to the app algorithms 128 to generate output data 130. In the retail domain example above, the app algorithms 128 can accept a new, specific purchase order as input data and process the new, specific purchase order to generate output data 130, which may include, for example, triggering the generation of an invoice that may be sent to a purchaser, triggering assembly of a purchased product, or collecting the purchased product in a storage warehouse. In the industrial environment example above, the app algorithms 128 can accept a new, specific operational status or error or failure message as input data and then process the new, specific operational status or error or failure message to generate output data 130, which may consist of, for example, triggering a next production step, shutdown, maintenance, or repair of other devices 144 that may be operated or monitored by the produce app 124.

[0055] The proposed approach may offer several advantages, including the possibility of configuring more data sources, such as repository 150 (or multiple repositories), which may provide a large number of reusable event artifacts 122 for user development, deployment, and execution of app 120. Furthermore, the proposed approach may provide more insight into the business or industrial environment in which app 120 is used. This greater insight may be achieved through event triggers. Event triggers may be beneficial for automating and optimizing, to a greater extent, sequences of actions and activities that may already be performed in the business or industrial environment but that involve manual steps or different, potentially independent, software application programs that may cause data or process inconsistencies. Thus, the proposed approach may also be used to achieve higher availability and reliability, for example, by enabling asynchronous communication or distributing computational and communication workloads among multiple applications 120. A further advantage of the proposed approach is that its simplicity may make it accessible to non-IT professionals, e.g., so-called citizen users who rely on or prefer low-code app development.

[0056] It should also be appreciated that the proposed approach has the appeal of hiding integration complexities, such as version control and payload management, from users who develop or deploy and run apps 120. At the same time, the proposed approach enables and even manages greater complexity in a simple manner, for example, by providing the possibility to combine event artifacts 122 from different producing apps 124 with business logic or app algorithms 128 embodied in or configured by the apps 120. In some examples, N-1 communication can be conveniently set up by a user by importing corresponding event artifacts 122 from different producing apps 124 or from different other devices 144 on which the same or different producing apps 124 are running. In a further example, even N-1 communication can be realized by a user by developing two or more (different) (consuming) apps 120 from which corresponding event artifacts 122 can be imported from different producing apps 124 or from different other devices 144 on which the same or different producing apps 124 are running. The proposed approach may also enable new types of complex processes and may simplify many processes, for example by avoiding approval emails.

[0057] In some examples, the application software component 106 and / or the processor 102 may be further configured to cause the generated output data 130 to be displayed to a user of the target device 140 via a user interface 142 of the target device 140.

[0058] To this end, target device 140 may, for example, configure a user interface 142 that is displayed on a display device (such as a display screen) of target device 140. In this context, target device 140 may be embodied by, for example, a smartphone, or an industrial automation product such as a PLC, an inverter, or part of a complex production line or production plant, such as a bottle filing machine, a conveyor, a welding machine, a welding robot, etc.

[0059] The generated output data 130 is displayed to an (end) user of the target device 140 via a user interface 142, allowing the user to trigger further actions, such as triggering a next production step, shutdown, maintenance or repair of the target device 140 or another device 144 connected to the target device 140.

[0060] Each target device 140 may be caused or triggered, for example, by the app development platform 118 or by a deployed and running app 120, to display the generated output data 130.

[0061] In further examples, the application software component 106 and / or the processor 102 may be further configured to cause the generated output data 130 to be used to analyze, monitor, operate, and / or control the target device 140 or another device 144 connected to the target device 140, and / or to cause the generated output data 130 to be used to analyze and / or monitor a respective target device 140 user.

[0062] Each target device 140 or other devices 144 may be analyzed, monitored, operated, and / or controlled using the generated output data 130. In some examples, the operations of analyzing, monitoring, operating, and / or controlling the target device 140 or other devices 144 may be performed by the app development platform 118, the target device 140, or the other devices 144. Thus, for example, the app development platform 118 may monitor or control the target device 140 or other devices 144. Further, as an example, the target device 140 may analyze or control the other devices 144. This may be enabled, in some examples, by appropriate event artifacts 122 and corresponding appropriate event information 126, which may be comprised of data and information that may be useful or required for analyzing, monitoring, operating, and / or controlling the target device 140 or other devices 144.

[0063] As an example, the app development platform 118 or the target device 140 may be caused or triggered, for example, by the app development platform 118 or the deployed and running app 120, to analyze, monitor, operate, and / or control the target device 140 or other devices 144.

[0064] It should also be understood that in some examples, the produced app 124 may be deployed and executed on other devices 144, which may be analyzed, monitored, operated, and / or controlled by the app development platform 118 or the target device 130 using the generated output data 130.

[0065] In further examples, the app development platform 118 or the target device 140 may also be caused or triggered, e.g., by the app development platform 118 or by the deployed and running app 120, to analyze / monitor the user of the target device 140 using the generated output data 130. In such more exogenous examples, the target device 140 may be or consist of a smartphone, smartwatch, handheld, pad, laptop, etc., and the other device 144 may be a human, e.g., an end user of the respective target device 140, or an animal or plant, whose health, behavior, etc. may be analyzed or monitored using the app 120. In some examples, the mentioned steps may be performed directly by the app development platform 118.

[0066] It should also be appreciated that in some examples, each event artifact 122 is comprised of at least one event notification and / or at least one event-carrying state transfer.

[0067] In the context of event notifications and event-driven state transitions, see the website https: / / martinfowler.com / articles / 201701-event-driven.html is referenced.

[0068] In some examples, event notification may occur when a system (here, the producing app 124 or the data storage platform 150) sends an event message (here, event information 126) to notify another system (here, the data storage platform 150 or the (consuming) app 120) of a change in its domain. A key element of event notification is that the sending system does not expect a response to the sent message. As an example, if the recipient of the event notification replies, there may be a significant separation between the logic flow sending the event and the logic flow responding with some reaction to that event. The event notification approach may be advantageous because it implies a low level of coupling between the producing app 124 on the one hand and the data storage platform 150 or the (consuming) app 120 on the other.

[0069] As an example, event-carrying state transfer may be used to update clients of a system (here, data storage platform 150 or (consuming) app 120) in such a way that the client does not need to contact the source system (here, producing app 124 or data storage platform 150) for further action. For example, a customer management system may send an event containing details of the changed data whenever a customer changes their details (such as an address). The receiver can update its copy of the customer data with the changes. An event-carrying state transfer approach may achieve higher fault tolerance, as the receiving system may still function if the customer system is unavailable or becomes unavailable. Latency may be reduced because no remote calls are required to access customer information. The use of a data storage platform 150 solves the challenge of keeping all state up to date, potentially eliminating the need to actively call the sender for more information when needed.

[0070] Additionally, each event artifact 122 that constitutes an event notification or event-carried state transfer can be understood to constitute a portion of information that characterizes or describes the event notification, event-carried state transfer, or such type of information. A particular event notification or event-carried state transition can be associated with a particular operation or error scenario, such as, for example, a broken or worn-out hardware component, a software bug, or an IT security issue scenario, and can correspond to event information 126.

[0071] In some examples, each event artifact 122 is composed of a respective event channel 132 that contains at least one event artifact 122 from each deployed and running producing app 124 .

[0072] An event channel 132 may, in some examples, be understood as a bundle of correlated event artifacts 122, which may again be an event artifact 122. In some software architectures, an event channel 132 may be similar to a topic. The use of an event channel 132 may, for example, facilitate importing event artifacts 122 for app development purposes or facilitate routing of event information 126 from respective producing apps 124 to a data storage platform 150 and ultimately to a (consuming) app 120. It should be understood that, in some examples, creating such an event channel 132 may facilitate collecting and managing correlated event artifacts 122 and event information 126.

[0073] In the retail domain example above, event channel 132 may bundle all orders related to one or more specific products, or all information related to one or more specific purchasers, such as purchasing, billing, shipping information, etc. In the industrial environment example above, event channel 132 may bundle all events related to one or more specific machine(s) or device(s), or all information related to the occurrence of one or more specific error scenario(s).

[0074] In some examples, each event channel 132 may consist of an event notification and / or an event-carrying state transfer, as described above. In further examples, each event channel 132 may consist of only one or more event notification(s). In other examples, each event channel may consist of one or more event-carrying state transfer(s). Here, in some cases, it may be desirable to use only one event-carrying state transfer, as this makes it easier to track the latest state. Nevertheless, in other cases, two or more event-carrying state transitions may be used to track events or state transitions that relate to the same topic, such as a particular buyer, but that do not interfere with each other, such as a change in order status and a change in billing information for this particular buyer.

[0075] As an example, each event channel 132 may be defined or managed by a developer or user of each producing app 124. A user developing or running a (consuming) app 120 can import each event channel 132 during app development and consume information provided by each event channel 132 during execution of the (consuming) app 120.

[0076] In a further example, each event channel 132 may further include at least one event artifact 122 from a deployed and running producing app 124 and at least one event artifact 122′ from at least a second deployed and running producing app 124′. Creating such an event channel 132 may facilitate collecting and managing correlated event artifacts 122, 122′ and event information 126, 126′ originating from different producing apps 124, 124′ and / or from different other devices 144, 144′ on which the respective producing apps 124, 124′ may be deployed and executed. While the event channel 132 concept may allow for more complex scenarios to be managed, this complexity can still be conveniently handled by non-IT professionals developing the app 120, because the event channel 132 can also be imported by a user to develop the app 120. To this end, in some examples, the same or different produced apps 124, 124′ may be deployed and executed a) on the same other device 144, but, for example, in a different software environment of the other device 144, and / or b) on a different other device 144, 144′. Then, in some examples, a respective event channel 132 may be set up for each produced app 124, 124′ deployed and executed in a respective productive software environment (either on the same other device 144 or on a different other device 144, 144′). Furthermore, in some examples, two or more event artifacts 122 of these produced apps 124, 124′ may be combined into a combined event channel 132.

[0077] As already mentioned above, the event channels 132 may, in some examples, be defined or managed by a developer or user of the respective producing app 124, 124′. A user developing or running the (consuming) app 120 can import the respective event channels 132 during app development and consume the information provided by the respective event channels 132 during the execution of the (consuming) app 120.

[0078] It should also be understood that in some examples, when modifying a produce app 124, the application software component 106 and / or the processor 102 may be configured to display to the user at least two options 134 corresponding to continuing to use the respective event artifacts 122 of the original produce app 124 or starting to use the respective modified event artifacts 122 of the modified produce app 124'', capture the user's intention to select one of the displayed options 134, and, if the user selects to start using the respective event artifacts 122 of the modified produce app 124'', start using the respective event artifacts 122 of the modified produce app 124'', and import the event information 126 corresponding to the respective event artifacts 122 from the respective modified produce app 124'' to the data storage platform 150.

[0079] A developer of each produced app 124 may make modifications to the respective produced app 124, for example, by modifying the input parameters or sources, business logic, and / or output parameters or targets of the respective produced app 124. For this purpose, the developer of each produced app 124 may re-enter the development stage, make corresponding modifications, and create a respective modified produced app 124″. Once such a respective modified produced app 124″ is developed, it may be deployed and executed on the respective device 144. Such modifications may also affect, for example, the event artifact 122 that may be generated as an output of the respective produced app 124. Thus, a respective modified event artifact 122″ and (if applicable) a respective modified event information 126″ are generated as an output of the respective modified produced app 124″. The modified event artifact 122'' and, if applicable, the respective modified event information 126'' may differ from the original event artifact 122 and, if applicable, the respective event information 126, for example, in their respective type and / or format.

[0080] It should be appreciated that upon modifying a produce app 124, at least two options 134 may be displayed to a user, whereby the user may be a developer of the app 120 or a user of the deployed and running app 120. The options 134 may be displayed to the respective user, for example, to the developer via the app development UI 116 or to the user of the deployed and running app 120 via the user interface 142 of the target device 140. The available and displayed options 134 may include continuing to use the respective event artifacts 122 of the original produce app 124 or starting to use the respective (if applicable: modified) event artifacts 122(″) of the respective modified produce app 124″.

[0081] The user can then select one of the displayed options 134, for example, by interacting with a respective user interface (app development UI 116 for the developer, user interface 142 of the target device 140 for the user of the deployed and running app 120). In some examples, if the user selects to start using the respective (if applicable: modified) event artifact 122('') in the respective modified produced app 124'', the event information 126 corresponding to the respective (if applicable: modified) event artifact 122('') can be imported from the respective modified produced app 124'' to the data storage platform 150. This event information 126 can then be provided from the data storage platform 150 to the deployed and running app 120.

[0082] In some examples, the developer or user of the respective producing app 124, 124″ may need to check or confirm that useful event artifacts 122, 122″ and / or event information 126, 126″ can still be provided to the consumer 120. This may, in some examples, relate to the content, type, or format of the event artifacts 122, 122″ and / or event information 126, 126″. In further examples, the developer or user of the respective producing app 124, 124″ may need to indicate that modifications have been made to the respective producing app 124 and provide an offer or choice to choose between at least two options 134: a) continue using the respective event artifact 122 in the original producing app 124, or b) start using the respective modified event artifact 122 in the modified producing app 124″. In a further example, the app development platform 118 can determine modifications to each produced app 124 and provide the mentioned options 134 to a user of the app 120, whereby the user can be a developer of the app 120 or a user of the deployed and running app 120.

[0083] It should be further understood that in some examples, if the user selects to start using the respective event artifacts 122 of the respective modified produced apps 124″ that are incompatible with the respective event artifacts 122 of the respective produced apps 124, the application software component 106 and / or the processor 102 may be further configured to import the respective event artifacts 122 of the respective modified produced apps 124″ into the app development UI 116; develop the app 120 through the app development UI 116 using the imported respective event artifacts 122 of the respective modified produced apps 124″, and deploy and run the developed app 120 on the target device 140.

[0084] In some examples, a determination is made as to whether the respective event artifacts 122 of the respective modified producing apps 124'' are still compatible with the respective event artifacts 122 of the respective (original) producing apps 124. This determination may take into account, for example, the content, type, or format of the event artifacts 122, 122'' and / or the event information 126, 126''. If the respective event artifacts 122 of the respective modified producing apps 124'' are not compatible with the respective event artifacts 122 of the respective (original) producing apps 124, the respective event artifacts 122 of the respective modified producing apps 124'' may be imported into the app development UI 116. Thereafter, the app 120 may be updated by (re)developing the app 120 through the app development UI 116 using the respective event artifacts 122 of the imported respective modified producing apps 124''. The updated app 120 may then be deployed and executed on the target device 140.

[0085] Updating apps 120 may, in some instances, contribute to increasing the availability, reliability, and resilience of apps 120 that make up event artifacts 122.

[0086] In some examples, the application software component 106 and / or the processor 102 may be further configured to provide a user with an event artifact search UI 136 for searching in a repository 152 for storing event artifacts 122 available for app development.

[0087] In some examples, the repository 150 of available event artifacts 122 may be provided by GitHub, Inc. of San Francisco, California, USA. In other examples, the repository 150 of event artifacts 122 may be configured by the app development platform 118 or the data processing system 100. The repository 150 may be searched by a user developing an app 120 for event artifacts 120 that are available in the repository 150 and that may be relevant or suitable to the user's business needs or that may simplify or speed up development of the app 120. If available, at least one suitable event artifact 122 available in the repository 150 may be displayed to the user for selection via the event artifact search UI 136. The user may interact with the event artifact search UI 136, make a selection, import the displayed event artifact 122, and indicate their intent to use the event artifact 122 for app development.

[0088] In some examples, the application software component 106 and / or the processor 102 may be further configured to store information related to the generated output data 130 as an event artifact 122 in a repository 152 of reusable event artifacts 122 for app development.

[0089] As an example, repository 152 may be the repository 152 described above. Information stored in repository 152 may relate to output data 130 generated by app algorithms 128 or apps 120, whereby output data 130 may be processed, abstracted, or generalized so that output data 130 is suitable for reuse as event artifacts 122 for developing further apps. Such generalization of output data 130 may, in some examples, consist of extracting the content, type, or format of output data 130 that may be generated by app algorithms 128 or apps 120. Thus, event artifacts 122 derived from output data 130, in some examples, reflect the content, type, or format that output data 130 may have, rather than consisting of a particular value or result of output data 130.

[0090] In a further example, the output data 130, and in particular a particular value or result of the output data 130, may be provided to other apps (eg, via the data storage platform 150) as corresponding event information 126.

[0091] The appropriate processing, abstraction, or generalization of output data 130 that enables reuse of output data 130 as event artifact 122 may, in some examples, be defined or managed by a developer or user of app 120. Users developing or running other apps that may consume this event artifact 122 can import this event artifact 122 during app development and consume the information provided by app 120 during the execution of the other apps.

[0092] In some examples, the output data 130 may be stored in the repository 152 as an event artifact 122 only if the app 120 is successfully deployed and executed on the target device 140, and optionally, if the generated output data 130 is validated. Validation of the generated output data 130 may include, for example, a successful comparison of the generated output data 130 with expected output data 130 or with expected event artifact 122 (or optionally expected event information 126), respectively, in a similar scenario. This comparison may take into account, by way of example, the content, type, or format of the output data 130 or event artifact 122 (or optionally expected event information 126), respectively. The event artifact 122 saved in the repository 152 may then be searchable in the repository 152 and imported, for example, by other users to develop other apps 120.

[0093] It should also be appreciated that in further examples, the application software component 106 and / or the processor 102 may be further configured to store information related to a) the event artifact 122 from the third-party app, or b) the generated output data 130 from the third-party app, in a repository 152 of reusable event artifacts 122 for app development. By way of example, the event artifact 122 from the third-party app or the information related to the generated output data 130 from the third-party app may be processed, abstracted, or generalized such that the event artifact 122 or the information from the third-party app is suitable for reuse as an event artifact 122 for developing further apps.

[0094] In a further example, the application software component 106 and / or the processor 102 may be further configured to validate each event information 126 corresponding to each event artifact 122 from each producing app 124, and import each event information 126 corresponding to each event artifact 122 from each producing app 124 into the data storage platform 150 only if the each event information 126 is validated.

[0095] Validating each event information 126 may consist of successfully comparing each event information 126 with each expected event information 126, for example, by comparing with similar scenarios. The comparison may take into account, by way of example, the content, type, or format of each event information 126, or a particular value or outcome of each event information 126. It should also be understood that in some examples, validation may include checking whether the event underlying each event information 126 completed successfully, i.e., whether the event was not rolled back or canceled, for example. In some examples, this check for successful event completion may consist of each event information 126 being validated only after a predetermined period of time during which event rollback or cancellation may be sufficiently unlikely or precluded. In a further example, confirming successful completion of the event may consist of confirming successful completion of the event by a second, independent data source, for example, a user or another app that can confirm successful completion of the event.

[0096] In some examples, validation of the respective event information 126 may be supported by write-ahead logging (WAL), a method for ensuring data integrity. Simply put, the core concept of WAL is that changes to data files (where tables and indexes reside, e.g., the respective event information 126) must only be written after those changes have been logged, i.e., after the log records describing the changes have been flushed to a permanent storage device. This approach may make it possible, in the event of a crash of the producing app 124 or, optionally, the data storage platform 150, to use the logs to recover data lost due to the crash.

[0097] In some examples, the respective event information 126 may be imported from the respective producing app 124 to the data storage platform 150 only if the respective event information 126 has been verified. That is, in these examples, if the respective event information 126 has not (yet) been verified, the respective event information 126 may not (yet) be imported from the respective producing app 124 to the data storage platform 150.

[0098] 1 , the (consuming) app 120, along with the configured app algorithm 128, may be stored in the data store 108 of the app development platform 118. Additionally, artifact information 122 and optionally event information 126 may be stored in the data store 108. Here, the event artifact 122 may be used for the purpose of developing the app 120 supported by the app development platform 118. The app 120 may be deployed and executed on a target device 140, as an example. The event information 126 corresponding to the event artifact 122 may originate from a producing app 124 deployed and executing on another device 144. The event information 126 may first be imported from the producing app 124 to the data storage platform 150, and then the event information 126 may be provided to the app 120 deployed and executing on the target device 140. This provision of the event information 126 from the data storage platform 150 occurs either directly from the data storage platform 150 to the (consuming) app 120 deployed and running on the target device 140, or through an intermediate step consisting of the app development platform 118, where the event information 126 is first provided from the data storage platform 150 to the app development platform 118, and then provided from the app development platform 118 to the (consuming) app 120 deployed and running on the target device 140.

[0099] The target device 140 can apply the app algorithms 128 to the provided event information 126 during execution of the app 120 to generate output data 130 .

[0100] It should be understood that the described application software component 106 and / or processor 102 may perform similar methods for managing apps 120, particularly for developing apps 120 that include event artifacts 122.

[0101] Further illustrated in FIG. 1 is a computer-readable medium 160 that may include a computer program product 162, which may be encoded with executable instructions that, when executed, cause the data processing system 100 and / or the application development platform 118 to perform the described methods.

[0102] In some examples, proposed methods may include model-based app development, in which a model may be used to describe or characterize the app 120 to be created and / or the functionality of the app 120 to be created. Similarly, each deployed and running produced app 124 may include a respective model that may differ from the model of the app 120 to be created. As an example, each model may include a respective event artifact 122, event information 126, or more general information object described above, where these event artifacts 122 or information objects may have specific properties. Furthermore, the model may include or be represented by app algorithms 128. The model may include, for example, app pages, which may be responsible for displaying information derived from the respective event artifacts 122 or information objects 140, such as the event information 126, to an app user. In further examples, the model may include workflows, e.g., routines for processing data related to the event artifacts 122, event information 126, or information objects, or routines for interacting with the app user. In some examples, the workflow creates relationships or pointers between the event artifacts 122, event information 126, or information objects 140 that are part of the model. This model can include, as an example, a metamodel that can describe properties of elements, where objects are instances of elements, and these objects can be included in the event artifacts 122, event information 126, or information objects 140 described above.

[0103] Here is an example of a metamodel that describes the properties of an element: JPEG0007771366000001.jpg74141

[0104] An enumeration is a document consisting of several EnumerationValues, each of which has a name and a caption described by a Text object, and which references an image by name.

[0105] There are four types of properties: 1. Primitive-valued properties: The property value is a primitive type such as an integer or a string. See 'name' in the example above. 2. Primitive List Properties: The property value is a list of values ​​of a primitive type, for example a list of column widths. 3. Object-valued properties: The property value is the contained object. See 'caption' in the example above. A Text object represents translatable text and contains other objects that list the translations. 4. Object List Property: The property contains a list of contained objects. See 'values' in the example above.

[0106] Model-based app development and taking models into account to develop apps that compose event artifacts 122 can provide various benefits. The model may include, for example, a domain model that can be understood as, for example, an abstracted relational database, based on standard UML notation and object-oriented principles. In other words, the domain model may be a visual representation of the data that apps 120 or, respectively, deployed and running produced apps 124 contain or are made up of. Such a visual approach to application development is particularly advantageous because it allows apps 120 to be constructed agilely, allowing apps 120 to be built quickly and grow over time. A domain model, by way of example, includes or consists of three key elements: entities that represent objects; attributes that assign properties and values ​​to entities; and associations that allow entities to communicate with each other. Associations, by way of example, are equivalent to the pointers discussed above.

[0107] The structure of the model or domain model can determine what the database for storing event artifacts 122, event information 126, information objects, models, and / or domain models looks like. Each entity can become a table in the database, and each attribute can become a column in the database. Every object stored in the database (e.g., a training course) can become a row in a corresponding database table. This means that nothing can be added to the database that is not in the domain model.

[0108] For example, a database table for the entity "Training Course" has the following attributes: JPEG0007771366000002.jpg4585If there are multiple training events scheduled for this training course, it will look like this: JPEG0007771366000003.jpg31109, where ID is not an attribute but may be the unique identifier described above. The unique identifier ensures that every object, such as an event artifact 122, event information 126, or information object, always has a unique identifier (ID) so that the system knows which object it is.

[0109] Changes to the model and / or domain model can be made any number of times and the database will be synchronized when the app 120 is published again. For example, the names of entities, attributes, and generally information objects can be changed and the app 120 will still work thanks to the corresponding unique identifiers.

[0110] As mentioned above, a model may include a visual representation of the data that the app 120 contains or is configured with. This means, for example, that the model may include all information that characterizes the functionality of the app 120 to be created. Therefore, the model may be considered one of the most important work products and core intellectual property of the user developing the app. Therefore, it is very important to protect the model and not "break" it when importing the respective event artifacts 122 / and event information 126 into the app development UI 116 and, optionally, into the model or algorithm 128 of the app 120.

[0111] So, in a nutshell, the proposed method may include, for example, model-based app development including at least one of the following features, or any combination thereof: the app 120 to be created includes at least a portion of the first model, the first model characterizing the app 120 to be created and / or functionality of the app 120 to be created; The first model may optionally include at least one of entities, attributes that assign properties and values ​​to the entities, and associations that allow the entities to communicate with each other, or any combination thereof, where the entities represent event artifacts 122, event information 126, or information objects; The first model may optionally include a workflow for processing data related to the event artifact 122, the event information 126, the information object, or the page of the app 120; The page may optionally serve to display the event artifact 122, the event information 126, or the information object, or information derived from the event artifact 122, the event information 126, or the information object, to the app user; Each deployed and running Produce App 124 can optionally include at least a portion of a second model, which can optionally have at least some characteristics or architecture similar to the first model, and which can optionally differ at least in part from the second model; In some examples where the proposed method involves model-based app development, the deployed and running produced app 124 and created app 120, respectively, can be understood as distributed apps that may include, for example, different models. Thus, in a sense, the development of the proposed app 120 can involve modeling of a distributed application.

[0112] Referring to FIG. 2, a functional block diagram of another example computer system or data processing system 100 that facilitates management of apps 120, particularly apps 120 that include event artifacts 122, is shown.

[0113] 2 , the app 120 may be deployed and executed on the target device 140, and the app development platform 118 supports the execution of the app 120 on the target device 140. The event information 126 may be imported from the producing app 124 to the data storage platform 150, which may provide the event information 126 to the app 120. In this case, the event information 126 is provided to the app development platform 118, which may apply the app algorithms 128 on the provided event information 126 during execution of the app 120 to generate output data 130.

[0114] Referring to FIG. 3, a functional block diagram of a further example computer system or data processing system 100 that facilitates management of apps 120, particularly apps 120 that include event artifacts 122, is shown.

[0115] 3, both the producing app 124 and the consuming app 120 are deployed and run on the app development platform 118. Nevertheless, the event information 126 may be imported from the producing app 124 (running on the app development platform 118) into the data storage platform 150, which may then provide the event information 126 to the app 120 (also running on the app development platform 118).

[0116] Referring to FIG. 4, a functional block diagram of yet another example computer system or data processing system 100 that facilitates management of apps 120, particularly apps 120 that include event artifacts 122, is illustrated. 4 , the event information 126 can be imported into the data storage platform 150 from the producing app 124, which can then provide the event information 126 to the app 120 deployed and running on the target device 140 via an intermediate step consisting of the app development platform 118, such that the event information 126 is first provided from the data storage platform 150 to the app development platform 118, and then provided from the app development platform 118 to the (consuming) app 120 deployed and running on the target device 140. In some examples, the provision of the event information 126 from the data storage platform 150 can also be directly from the data storage platform 150 to the (consuming) app 120 deployed and running on the target device 140.

[0117] During execution of the app 120, the target device 140 can apply the app algorithms 128 to the provided event information 126 to generate output data 130. The generated output data 130 can then be displayed to a user of the target device 140 via a user interface 142 of the target device 140, for example, via a display device configured by the target device 140.

[0118] Referring to FIG. 5, a functional block diagram of yet another example computer system or data processing system 100 that facilitates management of apps 120, particularly apps 120 that include event artifacts 122, is shown.

[0119] 5, a user interface 142 for displaying the generated output data 130 may be external to the target device 140. In some examples, the user interface 142 may be constituted by an additional device, such as an external display screen, a PLC, a laptop, etc. The target device 140 may be communicatively coupled to an additional device such that the additional device may display the output data 130 generated by the app 120 running on the target device 140. To this end, the target device 140 may transmit the generated output data 130 to the additional device.

[0120] Referring to FIG. 6, a functional block diagram of yet another example computer system or data processing system 100 that facilitates management of apps 120, particularly apps 120 that include event artifacts 122, is shown.

[0121] As shown in FIG. 6 , there may be two producing apps 124, 124′ that may be deployed and executed on two devices 144, 144′ and provide respective event artifacts 122, 122′ and respective event information 126, 126′. The consuming app 120, along with configured app algorithms 128, may be stored in the data store 108 of the app development platform 118. Furthermore, two sets of artifact information 122, 122′, and optionally, two sets of event information 126, 126′, may be stored in the data store 108. Here, the two sets of event artifacts 122, 122′ may be used for the purpose of developing the app 120 supported by the app development platform 118. The app 120 may be deployed and executed on the target device 140, as an example. Two sets of event information 126, 126′ corresponding to the two sets of event artifacts 122, 122′ may originate from respective producing apps 124, 124′ deployed and running on respective other devices 144, 144′. The respective event information 126, 126′ may first be imported from the respective producing apps 124, 124′ to the data storage platform 150, and then the respective event information 126, 126′ may be provided to the apps 120 deployed and running on the target devices 140. This provision of the respective event information 126, 126′ from the data storage platform 150 occurs either directly from the data storage platform 150 to the (consuming) app 120 deployed and running on the target device 140, or occurs in an intermediate step consisting of the app development platform 118, such that the respective event information 126, 126′ is first provided from the data storage platform 150 to the app development platform 118, and then provided from the app development platform 118 to the (consuming) app 120 deployed and running on the target device 140.

[0122] The target device 140 can apply the app algorithms 128 to the two sets of provided event information 126, 126' while the app 120 is running to generate output data 130.

[0123] It should be appreciated that in some examples, the two sets of artifact information 122, 122' may be bundled using the event channel 132 described above.

[0124] Referring to FIG. 7, a functional block diagram of yet another example computer system or data processing system 100 that facilitates management of apps 120, particularly apps 120 that include event artifacts 122, is shown.

[0125] As shown in FIG. 7 , a developer or user of a producing app 124 may make modifications to the producing app 124, resulting in a modified producing app 124′. Upon such modification of the producing app 124, at least two options 134 may be displayed to the developer or user of the (consuming) app 120, for example, via the app development UI 116. The displayed options 134 may consist of an option to continue using the event artifacts 122 of the original producing app 124 or an option to start using the respective modified event artifacts 122 in the modified producing app 124″. The developer or user can then input a selection of one of the displayed options 134, which captures the selection. If the user selects to start using the respective event artifacts 122 in the modified producing app 124″, the event information 126 corresponding to the event artifacts 122 from the respective modified producing app 124″ may be imported into the data storage platform 150. This event information 126 may then be provided from the data storage platform 150 to the deployed and running app 120.

[0126] In some examples, the aforementioned options 134 may be displayed to a user of the (consumption) app 120 via the aforementioned displayed user interface 142 .

[0127] Referring to FIG. 8, a functional block diagram of yet another example computer system or data processing system 100 that facilitates management of apps 120, particularly apps 120 that include event artifacts 122, is shown.

[0128] 8, a user (here, a developer of an app 120) can use an event artifact search UI 136 to search a repository 152 where event artifacts 122 available for app development are stored. In some examples, the event artifact search UI 136 may be configured by the app development UI 116.

[0129] It should also be appreciated that in further examples, information related to the generated output data 130 of the app 120 may be stored as event artifacts 122 in the repository 152, for example, to enable other users or developers to reuse the stored event artifacts 122 for app development.

[0130] Referring to FIG. 9, a flow diagram of an exemplary method for facilitating management of apps 120 in a product system 100 is shown, particularly an app 120 that includes an event artifact 122.

[0131] 9 , each producing app 124 can provide event artifacts 122, 122′, such as event notifications (122) and event-triggered state transfers (122′). The provided artifacts 122, 122′ can be used by the app development platform 118 to develop the (consuming) app 120. In some examples, during development of the (consuming) app 120, the provided event artifacts 122, 122′ can be imported into the app development UI 118 of the app development platform 118, and the app 120 can be developed using the provided event artifacts 122, 122′. Optionally, only one or more event artifacts 122 can be used.

[0132] A comparable concept is applicable, for example, with respect to a repository 152 for storing reusable event artifacts 122 during app development. The event artifacts 122 may be provided to the repository 152 by a developer or user of a first app, e.g., a producing app 124. A developer or user of a second app, e.g., a (consuming) app 120, can search the repository 152, e.g., via the event artifact search UI 136. The user can select appropriate event artifacts 122 available in the repository 152, import the selected event artifacts into the app development UI 118, and develop the (consuming) app 120 using the imported event artifacts 122.

[0133] A similar concept may be applied with respect to a data storage platform 150, which may be located, for example, between the producing app 124 and the (consuming) app 120. Here, the event information 126 corresponding to each provided event artifact 122 may be imported from the producing app 124 to the data storage platform 150, which may then provide the event information 126 to the (consuming) app 120.

[0134] Referring to FIG. 10, a flow diagram of an exemplary method for facilitating management of apps 120 in a product system 100 is shown, particularly an app 120 that includes an event artifact 122.

[0135] Figure 10 consists of a first workflow in the upper half for developing (design-time), deploying (deploy-time), and running (run-time, meaning operation time) a produce application 124 ("Produce"), and a second workflow in the lower half for developing, deploying, and running a consume application 120 ("Consume"). During the development phase of both the producing app 124 and the consuming app 120, the corresponding business logic (e.g., as reflected by corresponding app algorithms 128) may be rendered using, for example, the app development UI 116 of the app development platform 118. The app algorithms 128 may, in some examples, be provided in appropriate event artifacts 122 that may be embedded or bundled with event channels 132. During the deployment phase of both the producing app 124 and consuming app 120, the respective app 124, 120 may be deployed and a communication link to the data storage platform 150 may be set up. This set up may include determining a tenant ID (e.g., for each user or customer) and configuring the tenant for each channel 132. In some examples, the tenant may be associated with or correspond to the data storage platform 150.

[0136] During operation or runtime of the producing app 124, the producing app 124 may generate event information 126 corresponding to the event artifact 122, which may be published or communicated to the data storage platform 150, for example, using the channels 132 described above. In some examples, multiple channels 132 may be combined into a single tenant or data storage platform 150. During operation or runtime of the consuming app 120, the data storage platform 150 may provide the event information 126 to the consuming app 120, which may be of high importance to the business logic or app algorithms 128 of the consuming app 120.

[0137] Referring to FIG. 11, a flow diagram of an exemplary method for facilitating management of apps 120 in a product system 100 is shown, particularly an app 120 that includes an event artifact 122.

[0138] Figure 11 shows a method that has some similarities to the method shown in Figure 10. One difference concerns the deployment phase of both the producing app 124 and consuming app 120, which may simply consist of deploying each app 124, 120 to its respective target device.

[0139] Furthermore, during operation or runtime of both the producing app 124 and the consuming app 120, there may be different software environments 136 in which the respective apps 124, 120 are deployed or will be deployed. Here, the deployment of each app 124, 120 in each software environment 136 may occur in a deployment phase. A separate data storage platform 150 or tenant may be provided for each app 124, 120 in each software environment 136 and each event artifact 122 or event channel 132. During operation or runtime of the producing app 124, the corresponding event information 126 may be imported from each producing app 124 deployed on the respective software environment 136 to the respective data storage platform 150 or tenant or event channel 132. During operation or runtime of the consuming apps 120, the data storage platform 150 may provide event information 126 to each consuming app 120 deployed on the respective software environment 136, and the provided event information 126 may be of importance to the business logic or app algorithms 128 of each consuming app 120. In some examples, each consumer 120 may receive event information 126 from a different data storage platform 150 or channel 132, and in further examples, each consumer 120 may also receive event information 126 from a different software environment 136 (see thin lines).

[0140] Referring to FIG. 12, an exemplary method flow for facilitating management of apps 120 within a product system 100 is shown, particularly an app 120 that includes an event artifact 122.

[0141] As shown in Figure 12, both the producing app 124 and the consuming app 120 may include business logic or app algorithms 128 ("microflow logic"). In the producing app 120, the app algorithms 128 may provide an event artifact 122 as an output, and specific output data 130 related to the event may be provided as event artifact 126 ("outbox table"). The event information 126 may be validated using write-ahead logs ("WALs") and stored (e.g., via a "Debezium sidecar") before being provided to the data storage platform 150 (using an "enterprise-specific default topic," e.g., event channel 132).

[0142] The event artifacts 122 and corresponding event information 126 are provided to the consuming app 120 from the data storage platform 150 and processed by the business logic or app algorithms 128 of the consuming app 120 to generate output data 130 for the consuming app 120 .

[0143] In some examples, a user (here, a developer of a consumer app 120) can use the event artifact search UI 136 to search a repository 152 where event artifacts 122 available for app development are stored. In some examples, the event artifact search UI 136 can be configured by the app development UI 116.

[0144] Also, in a further example, it should be understood that information related to the generated output data 130 of the consuming app 120 (or producing app) may be stored as an event artifact 122 in the repository 152 to enable reuse of the stored event artifact 122, for example, for app development by other users or developers.

[0145] 13, a method 1300 for facilitating management of apps, such as development of apps that include event artifacts, is shown. The method may begin at 1302 and may comprise a number of operations performed through the operation of at least one processor.

[0146] These acts may include act 1304 of providing a user with an app development user interface (UI) of the app development platform for developing an app, and act 1306 of capturing a user's intent to import respective event artifacts from each deployed and running produced app to develop the app in response to user interaction with the app development UI. Also included are act 1308 of importing respective event artifacts corresponding to the captured user's intent into the app development UI, and act 1310 of developing the app via the app development UI using the respective imported event artifacts. Also included are act 1312 of deploying and running the developed app on a target device, act 1314 of importing event information corresponding to the respective event artifacts from each produced app to a data storage platform, act 1316 of providing the event information imported into the data storage platform from the data storage platform to the deployed and running app, and act 1318 of applying an app algorithm configured by the deployed and running app to the provided event information to generate output data. The method may end at 1320.

[0147] Additionally, it should be appreciated that method 1300 may include other acts and functions described above with respect to a computer-implemented method for managing apps, particularly a computer-implemented method for developing apps that include event artifacts.

[0148] For example, the method may further include an act of displaying the generated output data to a user of the target device via a user interface of the target device.

[0149] In some examples, the method may further include an act of causing the generated output data to be used to analyze, monitor, operate, and / or control the target device or another device connected to the target device, and / or causing the generated output data to be used to analyze and / or monitor a user of the respective target device.

[0150] It should also be appreciated that in some examples, upon modification of the production app, the method may further include displaying at least two options to the user corresponding to continuing to use the respective event artifacts of the original production app or starting to use the respective event artifacts of the modified production app, capturing the user's intent to select one of the displayed options, and further importing event information corresponding to the respective event artifacts from the respective modified production app to the data storage platform if the user selects to start using the respective event artifacts of the modified production app.

[0151] For example, if the user selects to start using a respective event artifact of each modified production app that is incompatible with a respective event artifact of each produced app, the method may further include an act of importing the respective event artifact of each modified production app into an app development UI, developing an app through the app development UI using the imported respective event artifact of each modified production app, and deploying and running the developed app on the target device.

[0152] In some examples, the method may further include an act of providing a user with an event artifact search UI for searching in a repository for storing event artifacts usable for app development.

[0153] It should also be appreciated that in some examples, the method further includes storing information related to the generated output data as an event artifact in a repository of event artifacts that are reusable for app development.

[0154] For example, the method may further include an act of verifying each event information corresponding to each event artifact from each producing app, and an act of importing each event information corresponding to each event artifact from each producing app to the data storage platform only if the each event information is verified.

[0155] FIG. 14 is a block diagram of a data processing system 1000 (also referred to as a computer system) in which embodiments may be implemented, for example, as part of a product system and / or other system operatively configured, for example by software, to perform the processes described herein. Data processing system 1000 may comprise, for example, the computer or IT system or data processing system 100 described above. The depicted data processing system includes at least one processor 1002 (e.g., a CPU) that may be connected to one or more bridges / controllers / buses 1004 (e.g., a northbridge, a southbridge). One of the buses 1004 may comprise, for example, one or more I / O buses, such as a PCI Express bus. Also connected to the various buses in the depicted example may be a main memory 1006 (RAM) and a graphics controller 1008. The graphics controller 1008 may be connected to one or more display devices 1010. It should also be noted that in some embodiments, one or more controllers (e.g., graphics, southbridge) may be integrated with the CPU (on the same chip or die). Examples of CPU architectures include the IA-32, x86-64, and ARM processor architectures.

[0156] Other peripherals connected to one or more buses may comprise a communications controller 1012 (Ethernet controller, Wi-Fi controller, cellular controller) that operates to connect to a local area network (LAN), a wide area network (WAN), a cellular network, and / or other wired or wireless network 1014 or communications device.

[0157] Additional components connected to the various buses can comprise one or more I / O controllers 1016, such as a USB controller, a Bluetooth controller, and / or a dedicated audio controller (connected to speakers and / or microphones). It should also be understood that various peripherals can be connected (via various ports and connections) to I / O controller(s) consisting of input devices 1018 (e.g., keyboard, mouse, pointer, touchscreen, touchpad, drawing tablet, trackball, buttons, keypad, game controller, gamepad, camera, microphone, scanner, motion sensing device that captures motion gestures), output devices 1020 (e.g., printer, speakers), or any other type of device that operates to provide input to or receive output from a data processing system. It should also be understood that many devices referred to as input devices or output devices may provide input and receive output for communication with a data processing system. For example, the processor 1002 may be integrated into a housing (e.g., a tablet) that includes a touchscreen that functions as both an input device and a display device. Furthermore, it should be understood that some input devices (such as laptops) may consist of multiple different types of input devices (e.g., touchscreen, touchpad, keyboard). It should also be understood that other peripheral hardware 1022 connected to I / O controller 1016 may consist of any type of device, machine, or component configured to communicate with a data processing system.

[0158] Additional components connected to the various buses may comprise one or more storage controllers 1024 (e.g., SATA). The storage controllers may be connected to storage devices 1026, such as one or more storage drives and / or any associated removable media, which may be any suitable non-transitory, machine-usable or machine-readable storage media. Examples include non-volatile devices, volatile devices, read-only devices, writeable devices, ROM, EPROM, magnetic tape storage, floppy disk drives, hard disk drives, solid-state drives (SSDs), flash memory, optical disk drives (CDs, DVDs, Blu-rays), and other known optical, electrical, or magnetic storage device drives and / or computer media. Also, in some examples, storage devices such as SSDs may be connected directly to the I / O bus 1004, such as a PCI Express bus.

[0159] A data processing system according to an embodiment of the present disclosure may include an operating system 1028, software / firmware 1030, and a data store 1032 (which may be stored in the storage device 1026 and / or the memory 1006). Such an operating system may employ a command line interface (CLI) shell and / or a graphical user interface (GUI) shell. A GUI shell allows multiple display windows to be displayed simultaneously in the graphical user interface, with each display window providing an interface to a different application or a different instance of the same application. A cursor or pointer within the graphical user interface is manipulated by a user via a pointing device such as a mouse or touchscreen. The cursor / pointer position is changed and / or an event, such as a mouse button click or a touchscreen touch, is generated to activate a desired response. Examples of operating systems that may be used in the data processing system include Microsoft Windows, Linux, UNIX, iOS, and Android operating systems. Examples of data stores include data files, data tables, relational databases (e.g., Oracle, Microsoft SQL Server), database servers, or other structures and / or devices capable of storing data searchable by a processor.

[0160] Communications controller 1012 may be connected to network 1014 (not part of data processing system 1000), which may be any public or private data processing system network or combination of networks, including the Internet, as known to those skilled in the art. Data processing system 1000 may communicate with one or more other data processing systems, such as server 1034 (also not part of data processing system 1000), via network 1014. However, an alternative data processing system may correspond to multiple data processing systems implemented as part of a distributed system, in which processors associated with the multiple data processing systems may communicate over one or more network connections and collectively perform tasks described as being performed by a single data processing system. Thus, when reference is made to a data processing system, it should be understood that such a system may be implemented across multiple data processing systems organized in a distributed system that communicate with each other over a network.

[0161] Furthermore, the term "controller" means any device, system, or portion thereof that controls at least one operation, whether such a device is implemented in hardware, firmware, software, or a combination of at least two of them. It should be noted that the functionality associated with a particular controller may be centralized or distributed, local or remote.

[0162] Furthermore, it should be understood that the data processing system may be implemented as a virtual machine architecture or a virtual machine in a cloud environment. For example, the processor 1002 and related components may correspond to a virtual machine running in a virtual machine environment of one or more servers. Examples of virtual machine architectures include VMware ESCi, Microsoft Hyper-V, Xen, and KVM.

[0163] Those skilled in the art will appreciate that the hardware depicted for the data processing system may vary for particular implementations. For example, data processing system 1000 in this example may correspond to a computer, a workstation, a server, a PC, a notebook computer, a tablet, a mobile phone, and / or any other type of device / system operable to process data and perform the functionality and features described herein associated with the operation of the data processing systems, computers, processors, and / or controllers discussed herein. The depicted example is provided for purposes of explanation only and is not intended to imply architectural limitations with respect to the present disclosure.

[0164] It should also be noted that the processors described herein may be located on a server separate from the display and input devices described herein. In such an example, the described display and input devices may be configured in a client device that communicates with the server (and / or a virtual machine running on the server) over a wired or wireless network (which may comprise the Internet). In some embodiments, such a client device may correspond to, for example, a portal device that runs a remote desktop application or that executes a remote desktop protocol with the server to send input from the input device to the server and receive visual information from the server for display via the display device. Examples of such remote desktop protocols include Teradici's PCoIP, Microsoft's RDP, and the RFB protocol. In such an example, the processors described herein may correspond to virtual processors of a virtual machine running on a physical processor of the server.

[0165] As used herein, the terms "component" and "system" are intended to encompass hardware, software, or a combination of hardware and software. Thus, for example, a system or component may be a process, a process running on a processor, or a processor. Furthermore, a component or system may be localized on a single device or distributed across multiple devices.

[0166] Also, as used herein, a processor corresponds to any electronic device configured via hardware circuitry, software, and / or firmware to process data. For example, a processor as described herein may correspond to one or more (or a combination) of a microprocessor, CPU, FPGA, ASIC, or any other integrated circuit (IC) or other type of circuit capable of processing data in a data processing system, which may have the form of a controller board, computer, server, mobile phone, and / or any other type of electronic device.

[0167] Those skilled in the art will recognize that, for simplicity and clarity, the complete structure and operation of every data processing system suitable for use with the present disclosure has not been depicted or described herein. Instead, only those portions of the data processing system that are unique to the present disclosure or necessary to an understanding of the present disclosure are depicted and described. The remainder of the structure and operation of data processing system 1000 may be compatible with any of a variety of current implementations and implementations known in the art.

[0168] It should also be understood that phrases used herein should be interpreted broadly unless expressly limited in some instances. For example, the term "comprise" and its derivatives mean inclusive without limitation. The singular forms "a," "an," and "the" are intended to include the plural unless the context clearly indicates otherwise. Furthermore, the term "and / or" as used herein refers to and includes any and all possible combinations of one or more of the associated listed items. The term "or" is inclusive and means "and / or" unless the context clearly indicates otherwise. The words "associated" and "associated with," and their derivatives, can mean comprise, comprised within, interconnect, contain, contained within, connect, couple, be able to communicate, cooperate, interconnect, juxtapose, abut, combine, have, possess, and the like.

[0169] Additionally, although terms such as "first," "second," and "third" may be used herein to describe various elements, functions, or acts, these elements, functions, or acts should not be limited by these terms. Rather, these numerical adjectives are used to distinguish different elements, functions, or acts from one another. For example, a first element, function, or act could be referred to as a second element, function, or act, and similarly, a second element, function, or act could be referred to as the first element, function, or act without departing from the scope of the present disclosure.

[0170] Furthermore, phrases such as "a processor configured to" perform one or more functions or processes may mean that the processor is configured or operable to perform the function or process via software, firmware, and / or hardwired circuitry. For example, a processor configured to perform a function / process may correspond to a processor executing software / firmware programmed to cause the processor to perform the function / process and / or may correspond to a processor having software / firmware in a memory or storage device that is executable by the processor to perform the function / process. It should also be noted that a processor "configured" to perform one or more functions or processes may also correspond to a processor circuit (e.g., an ASIC or FPGA design) specifically fabricated or "hardwired" to perform the function or process. Furthermore, the phrase "at least one" preceding an element (e.g., a processor) configured to perform one or more functions may correspond to one or more elements (e.g., processors) each performing the function, or may correspond to two or more elements (e.g., processors) each performing a different one of one or more different functions.

[0171] Additionally, the term "adjacent" may mean that an element is relatively close to, but not touching, another element, or that an element is touching a further portion, unless the context makes clear otherwise.

[0172] While illustrative embodiments of the present disclosure have been described in detail, those skilled in the art will appreciate that various changes, substitutions, variations, and improvements disclosed herein may be made therein without departing from the spirit and scope of the present disclosure in its broadest form.

[0173] Nothing in this patent document should be read as implying that any particular element, step, act, or function is an essential element that must be included in the scope of the claims.

Claims

1. 1. A computer-implemented method comprising: providing a user with an application development UI (user interface) (116) of an application development platform (118) for developing an application (120); capturing, in response to a user interaction with the app development UI (116), the user's intent to import a respective event artifact (122) from each deployed and running produced app (124) to develop the app (120), the event artifact (122) being information describing an event that occurred in each deployed and running produced app (124); importing the respective event artifacts (122) corresponding to the captured user intents into the app development UI (116); developing the app (120) through the app development UI (116) using the respective imported event artifacts (122); Deploying and running the developed app (120) on a target device (140); importing event information (126) corresponding to each of the event artifacts (122) from each of the producing apps (124) into a data storage platform (150); providing the event information (126) imported into the data storage platform (150) from the data storage platform (150) to the deployed and running app (120); applying app algorithms (128) configured by the deployed and running app (120) to the provided event information (126) to generate output data (130); 10. A computer-implemented method comprising:

2. 2. The computer-implemented method of claim 1, further comprising displaying the generated output data to a user of the target device via a user interface of the target device.

3. using the generated output data (130) to analyze, monitor, operate and / or control the target device (140) or another device (144) connected to the target device (140); and / or using the generated output data (130) to analyze and / or monitor users of said respective target devices (140); The computer-implemented method of claim 1 , further comprising:

4. The computer-implemented method of claim 1 , wherein the respective event artifacts (122) include at least one event notification and / or an event notification that includes details of at least one changed data.

5. the respective event artifacts (122) include respective event channels (132) that include at least one event artifact (122) from the respective deployed and running producing apps (124); The computer-implemented method of claim 1 .

6. Each of the event channels (132) includes at least one event artifact (122) from the respective deployed and running producing app (124) and at least one event artifact (122') from at least a second deployed and running producing app (124'). The computer-implemented method of claim 5 .

7. When modifying the production application (124), displaying to the user at least two options (134) corresponding to continuing to use the respective event artifacts (122) of the original producing app (124) or starting to use the respective event artifacts (122) of the modified producing app (124''); capturing (134) the user's intent to select one of the displayed options; importing event information (126) corresponding to each event artifact (122) from each modified producing app (124'') into the data storage platform (150) when the user selects to start using the respective event artifact (122) in the modified producing app (124''); The computer-implemented method of claim 1 , further comprising:

8. If the user chooses to start using a respective event artifact (122) of a respective modified producing app (124'') that is incompatible with the respective event artifact (122) of the respective producing app (124), importing each event artifact (122) of each modified produced app (124'') into the app development UI (116); developing the app (120) through the app development UI (116) using each event artifact (122) of each imported modified produce app (124''); Deploying and running the developed app (120) on a target device (140); The computer-implemented method of claim 7 further comprising:

9. 2. The computer-implemented method of claim 1, further comprising providing the user with an event artifact search UI (136) for searching a repository (152) for storing event artifacts (122) usable for app development.

10. 2. The computer-implemented method of claim 1, further comprising storing information related to the generated output data as an event artifact in a repository of reusable event artifacts for application development.

11. verifying, from the respective producing apps (124), the respective event information (126) corresponding to the respective event artifacts (122); importing the respective event information (126) corresponding to the respective event artifact (122) from the respective producing app (124) into the data storage platform (150) only if the respective event information (126) is verified; The computer-implemented method of claim 1 , further comprising:

12. The app (120) to be created may include at least a portion of a first model, the first model characterizing the app (120) to be created and / or functionality of the app (120) to be created; The first model may optionally include at least one of entities, attributes that assign properties and values ​​to entities, and associations that allow entities to communicate with each other, or any combination thereof, where entities represent the event artifacts (122), the event information (126), or information objects; The first model may optionally include a workflow for processing data related to the event artifact (122), the event information (126), the information object, or a page of the app (120); The page optionally performs the following: displaying the event artifact (122), the event information (126), or the information object, or information obtained from the event artifact (122), the event information (126), or the information object, to an app user. Optionally, each deployed and executed producing app (124) can include at least a portion of a second model, where the second model can optionally have characteristics or architecture at least partially similar to the first model, where the first model can optionally be at least partially different from the second model; The computer-implemented method of claim 1 .

13. A computer system (100, 118) arranged and configured to perform the steps of the computer-implemented method of any one of claims 1 to 12.

14. A computer program (162) comprising computer program code that, when executed by a computer system (100, 118), causes said computer system (100, 118) to perform the method of any one of claims 1 to 12.

15. A computer readable medium (160) comprising a computer program (162) comprising computer program code which, when executed by a computer system (100, 118), causes said computer system (100, 118) to perform the method of any one of claims 1 to 12.

Citation Information

Patent Citations

  • Systems and methods in mobile application development and deployment platforms

    JP2014512611A

  • Management support method, management support device and management support program

    JP2016012179A

  • Low-Code Development Platform

    US20210255842A1