Managing apps, especially developing apps, methods and systems including workflows for updating apps
By displaying workflow artifacts in the UI of the app development system, capturing user intentions and moving corresponding workflow artifacts, the problem of overlapping workflows in the app development system is solved, and development efficiency and consistency are improved.
Patent Information
- Application Number
- CN202180105426.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2021-12-22
- Publication Date
- 2025-03-25
- Estimated Expiration
- 2041-12-22
AI Technical Summary
The existing app development system has overlapping problems when managing and developing app workflows, which makes it difficult for users to effectively avoid overlapping when inserting new workflow artifacts, affecting development efficiency.
By displaying at least two workflow artifacts in the app development UI, capturing user intent, inserting additional workflow artifacts into the workflow, and moving corresponding workflow artifacts to avoid overlapping by determining the flow direction of the workflow and moving the boundary line.
It effectively avoids overlap in workflows, simplifies the operation process of users when inserting new workflow artifacts, and improves the efficiency and consistency of app development.
Smart Images

Figure CN118661153B_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates generally to software management systems, and in particular to systems for developing apps, which can be used to manage, build, test, deploy, and iterate these apps (collectively referred to as product systems in the present disclosure). Background Art
[0002] Recently, more and more computer software products are being used for personal and business needs in the form of application programs (referred to as "apps" throughout this patent document). These applications can be used in a mobile context as well as on cloud computing platforms and "on premises" and can provide a specific set of functions. The present invention generally relates to the development and creation of these apps, and in particular to the development of apps including workflows for updating apps.
[0003] Currently, there are product systems and solutions that support the management or development of these apps. These product systems can benefit from improvement. Summary of the invention
[0004] Various disclosed embodiments include methods and computer systems that can be used to facilitate management of apps.
[0005] According to a first aspect of the present invention, a computer-implemented method for managing apps may include:
[0006] Providing users with an app development user interface (UI) for developing apps;
[0007] In the app development UI, display at least two workflow artifacts of the app’s workflow to the user;
[0008] Capturing user intent to insert additional workflow artifacts into the workflow in response to user interaction with the app development UI;
[0009] Insert additional workflow artifacts into the workflow based on captured user intent;
[0010] · determining an overlap of at least two workflow artifacts caused by the inserted workflow artifact;
[0011] Determine the flow direction of the workflow from a previous workflow artifact to a subsequent workflow artifact, the previous workflow artifact and the subsequent workflow artifact being respectively before and after the inserted workflow artifact;
[0012] · determining that the workflow needs to be moved along the determined flow direction to avoid the determined overlapping at least one workflow artifact;
[0013] determining an update workflow by moving the corresponding determined workflow artifacts in the direction of the determined flow direction at least until the determined overlap is removed;
[0014] Display at least the previous workflow artifact, the inserted workflow artifact, and the next workflow artifact to the user in the app development UI;
[0015] Develop apps through the app development UI by using updated workflows;
[0016] · determining a moving boundary line in the workflow, wherein the moving boundary line intersects a previous workflow artifact and is perpendicular to the determined flow direction; and
[0017] An updated workflow is determined by moving only one or more workflow artifacts arranged in the workflow that are located on the same side of the move boundary as the inserted artifact or the removed workflow artifact.
[0018] According to a second aspect of the present invention, a computer system may be arranged and configured to perform the steps of a computer-implemented method for managing apps. Specifically, the computer system may be arranged and configured to perform the following steps:
[0019] Providing users with an app development user interface (UI) for developing apps;
[0020] In the app development UI, display at least two workflow artifacts of the app’s workflow to the user;
[0021] Capturing user intent to insert additional workflow artifacts into the workflow in response to user interaction with the app development UI;
[0022] Insert additional workflow artifacts into the workflow based on captured user intent;
[0023] · determining an overlap of at least two workflow artifacts caused by inserting the workflow artifact;
[0024] Determine the flow direction of the workflow from a previous workflow artifact to a subsequent workflow artifact, the previous workflow artifact and the subsequent workflow artifact being respectively before and after the inserted workflow artifact;
[0025] · determining that the workflow needs to be moved along the determined flow direction to avoid the determined overlapping at least one workflow artifact;
[0026] determining an update workflow by moving the corresponding determined workflow artifacts in the direction of the determined flow direction at least until the determined overlap is removed;
[0027] Display at least the previous workflow artifact, the inserted workflow artifact, and the next workflow artifact to the user in the app development UI;
[0028] Develop apps through the app development UI by using updated workflows;
[0029] · determining a moving boundary line in the workflow, wherein the moving boundary line intersects a previous workflow artifact and is perpendicular to the determined flow direction; and
[0030] An updated workflow is determined by moving only one or more workflow artifacts arranged in the workflow that are located on the same side of the move boundary as the inserted artifact or the removed workflow artifact.
[0031] According to a third aspect of the present invention, a computer program product may include computer program code, which, when executed by a computer system, causes the computer system to perform the computer-implemented method of managing an app.
[0032] According to a fourth aspect of the present invention, a computer readable medium may include computer program code, which, when executed by a computer system, causes the computer system to perform the computer-implemented method of managing an app. For example, the computer readable medium may be non-transitory and may further be a software component on a storage device.
[0033] In some examples, the app development platform referred to may be a visual model-based and / or low-code app development platform described in more detail below.
[0034] The foregoing has been quite extensively summarized the technical features of the present disclosure so that those skilled in the art can better understand the following detailed description. The additional features and advantages of the present disclosure that form the subject matter of the claims will be described hereinafter. Those skilled in the art will understand that they can easily use the disclosed concepts and specific embodiments as the basis for modifying or designing other structures for achieving the same purpose of the present disclosure. Those skilled in the art will also recognize that these equivalent constructions do not deviate from the spirit and scope of the broadest form of the present disclosure.
[0035] Moreover, before proceeding with the following detailed description, it should be understood that various definitions for certain words and phrases are provided throughout this patent document, and those of ordinary skill in the art will understand that these definitions apply in many, if not most, instances to prior and future uses of such defined words and phrases. Although some terms may include a variety of embodiments, the appended claims may expressly limit these terms to specific embodiments. BRIEF DESCRIPTION OF THE DRAWINGS
[0036] Figure 1 to Figure 2 Functional block diagrams of exemplary systems that facilitate management of apps in a production system are respectively shown.
[0037] Figures 3 to 10 Flowcharts of exemplary methods for facilitating management of apps in a production system are respectively shown.
[0038] Fig.11 A block diagram of a data processing system is shown in which embodiments may be implemented. DETAILED DESCRIPTION
[0039] Various techniques related to systems and methods for managing apps in a product system (particularly developing an app that includes a workflow for updating apps) will now be described with reference to the accompanying drawings, wherein the same reference numerals represent the same elements throughout. In this patent document, the drawings discussed below and the various embodiments used to describe the principles of the present disclosure are by way of illustration only and should not be interpreted in any way as limiting the scope of the present disclosure. Those skilled in the art will understand that the principles of the present disclosure can be implemented in any suitably arranged device. It should be understood that functions described as being performed by certain system elements 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 of the innovative teachings of this patent document will be described with reference to exemplary non-limiting embodiments.
[0040] An app is a software program that performs a specific desired task when it is run. Typically, an application consists of one or more operating systems ("OS"), virtual machines (such as those that support Java TM Several apps are executed in the operating environment of programming languages), device drivers, etc.
[0041] Apps, including native apps, can be created, edited, and represented using traditional source code. Examples of such traditional source code include C, C++, Java, Flash, Python, Perl, and other script-based methods of representing apps. Developing, creating, and managing such script-based apps, or portions of such script-based apps, can be accomplished by manual coding by appropriately trained users.
[0042] Developers often use an application development framework ("ADF"), which is itself an application program or app, to implement / develop the desired app. ADF provides a set of predefined code / data modules that can be used directly / indirectly in the development of an app. ADF may also provide tools such as an integrated development environment ("IDE"), code generators, debuggers, etc., which facilitate developers to code / implement the desired logic of the app in a faster / easier manner.
[0043] In general, ADFs simplify app development by providing reusable components that can be used by app developers to define user interfaces ("UIs") and app logic by, for example, selecting components to perform desired tasks 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 easier app development and maintenance.
[0044] According to another method, apps can also be created, edited and represented using visual model-based representations. Unlike traditional source code implementations, these apps can be created, edited and / or represented by drawing, moving, connecting and / or disconnecting visual depictions of logical elements within a visual modeling environment. Apps based on visual models can use symbols, shapes, lines, colors, shadows, animations and / or other visual elements to represent logic, data or memory structures or user interface elements. In order to program traditional script-based apps, programmers are usually required to type detailed scripts according to a complex set of programming grammar rules. In contrast, in some cases, programming of visual model-based apps can be completed by connecting various logical elements (e.g., action blocks and / or decision blocks) to create a visual flowchart that defines the operation of the app. Similarly, in contrast to typing detailed commands in a script, data structures (e.g., variable types, database objects or categories) and / or user interface elements (e.g., drop-down boxes, lists, text input boxes) in visual model-based apps can be defined by drawing, placing or connecting visual depictions of logical elements within a virtual workspace. Therefore, visual model-based apps (including native apps) may be more intuitive to program and / or edit than traditional script-based apps. In the present invention, a method of managing apps, particularly developing apps including trained functionality, is presented, which may involve interpreted visual model-based representations.
[0045] For the sake of brevity, references to "model," "visual model," "application," or "app" should be understood to refer to visual model-based apps, including native apps, unless otherwise noted. In some cases, such a visual model-based app may represent a complete, stand-alone app for execution on a computer system. A visual model-based app may also represent a discrete module that is configured to perform certain tasks or functions, but does not represent a complete app; instead, such a discrete module may be inserted into a larger app or combined with other discrete modules to perform more complex tasks. Examples of such discrete modules may include modules for validating ZIP codes, for receiving information about current weather from a weather feed, and / or for rendering graphics.
[0046] The visual model can be represented in two forms: an internal representation and one or more associated visual representations. The internal representation can be a file encoded according to a file format used by the modeling environment to capture and define the operation of the app (or part of the app). For example, the internal representation can define what inputs the app can receive, what outputs the app can provide, the algorithms and operations through which the app can get results, what data the app can display, what data the app can store, etc. The internal representation can also be used to instruct the execution environment how to execute the logic of the app during operation. The internal representation can be stored in the form of non-human readable code (e.g., binary code). The internal representation can also be stored in JSON (JavaScript Object Notation) format and / or XML format according to binary storage. At runtime, the execution engine can use the internal representation to compile and / or generate executable machine code, which enables the processor to implement the functionality of the model when executed by the processor.
[0047] The internal representation may be associated with one or more visual representations. The visual representation may include visual elements that depict how the logic of the app flows but are not designed to be compiled or executed. These visual representations may include, for example, flowcharts or decision trees that show the user how the app will operate. The visual model may also visually depict the data to be received from the user, the data to be stored, and the data to be displayed to the user. These visual models may also be interactive, which allows the user to manipulate the model in an intuitive way. For example, the visual representation may be configured to display a certain level of detail by default (e.g., the number of branches, the number of displayed parameters, the granularity of the displayed logic). However, the user can interact with the visual representation to show the desired level of detail-for example, the user can show or hide branches of logic, and / or show or hide parameter sets. Details related to the elements of the visual model may be hidden from view by default, but may appear in a sliding window or pop-up window on the screen when the user clicks on the appropriate element. The user can also zoom in or out of the model, and / or pan over different parts of the model to examine different parts of the model. The user can also copy or paste branches of logic from one part of the model into another part, or copy / paste branches of logic from a first model into a second model. In some cases, multiple parts of a model may contain links to other parts of the model, so that if the user clicks on a link, the user will be automatically directed to another part of the model.
[0048] A viewing user can interact with the visual representation in at least some of the same ways that a viewing user might interact with the model when it is displayed within the modeling environment. In other words, the visual representation can be configured to simulate how the model would appear if it were displayed within the visual modeling environment. A single internal representation can correspond to multiple visual representations that use different styles or formatting rules to display the app logic. For example, multiple visual representations corresponding to the same internal representation can differ in their use of color, elements that are included or omitted, and the use of symbols, shapes, lines, colors, and / or shading to depict the flow of logic.
[0049] Methods involving visual model-based representations, visual model-based apps and / or the above-mentioned functions of visual models are sometimes understood to be included in so-called low-code application development platforms or low-code app development platforms. By way of example, such low-code application development platforms can be further described as software that provides a development environment for creating application software through a graphical user interface and configuration (rather than traditional hand-coded computer programming). Low-code models can enable developers of various experience levels to create applications using a visual user interface combined with model-driven logic. These low-code application development platforms may produce fully operational apps or require additional coding for specific situations. Low-code app development platforms can reduce the amount of traditional manual coding and achieve accelerated delivery of commercial apps. A common benefit is that a wider range of people can contribute to the development of apps, not just those with formal programming skills. Low-code app development platforms can also reduce the initial cost of establishment, training, deployment and maintenance.
[0050] refer to Figure 1, a functional block diagram of an exemplary computer system or data processing system 100 that facilitates the management of apps 120, and in particular, the development of apps 120 including a workflow 124 for updating the apps 120, is shown. The processing system 100 may include a (visual model-based) app development platform 118 including at least one processor 102, which is configured to execute at least one application software component 106 from a memory 104 accessed by the processor 102. In the present invention, the app development platform 118 may include a visual model-based representation, a visual model-based app, and / or the above-mentioned functions of the visual model, and as an example, may 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 actions and functions described in the present invention. For example, the above-mentioned application software component 106 may include and / or correspond to one or more components of an app development application, which is configured to generate product data and store it in a data storage 108 (such as a database). In addition, the above-mentioned application software component 106 may include and / or correspond to one or more components of an app creation or development application.
[0051] As an example, the app development platform 118 can be cloud-based, Internet-based, and / or operated by a provider that provides app development and creation support (including, for example, support for app development based on low-code and / or visual models). The user can be near the app development platform 118 or away from the app development platform 118, for example, at any other place, for example, using a mobile device for connecting to the app development platform 118, for example, via the Internet, where the mobile device can include an input device 110 and a display device 112. In some examples, the app development platform 118 can be installed and run on a user's device, such as a computer, laptop, tablet, local computing facility, etc.
[0052] Examples of product systems that may be suitable for including app management and / or development (including the workflows for updating app features described herein) may include a low-code software development platform from Mendix, Inc. of Boston, Massachusetts, USA. The 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 may be used in 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 product data and stores it in a database. Furthermore, examples of databases that may be used as one or more data stores described herein include database server applications, such as Oracle, Microsoft SQL Server, or any other type of data store that is operable to store data records.
[0053] It should be understood that in a complex app development and / or management environment, managing apps 120 (particularly developing apps 120 that include workflows 124 for updating apps 120) may be difficult and time consuming. For example, it may require advanced coding or software development or management knowledge of the user, or require conscious selection of many options, both of which involve many manual steps, which is a lengthy and inefficient process.
[0054] In order to enable enhanced management of apps 120, and in particular, to develop apps 120 including workflows 124 for updating apps 120, the product system or processing system 100 may include at least one input device 110 and at least one display device 112 (such as a display screen). The processor 102 may be configured to generate a graphical user interface (GUI) 114 via the display device 112. Such a GUI 114 may include GUI elements such as buttons, links, search boxes, lists, text boxes, images, scroll bars, etc., which may be used by a user to provide input via the input device 110, which inputs may result in updating the workflow 124 and / or developing the app 120. For example, the GUI 114 may include an app development UI 116 provided to a user for developing an app 120.
[0055] In an exemplary embodiment, the application software component 106 and / or the processor 102 may be configured to provide an app development user interface (UI) 116 of an app development platform 118 to a user for developing an app 120 .
[0056] As mentioned above, the app development platform 118 may include a visual model-based representation, a visual model-based app, and / or the above-mentioned functionality of the visual model, and may be, by way of example, a visual model-based app development platform or a low-code app development platform. The app development UI 116 may provide an interactive user interface of the app development platform 118 that supports and enables a user to develop an app 120. For example, an app 120 may be or may include a software program that performs a specific desired task at runtime.
[0057] In some examples, application software component 106 and / or processor 102 may be further configured to display at least two workflow artifacts 122 of a workflow 124 of app 120 to a user in app development UI 116 .
[0058] In the present invention, a workflow 124 may generally be considered to include an orchestrated and repeatable pattern of activities that is achieved by systematizing resources into processes that may transform materials, provide services, or process information. A workflow 124 may be depicted as a series of operations, the work of a person or group, the work of an organization of workers, or one or more simple or complex mechanisms. In the case of an app 120 and the development of an app 120, a workflow 124 may depict or characterize a pattern of activities that may be performed by a developed and deployed app 120. In a sense, a workflow 124 may express the logic of an app 120. Therefore, executing a workflow 124 that may correspond to a given business logic and that may be included in a developed and deployed app 120 may help meet specific business needs. In some examples, a workflow 124 may include two or more workflow artifacts 122 that may form the above pattern and may correspond to separate activities of the above pattern.
[0059] In some app development platforms 118, such workflows 124 may be referred to as microflows or nanoflows. Generally similar to the workflows 124 of app 120, these microflows or nanoflows may perform actions, such as the workflow artifacts 122 described above, such as creating and updating objects, displaying pages, and making selections. These selections may be decisions, i.e., for example, a selection may be made based on a condition and follow one and only workflow artifact 122 in an outgoing path. For example, for app 120 in the context of onboarding new employees, you may need to use decisions to follow different paths when new employees work remotely or when they work in the office. In an industrial context, app 120 may include, for example, a decision based on input data 152 of the device, such as condition monitoring data or status data associated with the device, to decide whether to stop the production process of the device (e.g., a production machine). In some examples, the above-mentioned device may correspond to the target device 150 or other device mentioned below. These decision workflow artifacts 122 may, for example, include an exclusive diversion as an element that makes a selection based on a condition and (exactly) follows one of the outgoing sequence flows. These decision workflow artifacts 122 may, for example, also include inheritance shunts, which are elements that make choices based on the type of a specific variable. For each specialization of a variable, the workflow 124 can continue in a different way. In addition, these decision workflow artifacts 122 may, for example, include parallel shunts, which can be used to have parallel processes in the workflow 124. These parallel processes or the above-mentioned outgoing sequence flows can also be understood as partial flows 142 of the workflow 124, which are explained below. For example, when a new employee is on board, you can have several processes running in parallel: the HR department prepares the necessary documents, the IT department prepares the workstations, and the administrative department arranges training for the employee. In some examples, these decision workflow artifacts 122 can be understood as the shunt artifacts 140 explained below.
[0060] Thus, there may be workflow artifacts 122 that can merge processes running in parallel or combine multiple sequence flows into one sequence flow. For example, there may be a situation where a workflow 124 has been separated in the portion before the merge to perform a specific action. Thereafter, the same action needs to be performed for all separated flows. In this case, a merge can be used to avoid redundancy. In some examples, these merged workflow artifacts 122 can be understood as merged artifacts 148 that merge partial flows 142 explained below.
[0061] Particularly in the context of low-code app development, workflow 124 can be understood as a visual representation of what traditionally ends up being textual program code.
[0062] In some app development platforms 118, microflows can run in a runtime server and thus may not be used in offline apps in some examples, whereas nanoflows can run directly on a browser or target device 150 and may be used in offline apps in some examples. In addition, most actions in a nanoflow can run directly on the target device 150, so there may also be speed benefits for logic that does not need to access a server.
[0063] As an example, a workflow artifact 122 may correspond to one or more activities performed by an app 120, such as accessing input data 152, manipulating input data 152, generating output data 154, user interaction (such as capturing an app user's query), displaying data (e.g., input data 152 or output data 154) to an app user, or transmitting output data 154 to some other app or device, such as a device connected to a target device 150. Workflow artifacts 122 may further involve (as already mentioned above) creating and updating objects, displaying pages, and making selections.
[0064] In further examples, the application software component 106 and / or the processor 102 may also be configured to capture a user's intent to insert an additional workflow artifact 122 a into the workflow 124 in response to the user's interaction with the app development UI 116 .
[0065] For example, for the purpose of further developing the app 120, the user may want to insert an additional workflow artifact 122a into the workflow 124. In some examples, the user may express his or her intention by dragging and dropping the additional workflow artifact 122a in the workflow 124 displayed in the app development UI 116. This may be done, for example, by dragging and dropping the additional workflow artifact 122 between two adjacent workflow artifacts 122 or on one of the workflow artifacts 122, such as using the input device 110. In the present invention, it should be understood that in some examples, the additional workflow artifact 122a may be an additional action that the user wants to insert into the existing workflow 124 of the app 120 he or she develops.
[0066] In further examples, additional workflow artifacts 122a may be selected from a library or templates made available to the user by the app development platform 118 and / or may be created by the user and / or may be imported by the user from elsewhere (eg, from other data sources available on the Internet).
[0067] It should be understood that in some examples, the user intention may be to move one of the workflow artifacts 122 of the workflow 124 from an initial position to a final position within the workflow 124. The user intention may be understood as deleting the specific workflow artifact 122 at the initial position from the workflow 124 and inserting the specific workflow artifact 122 at the final position of the workflow 124. In the present invention, inserting the specific workflow artifact 122 at the final position in the workflow 124 may be understood as inserting the specific workflow artifact 122 as an additional workflow artifact 122a into the workflow 124 at the final position. The resulting overlap 126 at the final position may then be removed according to the method described below.
[0068] By way of example, the application software component 106 and / or the processor 102 may be further configured to insert additional workflow artifacts 122a into the workflow 124 according to the captured user intent.
[0069] The app development platform 118 can then place the additional workflow artifact 122a in the workflow 124 as desired by the user. In some examples, the previously defined workflow 124 may not have been rearranged to accommodate the additional workflow artifact 122a. In other examples, if the additional workflow artifact 122a is inserted between the previous workflow artifact 122p and the next workflow artifact 122f, the additional workflow artifact 122a can be placed at the initial position of the next workflow artifact 122f or near the initial position of the next workflow artifact 122f, such as toward the previous workflow artifact 122p, to obtain a modified workflow 124'.
[0070] In some examples, the application software component 106 and / or the processor 102 may also be configured to determine an overlap 126 of at least two workflow artifacts 122 caused by the inserted workflow artifact 122 a .
[0071] Typically, inserting the additional workflow artifact 122a may result in an overlap 126 of the workflow artifacts 122 of the workflow 124 that now also includes the inserted workflow artifact 122a. In the present invention, an overlap 126 may be understood as one of the workflow artifacts 122, 122a of the workflow 124 extending to or extending beyond and covering a portion of the other workflow artifact 122, 122a of the workflow 124. Each overlapping workflow artifact 122, 122a may have a size as displayed to the user in the app development UI 116, or the size of each overlapping workflow artifact 122, 122a may be larger than the size displayed in the app development UI 116. Therefore, in some examples, each overlapping workflow artifact 122, 122a may also overlap when displayed on the app development UI 116. In other examples, each overlapping workflow artifact 122, 122a may be displayed in the app development UI 116 as being closer to each other than other adjacent workflow artifacts 122. In these examples, because the sizes of the overlapping workflow artifacts 122 , 122 a may each be larger than the size displayed in the app development UI 116 , the overlapping workflow artifacts 122 , 122 a may be displayed as non-overlapping in the app development UI 116 even though they do overlap.
[0072] In most examples, the inserted workflow artifact 122a may at least partially overlap with one of the workflow artifacts 122 that the workflow 124 already contained prior to inserting the inserted workflow artifact 122a.
[0073] In another example, the application software component 106 and / or the processor 102 may be further configured to determine a flow direction 128 of the workflow 124 from a previous workflow artifact 122p to a subsequent workflow artifact 122f that precedes and follows the inserted workflow artifact 122a, respectively.
[0074] In some examples, the workflow 124 can be characterized by a certain flow direction 128 linking a previous workflow artifact 122p with a subsequent workflow artifact 122f. The flow direction 128 can indicate the flow of the workflow artifacts 122 and can, for example, define that the previous workflow artifact 122p can be executed before the subsequent workflow artifact 122f can be executed. As an example, the flow direction 128 can be indicated using an arrow in the app development UI 116.
[0075] So, in some examples, the flow direction 128 or sequence flow can be understood as a flow that can be shown in the app development UI 116 using one or more arrows that link workflow artifacts 122 (such as events, activities, decisions, etc.) to each other. Therefore, the flow direction 128 can define the order of execution. The flow direction 128 can generally flow in one direction, where the workflow artifacts 122 follow each other one after another. The flow direction 128 or sequence flow can be used when two activities or workflow artifacts 122 should be linked together.
[0076] For clarity, the flow direction 128 may link a preceding workflow artifact 122p and a succeeding workflow artifact 122f such that the preceding workflow artifact 122p is executed first, and then the succeeding workflow artifact 122f is executed.
[0077] As an example, the application software component 106 and / or the processor 102 may also be configured to determine at least one workflow artifact 122 m of the workflow 124 that needs to be moved along the determined flow direction 128 to avoid the determined overlap 126 .
[0078] The determination of the workflow artifact(s) 122m to be moved may involve determining whether the determined overlap 126 can be removed by moving the corresponding workflow artifact 122 of the workflow 124 along the determined flow direction 128. If the determined overlap can be removed by moving the corresponding workflow artifact 122, the corresponding workflow artifact 122 may be identified as the workflow artifact 122m to be moved. In many cases, the workflow artifact 122m to be moved may be a subsequent workflow artifact 122f, i.e., a workflow artifact 122f that is located after the inserted workflow 122a in the workflow 124 after the inserted workflow 122a is inserted. In some examples, the workflow artifact 122m to be moved may be a preceding workflow artifact 122p, i.e., a workflow artifact 122p that is located before the inserted artifact 122a in the workflow 124 after the inserted workflow 122a is inserted.
[0079] It should also be understood that in further examples, the application software component 106 and / or the processor 102 may also be configured to determine an updated workflow 124' by moving the corresponding determined workflow artifact 122m along the determined flow direction 128 at least until the determined overlap 126 is removed.
[0080] Then, the determined workflow artifact 122m to be moved can be moved in the workflow 124 along the determined flow direction 128, at least until the determined overlap 126 is removed to obtain the updated workflow 124'. Generally, as an example, once the determined overlap 126 is removed, the movement of the determined workflow artifact 122m can be stopped. Moving the determined workflow artifact 122m can sometimes be referred to as nudging, because the determined workflow artifact 122m can only be moved gently or gradually, and because this method attempts to maintain the overall layout of the workflow 124.
[0081] As an example, the application software component 106 and / or the processor 102 may be further configured to display at least the previous workflow artifact 122 p , the insert workflow artifact 122 a , and the next workflow artifact 122 f to the user in the app development UI 116 .
[0082] In the present invention, in some examples, after inserting the inserted workflow artifact 122a and after moving the determined workflow artifact 122m to obtain the updated workflow 124', the previous workflow artifact 122p, the inserted workflow artifact 122a, and the next workflow artifact 122f can be displayed to the user. In other words, at least three of the above-mentioned workflow artifacts 122p, 122a, 122f of the updated workflow 124' can be displayed to the user in the app development UI 116.
[0083] Displaying the previous workflow artifact 122p, the inserted workflow artifact 122a, and the subsequent workflow artifact 122f in the app development UI 116 can allow the user to trace back the modifications made to the original workflow 124 to obtain the updated workflow 124' and check the updated workflow 124'. In some examples, the user can confirm or discard the updated workflow 124' through corresponding user interaction with the app development UI 116. In general, the proposed update mechanism of the workflow 124 to obtain the updated workflow 124' can provide very good results, which can meet the user's insertion intent and provide an updated workflow 124' that can be easily used by the app development platform 118 to create or develop the app 120.
[0084] In another example, the application software component 106 and / or the processor 102 may be further configured to develop the app 120 through the app development UI 116 using the updated workflow 124 ′.
[0085] Using the updated workflow 124', the app 120 can be developed through the app development UI 116, for example, the app development UI can interact with, for example, ADF, IDE, visual model-based representation, or the above-mentioned (low-code) app development platform 118 to complete the development of the app 120. In the present invention, the app development platform 118 together with the updated workflow 124' can be particularly suitable for supporting non-expert users to insert additional workflow artifacts 122 in the workflow, and then develop the app 120 including the updated workflow 124'.
[0086] It should be appreciated that the proposed approach may be particularly suitable for preserving the layout of a workflow 124 after inserting an additional workflow artifact 122a to obtain an updated workflow 124'. This may be achieved, for example, by avoiding overlapping workflow artifacts 122, by avoiding cross-flows in a workflow 124, by avoiding resetting the user layout of a workflow 124, and / or by allowing future extensions of a workflow 124 (e.g., introducing decision splits, loops, etc.).
[0087] Therefore, the suggested method can ensure that an updated workflow 124' is available that can be interpreted in a meaningful and consistent manner by the app development platform 118. Therefore, the suggested method can avoid contradictions and breaks or cross-flows in the updated workflow 124', which may cause inconsistencies and problems when the app development platform 118 attempts to develop or create an app 120 based on such inconsistent or contradictory updated workflow 124'. Therefore, the suggested method can greatly help facilitate app development, especially for non-expert app developers.
[0088] Other approaches (e.g. involving macro layout algorithms such as dot, twopi, neato or Sugiyama algorithms) may tend to rewrite the entire graphical layout, which may have serious disadvantages. For example, a user (especially a non-expert app developer) may no longer be aware that his or her initial workflow 124 may be lost during the development of his or her app 120. This may particularly hinder further modifications, such as inserting further workflow artifacts 122 into the workflow 124, which however needs to be done frequently and multiple times during the development of the workflow 124 of the app 120 or during the development of the app 120.
[0089] Further, according to other methods, the user can process the layout of the workflow 124 by himself to obtain the updated workflow 124' after inserting the additional workflow artifact 122a. However, this method may involve many manual steps, for example, manual coding that can only be performed by properly trained users. Moreover, this method is time-consuming and prone to errors.
[0090] In contrast to these other approaches, the proposed approach may be embodied as a somewhat low-code approach for users to create a logical layout of a workflow 124 and develop an app 120. Specifically, the proposed approach may relieve users of the burden of manually modifying or correcting workflow logic when adding and when moving or deleting workflow artifacts 122 in a workflow 124. Advantages of the proposed approach include visually displaying to the user what is modified by an update of the proposed workflow 124. Thus, the user may still retain control over the changes applied, also because according to the proposed approach, only small changes are made to the workflow 124, which thereby corresponds to a "micro" aspect as opposed to the macro layout algorithm described above.
[0091] It should also be understood that the proposed method can be applied to the above-mentioned app development platform 118 that provides the workflow 124 as micro- or nano-fluidics.
[0092] It should be understood that in some examples, the application software component 106 and / or the processor 102 can be further configured to determine a moving boundary line 146 in the workflow 124, wherein the moving boundary line 146 intersects with the previous workflow artifact 122p and is perpendicular to the determined flow direction 128; and determine an updated workflow 124' by only moving one or more workflow artifacts 122 in the workflow 124 arranged on the same side of the moving boundary line 146 as the inserted artifact 122a or the removed workflow artifact 122r.
[0093] The use of the described moving boundary line 146 may be particularly advantageous for more complex or advanced workflows 124. Such more complex workflows 124 may include curves at which workflow artifacts 122 may be arranged so that the workflow 124 may cross or intersect a determined moving boundary line 146 once or several times. Imagine, for example, a workflow 124 having an S-shape or a Z-shape, where the moving boundary line may be a vertical line that divides the workflow 124 into a right half and a left half. Obviously, such a workflow 124 crosses or intersects the moving boundary line 146 three times, namely at the top, middle, and bottom of the shape of the workflow 124.
[0094] The moving boundary line 146 may be determined to intersect the workflow 124 at the previous workflow artifact 122p and may be perpendicular to the determined flow direction 128. The updated workflow 124' may then be determined by moving only the artifacts 122 disposed on the same side of the moving boundary line 146 as the inserted workflow artifact 122a or the removed workflow artifact 122r. In other words, in some examples, the workflow artifacts disposed on the same side of the moving boundary line 146 as the previous workflow artifact 122p may not be moved.
[0095] This rather simple approach can prove to be very effective and fail-safe. It is fairly easy to implement and still quite helpful in keeping the layout of the workflow 124.
[0096] In some examples, the workflow 124 may intersect the determined moving boundary line 146 at least twice, wherein optionally, the workflow 124 may include an S shape or a Z shape, as explained above, or the workflow 124 may include a U shape, as explained in Figure 5 As shown in and explained below.
[0097] It should also be appreciated that in further examples, the application software component 106 and / or the processor 102 may be further configured to use the captured user intent and the trained function 132 to determine at least one location 130 in the workflow 124 to insert an additional workflow artifact 122a.
[0098] Trained functionality 132 may be understood as or may include, for example, a machine learning algorithm, a deep learning model, an artificial neural network, or more generally an artificial intelligence-based functionality. Alternative terms for "artificial neural network" are "neural network", "artificial neural net" or "neural net", and an example may be a convolutional neural network.
[0099] The trained function 132 may generally receive a data input that is then processed using the trained function 132 to generate a data output. It should be appreciated that in some examples, the trained function 132 may be used for pattern recognition, data mining, image recognition, speech recognition, etc., and may be particularly useful for processing large amounts of data.
[0100] In this context, in some examples, the trained function 132 may include a recommendation engine that may make a recommendation or multiple recommendations to a user regarding a location 130 or multiple different locations 130 in the workflow to insert an additional workflow artifact 122a into the workflow 124. In the present invention, the data input referred to may include data regarding one or more meaningful locations 130 in the workflow 124 to insert the corresponding additional workflow artifact 122a. In some examples, the data input may originate from users who previously modified their corresponding workflow 124 by inserting the additional workflow artifact 122a to create or develop the corresponding app 120. In some examples, only such input data may be considered, where the modified workflow 124' resulted in a successfully developed and deployed app 120. The trained function 132 may use these data inputs, process the data inputs, and then output a data output that includes one or more recommended locations 130 where the user of the currently developing workflow 124 and the app 120 can insert the currently inserted workflow artifact 122a.
[0101] In some more advanced examples, the user may initially provide only a certain desired functionality of the app 120, and the trained function 132 may then determine the additional workflow artifacts 122a that need to be inserted into the workflow 124 and that best correspond to the user's desired functionality. In these more advanced examples, the trained function 132 may thus translate the captured user intent to some extent to insert the desired functionality into the required additional workflow artifacts 122a. In the present invention, in some examples, the corresponding data input may originate from a user who has previously input the desired functionality and has inserted the additional workflow artifacts 122a into the workflow to (successfully) create or develop the corresponding app 120.
[0102] It should be appreciated that the suggested updating mechanism of the workflow 124 after inserting the additional workflow item 122a may support both regular, non-expert app development users and users supported by the trained function 132. In some examples, the trained function 132 may very quickly and conveniently determine the appropriate location 130 where the additional workflow artifact 122a is to be inserted. However, in many cases, the trained function 132 or some other artificial intelligence-based function may not be able to update the workflow 124 in a meaningful way. Therefore, the trained function 132 may be limited to only determining the correct location 130 for inserting the additional workflow artifact 122a, and may not be able to perform the subsequent steps of appropriately updating, rearranging, or reordering the workflow 124 after inserting the additional workflow artifact 122a. In many examples, without a suggested update mechanism for the workflow 124, a workflow 124 established by a regular, non-expert app development user supported only by the trained functionality 132 or some other artificial intelligence-based functionality will include inconsistencies or conflicts that can cause serious problems for the app development platform 118 when developing the corresponding app 120. Moreover, in many cases, the trained functionality 132 without a suggested update mechanism for the workflow 124 will result in a jumbled and confusing workflow 124 that is very difficult for both the user and the app development platform 118 to interpret in a meaningful way.
[0103] In some examples, application software component 106 and / or processor 102 may be further configured to display corresponding determined locations 130 to a user in app development UI 116 and capture a user intent to approve at least one of corresponding determined locations 130 in response to user interaction with app development UI 116 .
[0104] In some examples, displaying the corresponding determined locations 130 to the user and obtaining the user's approval of at least one of the corresponding determined locations 130 can help train and refine the trained function 132. Over time, the trained function will improve its accuracy, making it increasingly likely that the determined locations 130 are a good fit and approved by the user.
[0105] In further examples, the application software component 106 and / or the processor 102 may also be configured to move the workflow artifact 122 of the workflow 124 subsequent to the inserted artifact 122a along the determined flow direction 128 at least until the determined overlap 126 is removed.
[0106] In these examples, (all) workflow artifacts 122 after the inserted artifact 122a may be moved along the determined flow direction 128, at least until the determined overlap 126 is removed, wherein the moved workflow artifacts 122 may include the next workflow artifact 122f, i.e., the workflow artifact 122f after the inserted artifact 122a. This method of updating the workflow 124 is particularly simple and easy to implement, but still results in a well-arranged update workflow 124'. These scenarios may be particularly suitable for relatively simple and linear workflows 124, for example, the workflow artifacts 122 after the inserted artifact 122a are arranged roughly along a line, for example, along the determined flow direction 128.
[0107] It should be understood that in some examples, the application software component 106 and / or the processor 102 may also be configured to: determine an overlap 126 of at least two of the workflow artifacts 122 caused by a previously moved workflow artifact 122m; determine a flow direction 128 of the workflow 124 from a previous workflow artifact 122p to a subsequent workflow artifact 122f, the previous workflow artifact 122p and the subsequent workflow artifact 122f being respectively before and after the previously moved workflow artifact 122m; determine at least one workflow artifact 122mm of the workflow 124 that needs to be moved along the determined flow direction 128 to avoid the determined overlap 126; and determine an updated workflow 124′ by moving the corresponding determined workflow artifact 122mm along the determined flow direction 128 at least until the determined overlap 126 is removed.
[0108] In these examples, in a previous step, a previously determined workflow artifact 122m has been moved, whereby the movement of the previously determined workflow artifact 122m may cause a current overlap 126. In this case, the previously described method may be applied again, so that firstly the new overlap 126 may be determined, and secondly a new flow direction 128 of the current workflow 124 may be determined, whereby the current workflow 124 corresponds to the previously updated workflow 124' taking into account the movement of the previously moved workflow artifact 122m. The new flow direction 128 takes into account the workflow artifact 122p preceding the previously moved artifact 122m and the workflow artifact 122f following the previously moved artifact 122m. Thirdly, at least one workflow artifact 122mm that needs to be moved to avoid the determined current overlap 126 may be determined; and fourthly, the current workflow 124 may be updated by moving the corresponding determined workflow artifact 122mm along the determined new flow direction 128 at least until the determined overlap 126 is removed, to obtain a modified updated workflow 124'.
[0109] In this manner, overlaps 126 previously caused by moving workflow artifacts 122 to remove previously existing overlaps 126 may be removed. This process may be iterative, ie, repeated until overlaps 126 caused by all iterations in the workflow 124 are removed.
[0110] In some examples, the application software component 106 and / or the processor 102 may also be configured to: capture a user intent to remove a selected workflow artifact 122r from the workflow 124 in response to a user interaction with the app development UI 116; remove the selected workflow artifact 122r from the workflow 124 according to the captured user intent; determine a gap 134 between a previous workflow artifact 122p and a subsequent workflow artifact 122f, the previous workflow artifact 122p and the subsequent workflow artifact 122f being respectively before and after the removed workflow artifact 122r; determine a flow direction 128 of the workflow 124 from the previous workflow artifact 122p to the subsequent workflow artifact 122f; and determine an updated workflow 124′ by moving the subsequent workflow artifact 122f in a direction opposite to the determined flow direction 128 until the determined gap 134 is closed.
[0111] Typically, removing one of the workflow artifacts 122 may create a gap 134 between the artifacts 122p, 122f before and after the removed workflow artifact 122r. In the present disclosure, in some examples, a gap 134 may be understood as an excess space between two adjacent workflow artifacts 122 of a workflow 124, for example, such that, for example, an additional workflow artifact 122a may be inserted into the gap 134 without causing an overlap 126. Preferably, these gaps 134 are avoided to maintain a well-organized workflow 124, which, for example, also allows for legibility to a user.
[0112] After determining the flow direction 128 of the workflow 124 from the previous workflow artifact 122p to the next workflow artifact 122f, an updated workflow 124′ can be obtained by moving the next workflow artifact 122f in a direction opposite to the determined flow direction 128 until the gap 134 is closed. Therefore, the opposite direction can mean that the moving direction of the next workflow artifact 122f is exactly opposite or rotated 180° relative to the determined flow direction 128.
[0113] In some examples, (all) workflow artifacts 122 after the removed workflow artifact 122r or after the next workflow artifact 122f may be moved in a direction opposite to the determined flow direction 128. This method of updating the workflow 124 is particularly simple and easy to implement, but still results in a well-arranged updated workflow 124'. These scenarios may be particularly suitable for relatively simple and linear workflows 124, such as workflow artifacts 122 after the removed artifact 122r being arranged roughly along a line, such as along the determined flow direction 128.
[0114] It should be understood that in some examples, the user intention may be to move one of the workflow artifacts 122 from an initial position to a final position within the workflow 124. The user intention may be understood as deleting the specific workflow artifact 122 at the initial position and inserting the specific workflow artifact 122 at the final position of the workflow 124. In the present invention, removing the specific workflow artifact 122 at the initial position in the workflow 124 may be understood as removing the specific workflow artifact 122 from the workflow 124 at the initial position as the selected workflow artifact 122r. Then, according to the above method, the gap 134 generated at the initial position may be closed.
[0115] In some examples, the inserted workflow artifact 122a may be inserted into a loop 136 of the workflow artifact 122, wherein the loop 136 may have a loop size 138 and a loop boundary 139; and wherein the application software component 106 and / or the processor 102 may also be configured to: determine an overlap 126 of the workflow artifact 122 included by the loop 136 and the loop boundary 139, the overlap 126 being caused by the workflow artifact 122a inserted into the loop 136; and determine an updated workflow 124' by extending the loop size 138 of the loop 136 along the determined flow direction 128 at least until the determined overlap 126 is removed.
[0116] In the present invention, loop 136 can be used to perform repeated actions, including one or more workflow artifacts 122 that can be visualized as frames. For each iteration, the flow within loop 136 can be executed. In some examples, loop 136 can be configured to iterate on a list or iterate based on a Boolean expression. Iteration on a list can include a workflow artifact 122 that executes loop 136 for each entry in the list. Iteration based on a Boolean expression can include, for example, a workflow artifact 122 that executes loop 136 when a condition is true. In some examples, in addition to the start event and end event that start or end the workflow 124, loop 136 can include all types of workflow artifacts 122, such as also used in microflow or nanoflow. In addition, loop 136 can include workflow artifacts 122 corresponding to interrupt events and continue events.
[0117] To accommodate the workflow artifacts 122 included by the loop 136 , the loop 136 may have a particular loop size 138 and may be bounded by a loop boundary 139 , both of which may be displayed in the app development UI 116 as a frame of a corresponding size.
[0118] If the inserted workflow artifact 122a is inserted into the loop 136, an overlap 126 of at least one of the workflow artifacts 122 of the loop 136 with the loop boundary 139 may occur. First, the overlap 126 may be determined, and then, an updated workflow 124 may be determined by extending the loop size 138 and thus the loop boundary 139 of the loop 136 along the determined flow direction 128 at least until the determined overlap 126 is removed. In the present invention, the flow direction 128 may be determined from the workflow artifact 122p before the inserted workflow artifact 122a to the workflow artifact 122f after the inserted workflow artifact 122a. In some examples, extending the loop size 138 along the determined flow direction may mean that the start or entry point of the loop 136 in the workflow 124 remains unchanged; while the end or exit point of the loop 136 in the workflow 124 may be moved along the determined flow direction 128, thereby extending or enlarging the loop size 138 and the loop boundary 139 until the determined overlap 126 is removed. In some examples, extending loop size 138 may involve correspondingly extending loop boundary 139 along determined flow direction 128 .
[0119] By way of example, the application software component 106 and / or the processor 102 may be further configured to: determine an overlap 126 of the extended loop 136 with the workflow artifact 1221f after the loop 136; determine a flow direction 128 of the workflow 124 from the extended loop 136 to the workflow artifact 1221f after the loop 136; and determine an updated workflow 124′ by moving the workflow artifact 1221f after the loop 136 along the determined flow direction 128 at least until the determined overlap 126 is removed.
[0120] In this example, in a previous step, the loop size 138 has been expanded to remove a previously existing overlap 126 between the workflow artifacts 122 contained by the loop 136 and the loop boundary 139, whereby the expansion of the loop size 138 causes the current overlap 126. In this case, a new overlap 126 can be determined, whereby the expanded loop 136, now with its expanded loop boundary 139, and the workflow artifacts 1221f after the expanded loop 136 can overlap. Then, a flow direction 128 can be determined, which now takes into account these two items, namely the expanded loop boundary 139 and the workflow artifacts 1221f after the expanded loop 136. Finally, an updated workflow 124' can be determined by moving the workflow artifacts 1221f after the expanded loop 136 along the determined flow direction 128 at least until the determined overlap 126 is removed.
[0121] In this way, overlap 126 that may have been previously caused by extending loop 136 may be removed.
[0122] In some examples, the previous workflow artifact 122p can be a branch artifact 140 of a partial flow 142 of the starting workflow 124, wherein the application software component 106 and / or the processor 102 can also be configured to: determine a flow direction 128 of the workflow 124 from the subsequent workflow artifact 122f to a workflow artifact 122ff after the subsequent workflow artifact 122f; and determine an updated workflow 124' by arranging the inserted artifact 122a at the initial position 144 of the subsequent artifact 122f and by moving the subsequent workflow artifact 122f along the determined flow direction 128 at least until the determined overlap 126 is removed.
[0123] In these examples, it may be challenging to preserve the layout of the workflow 124. To meet this challenge, the flow direction 128 of the workflow 124 is determined by considering the workflow artifact 122f inserted after the workflow artifact 122a and the workflow artifact 122ff inserted after the workflow artifact 122f. In other words, the determination of the flow direction 128 is deferred or redeployed from a pair of workflow artifacts 122p-122f to a pair of workflow artifacts 122f-122ff.
[0124] An updated workflow 124' may then be determined by placing the inserted artifact 122a at the initial position 144 or 130 where the subsequent artifact 122f was initially positioned. The subsequent workflow artifact 122f may then be moved along the determined flow direction 128, at least until the determined overlap 126 is removed. In some examples, the determined overlap 126 relates to an overlap 126 of at least two of the workflow artifacts 122 caused by the inserted workflow artifact 122a. In many cases, the inserted workflow artifact 122a and the subsequent workflow artifact 122f may overlap.
[0125] By way of example, the above-described triage artifact 140 may correspond to the decision workflow artifact 122 explained above.
[0126] In another example, the following workflow artifact 122f may be a merged artifact 148 of a partial flow 142 of a merged workflow 124, wherein the application software component 106 and / or the processor 102 may be further configured to: determine a flow direction 128 of the workflow 124 from a workflow artifact 122pp preceding a previous workflow artifact 122p to the previous workflow artifact 122p; and determine an updated workflow 124' by moving the previous workflow artifact 122p in a direction opposite to the determined flow direction 128 at least until the determined overlap 126 is removed.
[0127] Additionally, in these examples, preserving the layout of the workflow 124 may be challenging. To meet this challenge, an updated workflow 124' may be determined by moving a previous workflow artifact 122p in a direction opposite to the determined flow direction 128 at least until the determined overlap 126 is removed. Additionally, the opposite direction may therefore mean that the direction of movement of the previous workflow artifact 122p is exactly opposite or rotated 180° relative to the determined flow direction 128. In the present invention, the previous workflow artifact 122p may be the workflow artifact 122p that precedes the inserted workflow artifact 122a, and the workflow artifact 122pp may be before the previous workflow artifact 122p. In some examples, all workflow artifacts 122p that precede the inserted workflow artifact 122a may be moved in a direction opposite to the determined flow direction 128, at least until the determined overlap 126 is removed.
[0128] In some examples, the updated workflow 124 ′ may be further determined by placing the inserted artifact 122 a at the initial location 144 or 130 where the previous artifact 122 p was initially located.
[0129] By way of example, the above-described merged artifact 148 may correspond to the merged workflow artifact 122 explained above.
[0130] In another example, the application software component 106 and / or the processor 102 may also be configured to deploy the development app 120 including the updated workflow 124 ′ on the corresponding target device 150 of the app 120 .
[0131] The target device 150 (type) may be, for example: a mobile platform (such as a smart phone, smart watch, handheld, tablet, laptop, etc.) or a desktop device (such as a desktop computer) or other "smart" device (such as a smart TV, refrigerator, home or industrial automation equipment), where a smart TV may be, for example, a TV with integrated Internet capabilities or a set-top box for a TV that provides more advanced computing capabilities and connectivity than contemporary basic TVs. Different types of platforms may involve different operating systems, such as linux, unix, iOS, macOS, Microsoft Windows, etc. It should be understood that the user who develops the app 150 ("app developer") may be (and usually is) a different person from the user who uses or runs the app 120 deployed on his or her target device 150 ("app customer", "customer user" or "end user").
[0132] Further, as an example, the corresponding target device 150 may be or may include a manufacturing operations management (MOM) system, a manufacturing execution system (MES) and an enterprise resource planning (ERP) system, a supervisory control and data acquisition (SCADA) system or any combination thereof.
[0133] As an example, app 120 may be deployed in the runtime of the corresponding target device 150. In the present invention, the runtime of the corresponding target device 150 may be understood as a runtime system that mainly implements part of the execution model, which is also referred to as a runtime environment. When the runtime system is considered to be different from the runtime environment (RTE), the former may be defined as a specific part of the application software (IDE) for programming, a software that provides a more convenient environment for programmers to run programs during their production (testing and the like); while the latter (RTE) will be a just example of the execution model applied to the development program, which itself runs in the aforementioned runtime system. The runtime environment can provide an environment in which the program (app 120 in the present invention) runs. The environment can solve multiple problems, including the management of application memory, how the program or app 120 accesses variables, a mechanism for passing parameters between programs, and interface connections with the operating system, etc. Typically, the runtime system will have some responsibilities for establishing and managing stacks and heaps, and may include features such as garbage collection, threads, or other dynamic features built into the language.
[0134] In addition, if the activities required to make the app 120 available to the app user on the corresponding target device 150 are completed, the app 120 can be understood to have been deployed. The app deployment process may include several interrelated activities and possible transitions between them. These activities may occur at the producer side (e.g., app developer) or at the consumer side (app user or end user) or both. In some examples, the app deployment process may include at least the release of the app 120 and the installation and activation of the app 120. The release activity may follow the completed development process and is sometimes classified as part of the development process rather than the deployment process. It may include the operations required to prepare the system (here: for example, the app development platform 118 or the online app store) for assembly and transmission to the computer system (multiple computer systems) (here: for example, the corresponding target device 150), on which the release activity will be run in production. Therefore, it may sometimes involve: determining the resources required for the system to operate at tolerable performance, and planning and / or documenting the subsequent activities of the deployment process. For simple systems, installation of app 120 may involve setting up some form of command, shortcut, script, or service for executing (manually or automatically) the software of app 120. For complex systems, it may involve configuration of the system, perhaps by asking the end user questions about the intended app usage, or asking them directly how they want the system configured, and / or making all required subsystems readily available. Activation may be the activity of launching the software or executable component of app 120 for the first time (this should not be confused with the common use of the term "activation" with respect to software licensing, which is a function of digital rights management systems).
[0135] Once the app 120 has been deployed on or in the runtime of a respective target device 150 , the app 120 may be run or operated.
[0136] For example, the application software component 106 and / or the processor 102 can be further configured to: enable the updated workflow 124' of the developed app 120 to be applied to the input data 152 to generate output data 154; and enable the use of the generated output data 154 to analyze, monitor, operate and / or control the corresponding target device 150 or a device connected to the corresponding target device 150; and / or enable the use of the generated output data 154 to analyze and / or monitor the user of the corresponding target device 150.
[0137] Once the app 120 has been deployed on or in runtime of the target device 150 , the app 120 may be run or operated, which may imply that a modified workflow 124 ′ of the app 120 may act on (real-time) input data 152 to produce (actionable) output data 154 .
[0138] For example, the respective target device 150 may not be connected to the app development platform 118 or the Internet, e.g., when or after the developed app 120 is deployed on the respective target device 150 of the app 120. Further, in some examples, when or after the modified workflow 124′ of the developed app 120 is applied to the input data 132, the respective target device 150 may not be connected to the app development platform 118 or the Internet.
[0139] In some examples, target device 150 may include or may be app development platform 118 .
[0140] In an exemplary embodiment, the app 120 may be deployed on a respective target device 150. In some examples, the respective target device 150 may be physically connected or communicatively connected to the other device or connected so that the respective target device 150 may detect at least input data 152 from the other device, for example, by optically inspecting the other device. In some examples, the other device may be or may include a sensor, an actuator (such as a motor, a valve, or a robot), an inverter for powering a motor, a gearbox, a programmable logic controller (PLC), a communication gateway, and / or other components generally related to industrial automation products and industrial automation. The respective target device 150 may be part of a complex production line or production plant (e.g., a bottling machine, a conveyor belt, a welding machine, a welding robot, etc.).
[0141] In some examples, if the other devices belong to a lower level of the automation pyramid, such as a sensor / actuator or field level, then the corresponding target device 150 may belong to a higher level of the automation pyramid, such as a field level or a control level.
[0142] In this case, the corresponding target device 150 can be caused or triggered, for example, by the app development platform 118, to apply the modified workflow 124' to the input data 152 to generate output data 154. The generated output data 154 can be used to analyze, monitor, operate and / or control the corresponding target device 150 or other devices. In another example, the corresponding target device 150 can be caused or triggered, for example, by the app development platform 118, to use the generated output data 154 to analyze, monitor, operate and / or control the corresponding target device 150 or other devices. In some examples, the steps mentioned can be performed directly by the app development platform 118.
[0143] In further examples, the respective target devices 150 may also be caused or triggered, for example, by the app development platform 118, to apply the updated workflow 124' to the input data 152 to generate output data 154. The generated output data 154 may be used to analyze and / or monitor the users of the respective target devices 150. In further examples, the respective target devices 150 may be caused or triggered, for example, by the app development platform 118, to analyze and / or monitor the users of the respective target devices 150 using the generated output data 154. In some more unique examples, the respective target devices 150 may be or may include a smart phone, smart watch, handheld, tablet, laptop, etc., and the other device may be a person (e.g., the end user of the respective target device 150) or an animal or plant, where the modified workflow 124' and the app 120 may be used to analyze or monitor the health, behavior, etc. of the person, animal, or plant. In some examples, the steps mentioned may be performed directly by the app development platform 118.
[0144] It should also be appreciated that in other examples, only new overlaps 126 may be detected, and in some examples, pre-existing old overlaps may not be considered or attempted to be resolved.
[0145] By way of example, the following set of rules may be applied, whereby an object may be understood as the above-mentioned workflow artifact 122:
[0146] Rule 1: If a new object overlaps an object that is (indirectly) connected to the previous object, the new object should be moved. This rule can avoid distorting the layout of the workflow 124.
[0147] Exception: Moving overlapping connected objects is allowed if they are oriented in the same direction as the nudge or move and they are on one side of the new object.
[0148] Rule 2: If overlapping objects are not connected to previous objects, move those objects instead of moving the new object.
[0149] Rule 3: If the new object overlaps with an object that is not connected to the previous object (which is on the far side of the origin), move the new object.
[0150] These rules can be run in the order described above.
[0151] As explained above, moving one of the workflow artifacts 122 may result in a new overlap 126 , which should also be resolved.
[0152] Typically, in most examples, the front object should not be moved.
[0153] It should be appreciated that the application software component 106 and / or the processor 102 described above may perform similar methods of managing the app 120 , particularly developing the app 120 including updates to the workflow 124 of the app 120 .
[0154] also, Figure 1 A computer-readable medium 160 is shown that may include a computer program product 162 , wherein the computer program product 162 may be encoded with executable instructions that, when executed, cause the computer system 100 and / or the app development platform 118 to implement the above-described methods.
[0155] For the sake of completeness, a brief description Figure 1 1 and 12. Two app development UIs 116 are shown. In the upper app development UI 116, the insertion of an additional workflow artifact 122a into a workflow 124 is shown, wherein the workflow 124 may already include a previous workflow artifact 122p and a subsequent workflow artifact 122f. An overlap 126 of the inserted workflow artifact 122a and the subsequent workflow artifact 122f may be determined, which overlap may be caused by the insertion of the additional workflow artifact 122a. Further, a flow direction 128 of the workflow 124 may be determined, wherein the flow direction 128 may lead from the previous workflow artifact 122p to the subsequent workflow artifact 122f. The subsequent workflow artifact 122f may be determined as a workflow artifact 122m that may need to be moved to remove the determined overlap 126, wherein the subsequent workflow artifact 122f may need to be moved along the determined flow direction 128 as shown by the dashed arrow.
[0156] In the lower app development UI 116, the state of the workflow 124 after the insertion of the additional workflow artifact 122a is shown. And the updated workflow 124' can be obtained by moving the inserted workflow artifact 122a along the determined flow direction 128 until the overlap 126 is removed. According to the updated workflow 124', the previous workflow artifact 122p may be followed by the inserted workflow artifact 122a, and the inserted workflow artifact may be followed by the next workflow artifact 122f.
[0157] By way of example, the additional workflow artifact 122a may be placed at or near the initial location of the subsequent workflow artifact 122f, such as toward the previous workflow artifact 122p, to obtain a modified workflow 124'.
[0158] refer to Figure 2 , illustrates a functional block diagram of another exemplary computer system or data processing system 100 that facilitates management of an app 120 , and in particular, development of an app 120 including a workflow 124 for updating the app 120 .
[0159] In this example, the captured user intent and the trained function 132 can be used to determine the location 130 in the workflow 124 where the additional workflow artifact 122a is to be inserted. As an example, the determined location 130 can be displayed to the user, and the user can approve the determined location 130 through his or her interaction with the app development UI 116.
[0160] Further, the app 120 including the updated workflow 124' can be deployed on the target device 150. The updated workflow 124' of the developed and deployed app 120 can be applied to the input data 152 to generate the output data 154. For example, the input data 152 can be provided by the target device 150, other devices, devices connected to the target device 150, or a user of the target device. In some examples, the generated output data 154 can be used to analyze, monitor, operate and / or control the target device 150 or a device connected to the target device 150. In other examples, the generated output data 154 can be used to analyze and / or monitor the user of the target device.
[0161] Figure 3 A flow chart illustrating an exemplary method of facilitating management of apps in a production system.
[0162] exist Figure 3 , a workflow 124 is shown, which may include a previous workflow artifact 122p and a subsequent workflow artifact 122f, wherein a flow direction 128 of the workflow 124 may be determined to be directed from the previous workflow artifact 122p to the subsequent workflow artifact 122f. An additional workflow artifact 122a may be inserted into the workflow 124, and an overlap 126 of the additional workflow artifact 122a and the subsequent workflow artifact 122f may be generated. The overlap 126 may be determined, and it may be further determined that the subsequent workflow artifact 122f may be a workflow artifact 122m that will be moved along the determined flow direction 128 to avoid the determined overlap 126.
[0163] Figure 3 The lower part of shows an updated workflow 124', which can be obtained by moving the determined workflow artifact 122m (in this case, the subsequent workflow artifact 122f) along the determined flow direction 128 at least until the determined overlap 126 is removed. According to the updated workflow 124', the previous workflow artifact 122p may be followed by the inserted workflow artifact 122a, and the inserted workflow artifact may be followed by the subsequent workflow artifact 122f.
[0164] For example, the additional workflow artifact 122a may be placed at or near the initial position of the subsequent workflow artifact 122f, such as toward the previous workflow artifact 122p, to obtain the modified workflow 124'.
[0165] Figure 4 A flow chart illustrating another exemplary method of facilitating management of apps in a production system.
[0166] exist Figure 4 In the upper half of the figure, a workflow 124 is shown, which may include a previous workflow artifact 122p, a workflow artifact 122r, and a subsequent workflow artifact 122f, wherein a flow direction 128 of the workflow 124 may be determined to be directed from the previous workflow artifact 122p to the subsequent workflow artifact 122f. A user may choose to remove the workflow artifact 122r, which may cause a gap 134 between the previous workflow artifact 122p and the subsequent workflow artifact 122f.
[0167] Figure 4 The lower part of shows an updated workflow 124', which can be obtained by moving the next workflow artifact 122f (in this case the workflow artifact 122m to be moved) in the direction opposite to the determined flow direction 128 at least until the determined gap 134 is closed. According to the updated workflow 124', the previous workflow artifact 122p can be followed by the next workflow artifact 122f.
[0168] Figure 5 A flow chart illustrating yet another exemplary method of facilitating management of apps in a production system.
[0169] exist Figure 5, a more complex workflow 124 is shown, which may include several sequentially arranged workflow artifacts 122pp, 122p, 122f, and 122ff, wherein workflow artifact 122ff is a branching artifact 140 that initiates two partial flows 142 of the workflow 124. The upper partial flow 142 includes only workflow artifact 122fffa, and the lower partial flow 142 includes another sequence of workflow artifacts 122fffb, 122-4fb, 122-5fb, 122-6fb. It is noteworthy that the workflow has a U-shape, wherein the opening of the U points to the left.
[0170] The additional workflow artifact 122a may be inserted into the workflow 124 and may cause an overlap 126 of the additional workflow artifact 122a with a subsequent workflow artifact 122f. The overlap 126 may be determined, and it may be further determined that the subsequent workflow artifact 122f may be the workflow artifact 122m that will be moved along the determined flow direction 128 to avoid the determined overlap 126.
[0171] In addition, a moving boundary line 146 in the workflow 124 may be determined, wherein the moving boundary line 146 intersects with the previous workflow artifact 122p and is perpendicular to the determined flow direction 128. In the present invention, the workflow artifacts 122pp, 122p, 122-5fb, and 122-6fb are arranged at positions of the moving boundary line 146 that are opposite to the inserted workflow artifact 122a. In some examples, in order to update the workflow 124 to obtain an updated workflow 124', only the workflow artifacts 122 in the workflow 124 that are arranged at the same position of the moving boundary line 146 as the inserted workflow artifact 122a may be moved.
[0172] Figure 5 The lower half of 140 shows an updated workflow 124' that can be obtained thereby, i.e., by moving only the workflow artifacts 122 in the workflow 124 that are arranged at the same position of the movement boundary line 146 as the inserted workflow artifact 122a, i.e., in this case, only the workflow artifacts 122f, 122ff, 140, 122fffa, 122fffb, 122-4fb are moved. Therefore, the updated workflow 124' can be obtained without moving the workflow artifacts 122pp, 122p, 122-5fb, and 122-6fb.
[0173] For example, the additional workflow artifact 122a may be placed at or near the initial position of the subsequent workflow artifact 122f, such as toward the previous workflow artifact 122p, to obtain the modified workflow 124'.
[0174] Figure 6A flow chart illustrating another exemplary method for facilitating managing apps in a production system is shown.
[0175] exist Figure 6 , a more complex workflow 124 is shown, which may include a workflow artifact 122pp, which is followed by branching artifacts 122p, 140 that may initiate three sub-flows 142. The upper sub-flow 142 may include two sequentially arranged workflow artifacts 122f and 122ff. The middle sub-flow 142 may include only one workflow artifact 122sp2, and the lower sub-flow 142 may also include only one workflow artifact 122sp3.
[0176] The additional workflow artifact 122a may be inserted into the upper stream 142 of the workflow 124 and may cause an overlap 126 of the additional workflow artifact 122a with the subsequent workflow artifact 122f. In this example, a flow direction 128 of the workflow 124 may be determined from the subsequent workflow artifact 122f to the workflow artifact 122ff after the subsequent workflow artifact 122f. The overlap 126 may be determined, and it may be further determined that the subsequent workflow artifact 122f may be a workflow artifact 122m that is moved along the determined flow direction 128 to avoid the determined overlap 126. Furthermore, an update to the workflow 124′ may be determined by arranging the inserted artifact 122a at the initial position 144 of the subsequent artifact 122f and by moving the subsequent workflow artifact 122f along the determined flow direction 128 at least until the overlap 126 of the inserted workflow artifact 122a with the subsequent workflow artifact 122f is removed.
[0177] Figure 6 The lower part of the diagram shows an updated workflow 124', which can be obtained by moving the next workflow artifact 122f along the determined flow direction 128 and then moving the workflow artifact 122ff after the next artifact 122f. Therefore, the upper flow 142 now includes three sequentially arranged workflow artifacts 122a, 122f and 122ff, wherein the layout of the original workflow 124 can be retained.
[0178] Figure 7 A flow chart illustrating yet another exemplary method of facilitating management of apps in a production system.
[0179] exist Figure 7, a workflow 124 is shown which may include two partial streams 142. The upper partial stream 142 may include two sequentially arranged workflow artifacts 122pp and 122p, and the lower partial stream 142 may include one workflow artifact 122pf2. The two partial streams 142 may be merged by the latter workflow artifact 122f being a merge artifact 148. An additional workflow artifact 122a may be inserted into the upper partial stream 142 of the workflow 124, and may cause an overlap 126 of the additional workflow artifact 122a with the former workflow artifact 122p.
[0180] The flow direction 128 of the workflow 124 may be determined to be directed from the workflow artifact 122pp preceding the previous workflow artifact 122p to the previous workflow artifact 122p. An updated workflow 124' may then be obtained by moving the previous workflow artifact 122p in a direction opposite to the determined flow direction 128 at least until the determined overlap 126 is removed.
[0181] Figure 7 The lower half of the diagram shows an updated workflow 124', which can be obtained by moving the previous workflow artifact 122p and the workflow artifact 122p before the previous workflow artifact 122p. Therefore, the upper flow 142 now includes three sequentially arranged workflow artifacts 122pp, 122p and 122a, wherein the layout of the original workflow 124 can be preserved.
[0182] For example, the additional workflow artifact 122a may be placed at or near the initial location of the previous workflow artifact 122p, eg, toward the workflow artifact 122pp preceding the previous workflow artifact 122p, to obtain a modified workflow 124'.
[0183] Figure 8 A flow chart illustrating another exemplary method for facilitating managing apps in a production system is shown.
[0184] exist Figure 8 In the upper third of FIG. 1 , a workflow 124 is shown, which may include a first workflow artifact 122pp, which may be followed by a loop 136 including sequentially arranged workflow artifacts 122p and 122f. Loop 136 may be followed by a final workflow artifact 122lf, where the loop may have a loop size 138. An additional workflow artifact 122a may be inserted into loop 136, which may cause the inserted workflow artifact 122a to overlap with the previous workflow artifact 122p.
[0185] A flow direction 128 from a preceding workflow artifact 122p to a succeeding workflow artifact 122f may be determined, and an updated workflow 122 ′ may be determined by moving the succeeding workflow artifact 122f (which may correspond to the to-be-moved workflow artifact 122m ) along the determined flow direction 128 to avoid the determined overlap 126 .
[0186] For example, the additional workflow artifact 122a may be placed at the initial position of the previous workflow artifact 122f or near the initial position of the subsequent workflow artifact 122f, such as toward the previous workflow artifact 122p, to obtain the modified workflow 124'.
[0187] exist Figure 8 The updated workflow 124' is shown in the center third of FIG. The moved subsequent workflow artifacts 122f, 122m included in the loop 136 now overlap with the loop boundary 139. The overlap 126 and the flow direction 128 from the subsequent workflow artifact 122f to the workflow artifact 122lf after the loop 136 can be determined. The updated workflow 124" can be obtained by extending the loop size 138 along the determined flow direction 128 at least until the determined overlap 126 is removed. In the present invention, extending the loop size 138 can involve correspondingly extending the loop boundary 139 along the determined flow direction 128. Figure 8 The expansion of loop 136 , loop size 138 , and loop boundary 139 is shown by dashed arrows in the lower third of .
[0188] The updated workflow 124" Figure 8 The lower third of Fig. 9 is shown in the upper part of .
[0189] Fig. 9 A flow chart illustrating yet another exemplary method of facilitating managing apps in a production system.
[0190] Fig. 9 The upper part of the diagram shows an updated workflow 124", which can be Figure 8 The process shown and the process described above are obtained. Expanding the loop size 138 and the loop boundary 139 can cause the expanded loop boundary 139 to overlap 126 with the workflow artifact 1221f after the loop 136. The flow direction 128 can be determined to point from the expanded loop 136 to the workflow artifact 1221f after the loop 136. Then, an updated workflow 124'' can be obtained by moving the workflow artifact 1221f after the loop 136 (which can now be the workflow artifact 122m to be moved) along the determined flow direction 128 at least until the determined overlap 126 is removed.
[0191] The updated workflow 124"' Fig. 9 is shown in the lower half of FIG.
[0192] See now Fig.10 , a method M for facilitating the management of apps (eg, developing apps including functionality for importing training) is shown. The method may start at M02, and the method may include a plurality of actions performed by the execution of at least one processor.
[0193] The actions may include: action M04: providing an app development user interface (UI) for developing an app to a user; action M06: displaying at least two workflow artifacts of the workflow of the app to the user in the app development UI; action M08: capturing a user's intention to insert an additional workflow artifact into the workflow in response to the user's interaction with the app development UI; action M10: inserting the additional workflow artifact into the workflow according to the captured user's intention; action M12: determining an overlap of at least two workflow artifacts caused by the inserted workflow artifacts; action M14: determining a flow direction of the workflow from a previous workflow artifact to a subsequent workflow artifact, The previous workflow artifact and the next workflow artifact are respectively before and after the inserted workflow artifact; action M16: determining that the workflow needs to be moved along the determined flow direction to avoid at least one of the determined overlapping workflow artifacts; action M18: determining an updated workflow by moving the corresponding determined workflow artifact in the direction of the determined flow direction at least until the determined overlap is removed; action M20: displaying at least the previous workflow artifact, the inserted workflow artifact, and the next workflow artifact to the user in the app development UI; and action M22: developing an app through the app development UI by using the updated workflow. At M24, the method may end.
[0194] It should also be understood that method M may include other actions and features previously discussed with respect to the computer-implemented method of managing apps, particularly developing apps including workflows for updating apps.
[0195] Fig.11A block diagram of a data processing system 1000 (also referred to as a computer system) is shown, wherein embodiments may be implemented as, for example, part of a production system and / or other systems that are operably configured by software or otherwise perform processes as described herein. The data processing system 1000 may include, for example, a computer or IT system or the 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 north bridge, a south bridge). For example, one of the buses 1004 may include one or more I / O buses, such as a PCI Express bus. Also connected to various buses in the depicted example may include 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, south bridge) may be integrated with the CPU (on the same chip or die). Examples of CPU architectures include IA-32, x86-64, and ARM processor architectures.
[0196] Other peripheral devices connected to one or more buses may include a communication controller 1012 (Ethernet controller, WiFi controller, cellular controller), which can be operated 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 a communication device.
[0197] Other components connected to the various buses may include one or more I / O controllers 1016, such as a USB controller, a Bluetooth controller, and / or a dedicated audio controller (connected to a speaker and / or microphone). It should also be understood that various peripheral devices can be connected to the I / O controller (multiple controllers) (via various ports and connections), including: input devices 1018 (e.g., keyboards, mice, pointers, touch screens, touch pads, drawing tablets, trackballs, buttons, keypads, game controllers, game pads, cameras, microphones, scanners, motion sensing devices that capture motion gestures), output devices 1020 (e.g., printers, speakers), or any other type of device that can be operated to provide input to the data processing system or receive output from the data processing system. In addition, it should be understood that many devices referred to as input devices or output devices can both provide inputs that communicate with the data processing system and receive outputs that communicate with the data processing system. For example, the processor 1002 can be integrated into a housing (such as a tablet) that includes a touch screen that serves as both an input device and a display device. Further, it should be understood that some input devices (such as laptop computers) can include multiple different types of input devices (e.g., touch screens, touch pads, keyboards). Furthermore, it should be appreciated that other peripheral hardware 1022 connected to I / O controller 1016 may include any type of device, machine, or component configured to communicate with a data processing system.
[0198] Additional components connected to various buses may include one or more storage controllers 1024 (e.g., SATA). The storage controller may be connected to a storage device 1026, such as one or more storage drives and / or any associated removable media, which may be any suitable non-temporary machine-available or machine-readable storage medium. Examples include non-volatile devices, volatile devices, read-only devices, writable devices, ROM, EPROM, tape storage, floppy disk drives, hard drives, solid-state drives (SSD), flash memory, optical disk drives (CD, DVD, Blu-ray), and other known optical, electrical or magnetic storage device drivers and / or computer media. In addition, in some examples, a storage device such as an SSD may be directly connected to an I / O bus 1004 such as a PCI Express bus.
[0199] The data processing system according to an embodiment of the present disclosure may include an operating system 1028, software / firmware 1030, and data storage 1032 (which may be stored on storage device 1026 and / or memory 1006). Such an operating system may use a command line interface (CLI) shell and / or a graphical user interface (GUI) shell. The GUI shell allows multiple display windows to be presented simultaneously in a graphical user interface, wherein each display window provides an interface to different applications or different instances of the same application. The cursor or pointer in the graphical user interface can be manipulated by a user through a clicking device such as a mouse or a touch screen. The position of the cursor / pointer can be changed and / or an event such as clicking a mouse button or a touch screen touch can be generated to actuate the desired response. Examples of operating systems that can be used in a data processing system may include Microsoft Windows, Linux, UNIX, iOS, and Android operating systems. In addition, examples of data storage include data files, data tables, relational databases (e.g., Oracle, Microsoft SQL Server), database servers, or any other structure and / or device capable of storing data that can be retrieved by a processor.
[0200] Communication controller 1012 may be connected to a network 1014 (not part of data processing system 1000), which may be any public or private data processing system network or combination of networks known to those skilled in the art, including the Internet. 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 several data processing systems may communicate via one or more network connections and may collectively perform tasks described as being performed by a single data processing system. Therefore, it should be understood that when referring to a data processing system, such a system may be implemented across multiple data processing systems, which are organized in a distributed system and communicate with each other via a network.
[0201] Furthermore, the term "controller" refers to any device, system, or portion thereof that controls at least one operation, whether such device is implemented in hardware, firmware, software, or some combination of at least two of them. It should be noted that the functionality associated with any particular controller may be centralized or distributed, whether locally or remotely.
[0202] In addition, it should be understood that the data processing system can be implemented as a virtual machine architecture or a virtual machine in a cloud environment. For example, processor 1002 and associated components can correspond to a virtual machine executed in a virtual machine environment of one or more servers. Examples of virtual machine architectures include VMware ESCi, Microsoft Hyper-V, Xen, and KVM.
[0203] Those of ordinary skill in the art will appreciate that the hardware depicted for the data processing system may vary for a specific implementation. For example, the data processing system 1000 in this example may correspond to a computer, a workstation, a server, a PC, a laptop, a tablet, a mobile phone, and / or any other type of device / system that is operable to process data and perform the above-described functions and features associated with the operation of the data processing system, computer, processor, and / or controller discussed in the present invention. The above examples are provided for illustrative purposes only and are not meant to imply architectural limitations with respect to the present disclosure.
[0204] Furthermore, it should be noted that the processor described in the present invention may be located in a server remote from the display device and input device described in the present invention. In such examples, the above-mentioned display device and input device may be included in a client device that communicates with a server (and / or a virtual machine executed on a server) via a wired or wireless network (which may include the Internet). In some embodiments, for example, such a client device may execute a remote desktop application or may correspond to a portal device that executes a remote desktop protocol with a server so as to send input from an input device to the server and receive visual information from the server for display through a display device. Examples of these remote desktop protocols include Teradici's PCoIP, Microsoft's RDP, and RFB protocols. In these examples, the processor described in the present invention may correspond to a virtual processor of a virtual machine executed in a physical processor of a server.
[0205] 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 executed on a processor, or a processor. Additionally, a component or system may be located on a single device or distributed across several devices.
[0206] Furthermore, as used herein, a processor corresponds to any electronic device that is configured to process data via hardware circuitry, software, and / or firmware. For example, a processor as described herein may correspond to one or more (or a combination thereof) of a microprocessor, a CPU, an FPGA, an ASIC, or any other integrated circuit (IC) or other type of circuit capable of processing data in a data processing system and may have the form of a control board, a computer, a server, a mobile phone, and / or any other type of electronic device.
[0207] Those skilled in the art will recognize that, for the sake of simplicity and clarity, the complete structure and operation of all data processing systems suitable for use with the present disclosure are not depicted or described in the present invention. Instead, only that much of the data processing system that is unique to the present disclosure or necessary to understand the present disclosure is depicted and described. The remainder of the structure and operation of data processing system 1000 may follow any of a variety of current implementations and practices known in the art.
[0208] In addition, it should be understood that, unless explicitly limited in some examples, the words or phrases used in the present invention should be interpreted broadly. For example, the terms "include" and "comprise" and their derivatives are meant to include but are not limited to. Unless the context clearly indicates otherwise, the singular forms "one", "an" and "the" are intended to also include plural forms. In addition, the term "and / or" as used in the present invention refers to and includes any and all possible combinations of one or more related listed items. Unless the context clearly indicates otherwise, the term "or" is inclusive, meaning and / or. The phrases "associated with..." and "associated with it" and their derivatives can mean including, included in, interconnected with, included in, included in, connected to or connected with, coupled to or coupled with, communicated with, collaborated with, interlaced, juxtaposed, close to, bound to or bound with, have, have... attributes, etc.
[0209] Moreover, although the terms "first", "second", "third", etc. may be used in the present invention to describe various elements, functions or actions, these elements, functions or actions should not be limited by these terms. On the contrary, these numerical adjectives are used to distinguish different elements, functions or actions from each other. For example, without departing from the scope of the present disclosure, a first element, function or action may be referred to as a second element, function or action, and similarly, a second element, function or action may be referred to as a first element, function or action.
[0210] In addition, phrases such as "the processor is configured to" perform one or more functions or processes may refer to the processor being operably configured to or operably configured to perform the function or process via software, firmware, and / or wired circuitry. For example, a processor configured to perform a function / process may correspond to a processor executing software / hardware that is 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 available for execution 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) that is specially manufactured or "wired" to perform the function or process. In addition, the phrase "at least one" preceding an element (e.g., a processor) that is configured to perform more than one function may correspond to one or more elements (e.g., processors) that each perform the function, and may also correspond to two or more elements (e.g., processors) that each perform different functions of the one or more different functions.
[0211] In addition, the term “adjacent” may mean that: an element is relatively close to another element but not in contact with the other element; or the element is in contact with the other element, unless the context clearly indicates otherwise.
[0212] Although the exemplary embodiments of the present disclosure have been described in detail, those skilled in the art will understand that they may make various changes, substitutions, variations and alterations herein without departing from the spirit and scope of the disclosure in its broadest form.
[0213] Nothing in this patent document should be construed as implying that any particular element, step, act, or function is an essential element that must be included in the claims scope: the scope of the patented subject matter is limited solely by the issued claims.
Claims
1. A computer-implemented method for creating an app (120), comprising: Providing an app development user interface (UI) (116) to a user for developing the app (120); Displaying at least two workflow artifacts (122) of a workflow (124) of the app (120) to the user in an app development UI (116); In response to the user interacting with the app development UI (116), capturing a user intent to insert an additional workflow artifact (122a) into the workflow (124); Inserting the additional workflow artifact (122a) into the workflow (124) based on the captured user intent; determining an overlap (126) of at least two of the workflow artifacts (122) caused by the inserted workflow artifact (122a); Determining a flow direction (128) of the workflow (124) from a previous workflow artifact (122p) to a subsequent workflow artifact (122f), the previous workflow artifact and the subsequent workflow artifact (122p, 122f) being respectively before and after the inserted workflow artifact (122a); determining at least one workflow artifact (122m) of the workflow (124) that needs to be moved along the determined flow direction (128) to avoid the determined overlap (126); determining an updated workflow (124') by moving the corresponding determined workflow artifact (122m) along the determined flow direction (128) at least until the determined overlap (126) is removed; Displaying at least the previous workflow artifact (122p), the inserted workflow artifact (122a), and the next workflow artifact (122f) to the user in the app development UI (116); Developing the app (120) through the app development UI (116) by using the updated workflow (124'); Determining a moving boundary line (146) in the workflow (124), wherein the moving boundary line (146) intersects the previous workflow artifact (122p) and is perpendicular to the determined flow direction (128); and The updated workflow (124') is determined by moving only one or more workflow artifacts (122) arranged in the workflow (124) that are located on the same side of the movement boundary line (146) as the inserted workflow artifact (122a) or the removed workflow artifact (122r).
2. The computer-implemented method of claim 1 , further comprising: • Determining at least one location (130) in the workflow (124) at which to insert the additional workflow artifact (122a) using the captured user intent and the trained function (132).
3. The computer-implemented method of claim 2, further comprising: Displaying the corresponding determined location (130) to the user in the app development UI (116); In response to the user interacting with the app development UI (116), capturing a user intent to approve at least one of the corresponding determined locations (130).
4. The computer-implemented method of any preceding claim, further comprising: Moving the workflow artifact (122) of the workflow (124) following the inserted workflow artifact (122a) along the determined flow direction (128) at least until the determined overlap (126) is removed.
5. The computer-implemented method according to any one of claims 1 to 3, further comprising: determining an overlap (126) of at least two of the workflow artifacts (122) caused by a previously moved workflow artifact (122m); Determining a flow direction (128) of the workflow (124) from the previous workflow artifact (122p) to the next workflow artifact (122f), the previous workflow artifact (122p) and the next workflow artifact (122f) being respectively before and after the previously moved workflow artifact (122m); determining at least one workflow workpiece (122 mm) in the workflow (124) that needs to be moved along the determined flow direction (128) to avoid the determined overlap (126); and Determining an updated workflow (124') by moving the corresponding determined workflow workpiece (122 mm) along the determined flow direction (128) at least until the determined overlap (126) is removed.
6. The computer-implemented method of any one of claims 1 to 3, further comprising: In response to the user interacting with the app development UI (116), capturing a user intent to remove a selected workflow artifact (122r) from the workflow (124); · removing selected workflow artifacts (122r) from the workflow (124) based on the captured user intent; Determining a gap (134) between the previous workflow artifact (122p) and the next workflow artifact (122f), the previous workflow artifact (122p) and the next workflow artifact (122f) respectively preceding and following the removed workflow artifact (122r); Determining a flow direction (128) of the workflow (124) from the preceding workflow artifact (122p) to the succeeding workflow artifact (122f); and Determining the updated workflow (124') by moving the subsequent workflow workpiece (122f) in a direction opposite to the determined flow direction (128) until the determined gap (134) is closed.
7. A computer-implemented method according to any one of claims 1 to 3, in, The inserted workflow artifact (122a) is inserted into a loop (136) of the workflow artifact (122), the loop (136) having a loop size (138) and a loop boundary (139), The method further comprises: determining an overlap (126) of a workflow artifact (122) included by the loop (136) with the loop boundary (139), the overlap (126) being caused by a workflow artifact (122a) inserted into the loop (136); and by extending the loop size (138) of the loop (136) along the determined flow direction (128) at least until the determined overlap (126) is removed, to determine the updated workflow (124').
8. The computer-implemented method of claim 7, further comprising: Determining an overlap (126) of an extended cycle (136) with a workflow artifact (1221f) following the cycle (136); determining a flow direction (128) of the workflow (124) from the extended loop (136) to the workflow artifact (1221f) after the loop (136); and Determining the updated workflow (124') by moving the workflow artifact (1221f) following the loop (136) along the determined flow direction (128) at least until the determined overlap (126) is removed.
9. A computer-implemented method according to any one of claims 1 to 3, in, The previous workflow artifact (122p) is a branching artifact (140) that initiates a partial flow (142) of the workflow (124), The method further comprises: Determine the workflow (124) from the next workflow artifact (122f) a flow direction (128) to a workflow artifact (122ff) following the next workflow artifact (122f); Determining the updated workflow (124') by arranging the inserted workflow artifact (122a) at the initial position (144) of the subsequent artifact (122f) and by moving the subsequent workflow artifact (122f) along the determined flow direction (128) at least until the determined overlap (126) is removed.
10. A computer-implemented method according to any one of claims 1 to 3, in, The latter workflow artifact (122f) is a merged artifact (148) that merges the partial flows (142) of the workflow (124), The method further comprises: Determine that the workflow (124) is derived from the previous workflow artifact (122p) a flow direction (128) of a previous workflow artifact (122pp) to said previous workflow artifact (122p); Determining the updated workflow (124') by moving the previous workflow artifact (122p) in a direction opposite to the determined flow direction (128) at least until the determined overlap (126) is removed.
11. The computer-implemented method of any one of claims 1 to 3, wherein: The workflow (124) intersects the determined moving boundary line (146) at least twice, and wherein optionally, the workflow comprises a U-shape, an S-shape, or a Z-shape.
12. The computer-implemented method of any one of claims 1 to 3, further comprising: • Deploying the development app (120) including the updated workflow (124') on a corresponding target device (150) of the app (120).
13. The computer-implemented method of claim 12, further comprising: causing the updated workflow (124') of the developed app (120) to be applied to the input data (152) to generate output data (154); and causing the generated output data (154) to be used to analyse, monitor, operate and / or control the respective target device (150) or a device connected to the respective target device (150); and / or · enabling use of the generated output data (154) to analyze and / or monitor a user of the respective target device (150).
14. A computer system (100) arranged and configured to perform the steps of the computer-implemented method according to any one of the preceding claims.
15. A computer program product (162) comprising computer program code which, when executed by a computer system (100), causes the computer system (100) to perform the method according to any one of claims 1 to 13.
16. A computer-readable medium (160) comprising a computer program product (162), the computer program product comprising computer program code, which, when executed by a computer system (100), causes the computer system (100) to perform the method according to any one of claims 1 to 13.
Citation Information
Patent Citations
Workflow development system with ease-of-use features
CN108292206A
PaaS-based application scheduling and workflow arrangement method and system
CN112783604A