Documentation

Trace:

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
workflow:documentation [2022/03/30 20:41]
robot created
workflow:documentation [2022/03/30 22:14] (current)
robot
Line 2: Line 2:
  
 ~~Title: Workflow engine Documentation~~ ~~Title: Workflow engine Documentation~~
-Version: 1.0 / 2022-03-30+Version: 1.0 / 2022-03-31
  
 ====== Introduction ====== ====== Introduction ======
Line 24: Line 24:
 To install the Workflow Add-on, launch VisionX and click "Ready Made Solutions"​ at the bottom of the screen. Then click on Add-ons on the left side of the screen under "​Categories",​ select the dropdown list next to the Workflow Engine icon and click "​Install"​. To install the Workflow Add-on, launch VisionX and click "Ready Made Solutions"​ at the bottom of the screen. Then click on Add-ons on the left side of the screen under "​Categories",​ select the dropdown list next to the Workflow Engine icon and click "​Install"​.
  
-[[./​images/​installAddOn.png|{{:./​images/​installAddOn.png}}]]+{{:workflow:​documentation:​installaddon.png?nolink|}}
  
 After the installation a restart of VisionX is necessary. After restarting, select the application you want to use, click on "​Settings"​ at the top of the screen, and select "​Modules"​. After the installation a restart of VisionX is necessary. After restarting, select the application you want to use, click on "​Settings"​ at the top of the screen, and select "​Modules"​.
Line 30: Line 30:
 A list of available modules will appear. Select the checkbox associated with the Workflow module to install the module in the application. A list of available modules will appear. Select the checkbox associated with the Workflow module to install the module in the application.
  
-[[./​images/​workflow-installAddOn2.png|{{:./images/workflow-installAddOn2.png}}]]+{{:workflow:​documentation:​workflow-installaddon2.png?nolink|}}
  
 ====== Workflow Designer ====== ====== Workflow Designer ======
Line 36: Line 36:
 To start the Workflow Designer, open your project and click the Workflow button on the right side of the screen. To start the Workflow Designer, open your project and click the Workflow button on the right side of the screen.
  
-{{:​workflow:​documentation:​startDesigner.png?​nolink|Workflow installation}}+{{:​workflow:​documentation:​startdesigner.png?​nolink|Workflow installation}}
  
 **Structure of the Workflow Designer** **Structure of the Workflow Designer**
Line 65: Line 65:
 Example: In our example, we created a new folder named '​E-mail'​ and added the workflow 'Send email'​. Example: In our example, we created a new folder named '​E-mail'​ and added the workflow 'Send email'​.
  
-[[./​images/​workflowErstellen.png|{{:./​images/​workflowErstellen.png}}]]+{{:workflow:​documentation:​workflowcreate.png?nolink|}}
  
 === Add/Delete functions === === Add/Delete functions ===
Line 73: Line 73:
 Example: To get the administrator'​s email address, we need the function '​Select One Row'. This can be found in the "​Database"​ category on the "​Functions"​ list (1). Example: To get the administrator'​s email address, we need the function '​Select One Row'. This can be found in the "​Database"​ category on the "​Functions"​ list (1).
  
-[[./​images/​addFirstStep.png|{{:./​images/​addFirstStep.png}}]]+{{:workflow:​documentation:​addfirststep.png?nolink|}}
  
 Any number of workflow steps can now be added using the same process. Any number of workflow steps can now be added using the same process.
Line 79: Line 79:
 Example: As the next step in our e-mail example, we add the function "Send E-Mail"​ from the "​Email"​ cateogry of the "​Functions"​ list. We drag the function next to our first workflow step and again an automatic connection is created between the two steps. Example: As the next step in our e-mail example, we add the function "Send E-Mail"​ from the "​Email"​ cateogry of the "​Functions"​ list. We drag the function next to our first workflow step and again an automatic connection is created between the two steps.
  
-[[./​images/​addSecondStep.png|{{:./​images/​addSecondStep.png}}]]+{{:workflow:​documentation:​addsecondstep.png?nolink|}}
  
 To delete an unwanted workflow step, right-click the step and click "​Delete"​. Alternatively,​ select the step with the left mouse button and press delete on your keyboard. To delete an unwanted workflow step, right-click the step and click "​Delete"​. Alternatively,​ select the step with the left mouse button and press delete on your keyboard.
  
-{{:​workflow:​documentation:​deleteFunction.png?​nolink|Designer}}+{{:​workflow:​documentation:​deletefunction.png?​nolink|Designer}}
  
 === Add/Delete connections === === Add/Delete connections ===
Line 89: Line 89:
 Instead of connecting two workflow steps by moving them next to each other, we can also create a connection manually. Click on the output (1) of the first step and then on the input (2) of the second step to create the connection (it also works in reverse order). Instead of connecting two workflow steps by moving them next to each other, we can also create a connection manually. Click on the output (1) of the first step and then on the input (2) of the second step to create the connection (it also works in reverse order).
  
-{{:​workflow:​documentation:​addConnection.png?​nolink|Designer}}+{{:​workflow:​documentation:​addconnection.png?​nolink|Designer}}
  
 A connection can be deleted by right-clicking on the corresponding input (1) or output (2). A connection can be deleted by right-clicking on the corresponding input (1) or output (2).
  
-{{:​workflow:​documentation:​deleteConnection.png?​nolink|Designer}}+{{:​workflow:​documentation:​deleteconnection.png?​nolink|Designer}}
  
 Example: In our example, it is not necessary to add more functions or delete connections. Example: In our example, it is not necessary to add more functions or delete connections.
Line 101: Line 101:
 Double-click on a workflow step to open the configuration window. Label (1), parameters (2) and output parameters (3) can be configured. Labels can be added for each workflow step. Parameters vary by workflow function and the output parameter only exists if the workflow function has a return value. Double-click on a workflow step to open the configuration window. Label (1), parameters (2) and output parameters (3) can be configured. Labels can be added for each workflow step. Parameters vary by workflow function and the output parameter only exists if the workflow function has a return value.
  
-{{:​workflow:​documentation:​configWindow.png?​nolink|Designer}}+{{:​workflow:​documentation:​configwindow.png?​nolink|Designer}}
  
 === Label === === Label ===
Line 142: Line 142:
 After a successful test is executed, an element tree will be displayed on the right side of the window. The fetched data (2) is displayed here with the stored output parameter. After a successful test is executed, an element tree will be displayed on the right side of the window. The fetched data (2) is displayed here with the stored output parameter.
  
-[[./​images/​outputParameter.png|{{:./​images/​outputParameter.png}}]]+{{:workflow:​documentation:​outputparameter.png?nolink|}}
  
 === Element Tree === === Element Tree ===
Line 150: Line 150:
 Clicking on the '​...'​ button (1) opens the element tree (2). A double click on the desired key selects that key as a placeholder for the parameter. In this example we used the value of the key '​EMAIL'​ (3). Clicking on the '​...'​ button (1) opens the element tree (2). A double click on the desired key selects that key as a placeholder for the parameter. In this example we used the value of the key '​EMAIL'​ (3).
  
-[[./​images/​elementtree.png|{{:./images/elementtree.png}}]]+{{:workflow:​documentation:​elementtree.png?nolink|}}
  
 The Element Tree is also displayed after a successful test of a function and in the debugger for each individual step that was performed. The Element Tree is also displayed after a successful test of a function and in the debugger for each individual step that was performed.
Line 162: Line 162:
 After the test run has been performed, the test result or an error message is displayed in the Test Result (4) area. After the test run has been performed, the test result or an error message is displayed in the Test Result (4) area.
  
-[[./​images/​testParameter.png|{{:./​images/​testParameter.png}}]]+{{:workflow:​documentation:​testparameter.png?nolink|}}
  
 **Let'​s continue editing our example workflow:** **Let'​s continue editing our example workflow:**
Line 168: Line 168:
 In the first step we read out the email address from the standard user and role administration. For this we use the database function "​Select One Row". In the first step we read out the email address from the standard user and role administration. For this we use the database function "​Select One Row".
  
-[[./​images/​addSecondStep.png|{{:./​images/​addSecondStep.png}}]]+{{:workflow:​documentation:​addsecondstep.png?nolink|}}
  
 With a double click we can configure the parameters of the step. With a double click we can configure the parameters of the step.
Line 174: Line 174:
 We assign 'get Users' as the label and get our admin user via a database query. We just have to write the SQL statement in the query text field. We assign 'get Users' as the label and get our admin user via a database query. We just have to write the SQL statement in the query text field.
  
-[[./​images/​workflowErstellenStatement.png|{{:./​images/​workflowErstellenStatement.png}}]]+{{:workflow:​documentation:​workflowcreatestatement.png?nolink|}}
  
 If you have not yet entered an e-mail address for the admin user of your application,​ please open the "User Management"​ screen on the "​Admin"​ menu in VisionX and enter an email address, so that it can be used it for this example. If you have not yet entered an e-mail address for the admin user of your application,​ please open the "User Management"​ screen on the "​Admin"​ menu in VisionX and enter an email address, so that it can be used it for this example.
  
-[[./​images/​adminuseremail.png|{{:./images/adminuseremail.png}}]]+{{:workflow:​documentation:​adminuseremail.png?nolink|}}
  
 To save the result, we enter '​USERS'​ in the "Save as" field under "​Output Parameters"​ (1). This makes the result available for all future workflow steps. To save the result, we enter '​USERS'​ in the "Save as" field under "​Output Parameters"​ (1). This makes the result available for all future workflow steps.
Line 184: Line 184:
 We can now press the 'Run Test' button (2) to test the current workflow step. In this case, we get the result of the SQL-Statement displayed under the "​USERS"​ key. We can now press the 'Run Test' button (2) to test the current workflow step. In this case, we get the result of the SQL-Statement displayed under the "​USERS"​ key.
  
-[[./​images/​workflowErstellenSendEmail3.png|{{:./​images/​workflowErstellenSendEmail3.png}}]]+{{:workflow:​documentation:​workflowcreatesendemail3.png?nolink|}}
  
 Our next step is to configure the "Send E-mail"​ step we added earlier. Our next step is to configure the "Send E-mail"​ step we added earlier.
  
-{{:​workflow:​documentation:​addSecondStep.png?​nolink|Configure Second Step}}+{{:​workflow:​documentation:​addsecondstep.png?​nolink|Configure Second Step}}
  
 Double click on the "Send E-mail"​ step to configure the parameters. Double click on the "Send E-mail"​ step to configure the parameters.
  
-{{:​workflow:​documentation:​workflowErstellenSendEmailKonfiguration.png?​nolink|Designer}}+{{:​workflow:​documentation:​workflowcreatesendemailconfiguration.png?​nolink|Designer}}
  
 We label the workflow step 'send email' and add our e-mail address to the ‘From’ field. We label the workflow step 'send email' and add our e-mail address to the ‘From’ field.
Line 204: Line 204:
 //Note: Fixed values can also be used for parameters, as in the "​From"​ text field.// //Note: Fixed values can also be used for parameters, as in the "​From"​ text field.//
  
-{{:​workflow:​documentation:​workflowErstellenParamater.png?​nolink|Designer}}+{{:​workflow:​documentation:​workflowcreateparameter.png?​nolink|Designer}}
  
 We then test the Workflow Step using the 'Run Test' button. An exception occurs. This is because we have not yet configured the email server parameters. We then test the Workflow Step using the 'Run Test' button. An exception occurs. This is because we have not yet configured the email server parameters.
Line 210: Line 210:
 To do this, switch to VisionX and select "​Settings"​ on the right side of the screen. To do this, switch to VisionX and select "​Settings"​ on the right side of the screen.
  
-[[./​images/​visionXserver.png|{{:./​images/​visionXserver.png}}]]+{{:workflow:​documentation:​visionxserver.png?nolink|}}
  
 We can now select the '​Email'​ tab to configure the email server. We can now select the '​Email'​ tab to configure the email server.
  
-[[./​images/​visionXserver2.png|{{:./​images/​visionXserver2.png}}]]+{{:workflow:​documentation:​visionxserver2.png?nolink|}}
  
 The example uses a gmail account with an SMTP email server. After completing the configuration,​ we can run the test again. The example uses a gmail account with an SMTP email server. After completing the configuration,​ we can run the test again.
Line 224: Line 224:
 Example: Let's say we want to pass a user ID from the application to the workflow and use this ID to filter for a user with the "​Select One Row" function at the start of the workflow. To do this, we simply define a start parameter called "​ID"​ that we can then use to pass the user ID to the workflow. Example: Let's say we want to pass a user ID from the application to the workflow and use this ID to filter for a user with the "​Select One Row" function at the start of the workflow. To do this, we simply define a start parameter called "​ID"​ that we can then use to pass the user ID to the workflow.
  
-[[./​images/​startParameter.png|{{:./​images/​startParameter.png}}]]+{{:workflow:​documentation:​startparameter.png?nolink|}}
  
 ====== Starting Workflows in VisionX Applications ====== ====== Starting Workflows in VisionX Applications ======
Line 232: Line 232:
 For example, we can give users the option to send an email from one of our application screens. To do this, we first add a button to the screen in Design Mode and name it "Send Email"​. For example, we can give users the option to send an email from one of our application screens. To do this, we first add a button to the screen in Design Mode and name it "Send Email"​.
  
-[[./​images/​addSendEmailButton.png|{{:./​images/​addSendEmailButton.png}}]]+{{:workflow:​documentation:​addsendemailbutton.png?nolink|}}
  
 We then right-click on the button and select "​Create Action"​ at the bottom of the context menu. We then right-click on the button and select "​Create Action"​ at the bottom of the context menu.
  
-[[./​images/​buttonCreateAction.png|{{:./​images/​buttonCreateAction.png}}]]+{{:workflow:​documentation:​buttoncreateaction.png?nolink|}}
  
 On the "​Action"​ tab, we now select "Start Workflow"​ and then the "Send Email" workflow we created earlier. Click "​Finish"​. The workflow will now start when the button is clicked. On the "​Action"​ tab, we now select "Start Workflow"​ and then the "Send Email" workflow we created earlier. Click "​Finish"​. The workflow will now start when the button is clicked.
  
-[[./​images/​buttonStartWorkflow.png|{{:./​images/​buttonStartWorkflow.png}}]]+{{:workflow:​documentation:​buttonstartworkflow.png?nolink|}}
  
 ====== Workflow Functions ====== ====== Workflow Functions ======
Line 269: Line 269:
 Example: You want to filter employees by social security number. Since this is a unique identifier, you get exactly one record as the result of the query. Example: You want to filter employees by social security number. Since this is a unique identifier, you get exactly one record as the result of the query.
  
-[[./​images/​selectOneRow.png|{{:./​images/​selectOneRow.png}}]]+{{:workflow:​documentation:​selectonerow.png?nolink|}}
  
 ===== Select Rows ===== ===== Select Rows =====
Line 277: Line 277:
 Example: You want to filter all employees who earn more than 3000. Example: You want to filter all employees who earn more than 3000.
  
-[[./​images/​selectRows.png|{{:./​images/​selectRows.png}}]]+{{:workflow:​documentation:​selectrows.png?nolink|}}
  
 ===== Insert Statement ===== ===== Insert Statement =====
Line 285: Line 285:
 Example: Adding a new employee to the "​Contacts"​ table. Example: Adding a new employee to the "​Contacts"​ table.
  
-[[./​images/​insertStatement.png|{{:./​images/​insertStatement.png}}]]+{{:workflow:​documentation:​insertstatement.png?nolink|}}
  
 ===== Update Statement ===== ===== Update Statement =====
Line 293: Line 293:
 Example: All employees earning less than 2500 receive a salary increase of 5 percent. Example: All employees earning less than 2500 receive a salary increase of 5 percent.
  
-[[./​images/​updateStatement.png|{{:./​images/​updateStatement.png}}]]+{{:workflow:​documentation:​updatestatement.png?nolink|}}
  
 ===== Delete Statement ===== ===== Delete Statement =====
Line 303: Line 303:
 Example: Employee with ID 1 is deleted from the database. Example: Employee with ID 1 is deleted from the database.
  
-[[./​images/​deleteStatement.png|{{:./​images/​deleteStatement.png}}]]+{{:workflow:​documentation:​deletestatement.png?nolink|}}
  
 ===== Execute Statement ===== ===== Execute Statement =====
Line 326: Line 326:
 Example: A concatenation of SQL statements that starts with the "Start Transaction"​ function and ends with a commit. Example: A concatenation of SQL statements that starts with the "Start Transaction"​ function and ends with a commit.
  
-{{:​workflow:​documentation:​startTransaction.png?​nolink|Start Transaction}}+{{:​workflow:​documentation:​starttransaction.png?​nolink|Start Transaction}}
  
 Here several tables are filled with SQL statements. It is important that all statements are executed successfully and are only confirmed or completely undone at the end in order to avoid incorrect bank transfer. Here several tables are filled with SQL statements. It is important that all statements are executed successfully and are only confirmed or completely undone at the end in order to avoid incorrect bank transfer.
Line 352: Line 352:
 On the right side of the VisionX editor, select "​Settings"​ and then "​Desktop"​. On the right side of the VisionX editor, select "​Settings"​ and then "​Desktop"​.
  
-[[./​images/​visionXserver.png|{{:./​images/​visionXserver.png}}]]+{{:workflow:​documentation:​visionxserver.png?nolink|}}
  
 Now switch to the tab Email to configure your email server. Now switch to the tab Email to configure your email server.
  
-[[./​images/​visionXserver2.png|{{:./​images/​visionXserver2.png}}]]+{{:workflow:​documentation:​visionxserver2.png?nolink|}}
  
 === Configuring the Email Server in the Source Code === === Configuring the Email Server in the Source Code ===
Line 379: Line 379:
 Example: We want to send a reminder email to each employee who has not yet completed a required survey. The workflow will do this with the help of a loop. We first configure the "Send Email" function by double-clicking on the workflow step. Example: We want to send a reminder email to each employee who has not yet completed a required survey. The workflow will do this with the help of a loop. We first configure the "Send Email" function by double-clicking on the workflow step.
  
-[[./​images/​sendEmailconfiguration.png|{{:./​images/​sendEmailconfiguration.png}}]]+{{:workflow:​documentation:​sendemailconfiguration.png?nolink|}}
  
 We then add the loop to cycle through the employees. See [[#​loop_list|Loop List]] for additional details on loops. We then add the loop to cycle through the employees. See [[#​loop_list|Loop List]] for additional details on loops.
  
-[[./​images/​sendEmailDesigner.png|{{:./​images/​sendEmailDesigner.png}}]]+{{:workflow:​documentation:​sendemaildesigner.png?nolink|}}
  
 ===== Send Attachment Email ===== ===== Send Attachment Email =====
Line 399: Line 399:
 To create a template, run your application in the web live preview and open the screen "Email Templates"​ under the "​Workflow"​ menu item. To create a template, run your application in the web live preview and open the screen "Email Templates"​ under the "​Workflow"​ menu item.
  
-[[./​images/​emailTemplateVisionX.png|{{:./​images/​emailTemplateVisionX.png}}]]+{{:workflow:​documentation:​emailtemplatevisionx.png?nolink|}}
  
 A new screen opens where we can create templates including attachments. A new screen opens where we can create templates including attachments.
Line 424: Line 424:
 Furthermore,​ you can also use the [CURRENT/​loopindex] to get current index and the [CURRENT/​loopcount] to get the row count in subsequent functions. Furthermore,​ you can also use the [CURRENT/​loopindex] to get current index and the [CURRENT/​loopcount] to get the row count in subsequent functions.
  
-[[./​images/​loopListConfig.png|{{:./​images/​loopListConfig.png}}]]+{{:workflow:​documentation:​looplistconfig.png?nolink|}}
  
 Example: The example below shows a loop that checks whether a contact list includes an email address for each entry. If the email address does not exist in the database, the first name and last name of the current data record are read in each loop pass, combined to an e-mail address via the "​Update statement"​ function, and stored in the database. Example: The example below shows a loop that checks whether a contact list includes an email address for each entry. If the email address does not exist in the database, the first name and last name of the current data record are read in each loop pass, combined to an e-mail address via the "​Update statement"​ function, and stored in the database.
Line 430: Line 430:
 Checking whether an email address already exists is done by a condition that continues the workflow in the "​Update statement"​ function if there is no address or moves on to the next loop list run if an address is already saved. Checking whether an email address already exists is done by a condition that continues the workflow in the "​Update statement"​ function if there is no address or moves on to the next loop list run if an address is already saved.
  
-[[./​images/​loopListDesigner.png|{{:./​images/​loopListDesigner.png}}]]+{{:workflow:​documentation:​looplistdesigner.png?nolink|}}
  
-[[./​images/​loopListUpdate.png|{{:./​images/​loopListUpdate.png}}]]+{{:workflow:​documentation:​looplistupdate.png?nolink|}}
  
 ===== Condition ===== ===== Condition =====
Line 440: Line 440:
 Example: The screenshot below shows the configuration of the condition we used in the previous example to check whether a record contains an email address. Based on the parameter "​[CURRENT/​EMAIL] is null", the condition output will be TRUE when no email address exists and FALSE when the record contains an email address. Example: The screenshot below shows the configuration of the condition we used in the previous example to check whether a record contains an email address. Based on the parameter "​[CURRENT/​EMAIL] is null", the condition output will be TRUE when no email address exists and FALSE when the record contains an email address.
  
-[[./​images/​condition.png|{{:./images/condition.png}}]]+{{:workflow:​documentation:​condition.png?nolink|}}
  
 ===== Exception Handling ===== ===== Exception Handling =====
Line 448: Line 448:
 Example: We start with a transaction that we connect to the exeception handler. With the next workflow step (connected to the "​next"​ output) some SQL statements are retrieved. If an exception occurs during the execution of the functions, the workflow will now continue with the workflow step connect with the "​exception"​ output of the exception handler and the transaction will be terminated with a rollback. Example: We start with a transaction that we connect to the exeception handler. With the next workflow step (connected to the "​next"​ output) some SQL statements are retrieved. If an exception occurs during the execution of the functions, the workflow will now continue with the workflow step connect with the "​exception"​ output of the exception handler and the transaction will be terminated with a rollback.
  
-[[./​images/​exceptionHandling.png|{{:./​images/​exceptionHandling.png}}]]+{{:workflow:​documentation:​exceptionhandling.png?nolink|}}
  
 ===== Start Workflow With State ===== ===== Start Workflow With State =====
Line 454: Line 454:
 Starts another workflow as a sub-workflow and waits until it is finished. All used/​created objects of the main workflow are copied and passed to the sub-workflow. Once the sub-workflow is finished, the used/​created objects are returned to the main workflow. Starts another workflow as a sub-workflow and waits until it is finished. All used/​created objects of the main workflow are copied and passed to the sub-workflow. Once the sub-workflow is finished, the used/​created objects are returned to the main workflow.
  
-[[./​images/​startWorkflowWithState.png|{{:./​images/​startWorkflowWithState.png}}]]+{{:workflow:​documentation:​startworkflowwithstate.png?nolink|}}
  
 ===== Start Workflow ===== ===== Start Workflow =====
Line 463: Line 463:
 By right-clicking one of the selected function headers and selecting "​Create Workflow",​ the functions are combined to a new separate workflow and replaced with the "Start Workflow"​ function in the current workflow. The newly created workflow can then be selected and edited in the designer from the list on the left side of the screen. By right-clicking one of the selected function headers and selecting "​Create Workflow",​ the functions are combined to a new separate workflow and replaced with the "Start Workflow"​ function in the current workflow. The newly created workflow can then be selected and edited in the designer from the list on the left side of the screen.
  
-[[./​images/​createWorkflow.png|{{:./​images/​createWorkflow.png}}]]+{{:workflow:​documentation:​createworkflow.png?nolink|}}
  
 ===== Start Workflow No Wait ===== ===== Start Workflow No Wait =====
Line 491: Line 491:
 In the Workflow we use to "Wait for Interaction"​ function to define these interactions with "​Request approved",​ "​Request rejected",​ and "​Returned to requester"​. Depending on the user interaction,​ the corresponding outputs are used in the Workflow and an "​Update statement"​ function changes the request status in the database. In the Workflow we use to "Wait for Interaction"​ function to define these interactions with "​Request approved",​ "​Request rejected",​ and "​Returned to requester"​. Depending on the user interaction,​ the corresponding outputs are used in the Workflow and an "​Update statement"​ function changes the request status in the database.
  
-[[./​images/​interaction.png|{{:./images/interaction.png}}]]+{{:workflow:​documentation:​interaction.png?nolink|}}
  
 ====== Functions ====== ====== Functions ======
Line 509: Line 509:
 Example: The simple example below opens the "​Todo"​ screen for the admin user during the workflow. Example: The simple example below opens the "​Todo"​ screen for the admin user during the workflow.
  
-[[./​images/​clientCall.png|{{:./​images/​clientCall.png}}]]+{{:workflow:​documentation:​clientcall.png?nolink|}}
  
 ===== Current Time ===== ===== Current Time =====
Line 517: Line 517:
 Example: You want to store the exact time of the creation of an entry with each insert statement into a certain table. Example: You want to store the exact time of the creation of an entry with each insert statement into a certain table.
  
-[[./​images/​currentTime.png|{{:./​images/​currentTime.png}}]]+{{:workflow:​documentation:​currenttime.png?nolink|}}
  
 In this "​Insert statement"​ function the previously stored output parameter was used for the CREATED_DATE column. In this "​Insert statement"​ function the previously stored output parameter was used for the CREATED_DATE column.
Line 529: Line 529:
 Example: Opening a text file with Notepad++ Example: Opening a text file with Notepad++
  
-[[./​images/​executeProgram.png|{{:./​images/​executeProgram.png}}]]+{{:workflow:​documentation:​executeprogram.png?nolink|}}
  
 ===== Load Resource ===== ===== Load Resource =====
Line 537: Line 537:
 Example: Loading a text file Example: Loading a text file
  
-[[./​images/​loadResource.png|{{:./​images/​loadResource.png}}]]+{{:workflow:​documentation:​loadresource.png?nolink|}}
  
 ===== Notify ===== ===== Notify =====
Line 561: Line 561:
 Payload: Must be written in the format of a JSON file. This can be edited with the Add-On under the point "​Body"​ and afterwards just copy the CURL command into the text field of the payload. Payload: Must be written in the format of a JSON file. This can be edited with the Add-On under the point "​Body"​ and afterwards just copy the CURL command into the text field of the payload.
  
-[[./​images/​restPut.png|{{:./​images/​restPut.png}}]]+{{:workflow:​documentation:​restput.png?nolink|}}
  
 ^Function ​        ​^Description ​                                                 ^ ^Function ​        ​^Description ​                                                 ^
Line 580: Line 580:
 Example: First name and last name are merged into an email address and stored in the "​Email"​ column. Example: First name and last name are merged into an email address and stored in the "​Email"​ column.
  
-[[./​images/​concatenate.png|{{:./images/concatenate.png}}]]+{{:workflow:​documentation:​concatenate.png?nolink|}}
  
 ===== Left/Right Trim ===== ===== Left/Right Trim =====
Line 588: Line 588:
 Example: You have a name consisting of a first name and a surname and you want to use only the first name. Example: You have a name consisting of a first name and a surname and you want to use only the first name.
  
-[[./​images/​trim.png|{{:./images/trim.png}}]]+{{:workflow:​documentation:​trim.png?nolink|}}
  
 ====== Todo ====== ====== Todo ======
Line 600: Line 600:
 Example: You want to send a Todo item to all employees to enter their phone number in the application. Example: You want to send a Todo item to all employees to enter their phone number in the application.
  
-[[./​images/​todoCreate.png|{{:./​images/​todoCreate.png}}]]+{{:workflow:​documentation:​todocreate.png?nolink|}}
  
 As soon as the function has been completed, the Todo icon with the number of open tasks appears in the toolbar for the respective user in the application. As soon as the function has been completed, the Todo icon with the number of open tasks appears in the toolbar for the respective user in the application.
Line 606: Line 606:
 Clicking on this icon opens the Todo screen and a list with the tasks to be completed opens. Clicking on this icon opens the Todo screen and a list with the tasks to be completed opens.
  
-[[./​images/​todoExample.png|{{:./​images/​todoExample.png}}]]+{{:workflow:​documentation:​todoexample.png?nolink|}}
  
 ===== Wait For Todo ===== ===== Wait For Todo =====
Line 614: Line 614:
 You can also configure a timeout to continue the workflow after a certain time at the timeout output. You can also configure a timeout to continue the workflow after a certain time at the timeout output.
  
-[[./​images/​waitForTodo.png|{{:./​images/​waitForTodo.png}}]]+{{:workflow:​documentation:​waitfortodo.png?nolink|}}
  
 ===== Finish Todo ===== ===== Finish Todo =====
Line 620: Line 620:
 This function closes a Todo item, again using the corresponding Id. This function closes a Todo item, again using the corresponding Id.
  
-[[./​images/​todo.png|{{:./images/todo.png}}]]+{{:workflow:​documentation:​todo.png?nolink|}}
  
 ====== Log/​Monitoring ====== ====== Log/​Monitoring ======
Line 628: Line 628:
 To open the logs, switch to VisionX and start a Live Preview of the application. To open the logs, switch to VisionX and start a Live Preview of the application.
  
-[[./​images/​livePreview.png|{{:./​images/​livePreview.png}}]]+{{:workflow:​documentation:​livepreview.png?nolink|}}
  
 The application will open in a browser. To get to the logs, click '​Log'​ on the left side of the screen. In the newly opened window you will see all workflows of your application with detailed documentation. You can also continue workflows, debug them, or return to the Workflow Designer with one click. The application will open in a browser. To get to the logs, click '​Log'​ on the left side of the screen. In the newly opened window you will see all workflows of your application with detailed documentation. You can also continue workflows, debug them, or return to the Workflow Designer with one click.
Line 634: Line 634:
 Opening the Workflow Designer is only possible in VisionX in Designer. The feature is not available in the running VisionX application. Opening the Workflow Designer is only possible in VisionX in Designer. The feature is not available in the running VisionX application.
  
-[[./​images/​logVisionX.png|{{:./​images/​logVisionX.png}}]]+{{:workflow:​documentation:​logvisionx.png?nolink|}}
  
 ====== Debugger ====== ====== Debugger ======
Line 657: Line 657:
 To edit a function, return to the Designer by clicking the "​Back"​ button. To edit a function, return to the Designer by clicking the "​Back"​ button.
  
-[[./​images/​debugger.png|{{:./images/debugger.png}}]]+{{:workflow:​documentation:​debugger.png?nolink|}}
  
 ====== Custom Functions ====== ====== Custom Functions ======
Line 709: Line 709:
 A function is the code block behind a task. It is very simple to create a new function because a function is defined as a simple Java interface: A function is the code block behind a task. It is very simple to create a new function because a function is defined as a simple Java interface:
  
-<​code>​+<​code ​java>
 public interface IFunction ​ public interface IFunction ​
 { {
Line 728: Line 728:
     /**     /**
      * Runs the function.      * Runs the function.
-     * If the function returns ​<code>true</​code>​, the function is fully done, and the workflow jumps to the next step.+     * If the function returns ​{@code true}, the function is fully done, and the workflow jumps to the next step.
      * In case there are more than one next step, the finish function of IWorkflowStep has to be called.      * In case there are more than one next step, the finish function of IWorkflowStep has to be called.
      * Otherwise, an exception will be thrown.      * Otherwise, an exception will be thrown.
-     * If finish is already called, it does not matter whether ​<code>true</​code> ​or <code>false</​code> ​is returned.+     * If finish is already called, it does not matter whether ​{@code trueor {@code falseis returned.
      ​* ​      ​* ​
-     * @return ​<code>true</​code>​, if the function is done.+     * @return ​{@code true}, if the function is done.
      * @throws Throwable if function fails.      * @throws Throwable if function fails.
      */      */
Line 748: Line 748:
 The interface already has an abstract implementation,​ so it is really simple to create a new function. Our example will send an email, so it's the EmailFunction:​ The interface already has an abstract implementation,​ so it is really simple to create a new function. Our example will send an email, so it's the EmailFunction:​
  
-<​code>​+<​code ​java>
 public class EmailFunction extends AbstractFunction ​ public class EmailFunction extends AbstractFunction ​
 { {
Line 795: Line 795:
 The email settings will be read from the application configuration (config.xml file). The email settings will be read from the application configuration (config.xml file).
  
-<​code>​+<​code ​xml>
 <​application>​ <​application>​
   ...   ...
Line 814: Line 814:
 Now you only have to configure the input parameters in the Workflow Designer. Now you only have to configure the input parameters in the Workflow Designer.
  
-[[./​images/​customFunction.png|{{:./​images/​customFunction.png}}]]+{{:workflow:​documentation:​customfunction.png?nolink|}}
  
  
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information