- Overview
- Callout
- Complex Scenarios
- Credentials
- Data Service
- Form
- Release notes
- Project compatibility
- Real Time Forms
- Updating form data
- Running forms using JavaScript
- Customizing Forms Using CSS
- Conditional components
- Adding multiple components on the same row in Columns
- Using the Data Table component
- Get File/Folder path
- Reading cell values from a Data Grid component
- Displaying PDF files
- Displaying images in forms
- Scrolling through Data Grids
- Using Dev Tools with forms
- Calculate form component values
- Managing dates in forms
- Opening hyperlinks inside forms
- Displaying a default tab in forms
- Displaying the full label of a component
- Searching long strings in drop-down lists
- About the pre 23.4 Form experience
- Project Compatibility
- Real Time Forms
- Dynamic Checkboxes
- Conditional Dropdowns
- Displaying a Default Tab
- Displaying Images
- Displaying PDF Files
- Displaying the Full Label
- Dynamic HTML Elements
- Managing Dates
- Searching Long Strings in Drop-downs
- Customizing Forms Using Local CSS Files
- Executing Do Block On Checkbox Change
- Customizing Columns Width
- Updating Form Data
- Resetting Collection Data
- Advanced Logic
- Executing Do Block on Dropdown Option Change
- Reading Cell Values From a Data Grid Component
- Conditional Components
- Scrolling Through Data Grid Components
- Using the Grid Component
- Dev Tools
- Calculated Value
- Dynamic Dropdowns
- Switching Tabs With Button Click
- Opening Hyperlinks Inside Form
- FTP
- IPC
- Persistence
- Release notes
- Project compatibility
- About the Persistence activity package
- Bulk Form Designer
- Start Job And Get Reference
- Wait For Job And Resume
- Add Queue Item And Get Reference
- Wait For Queue Item And Resume
- Wait For Form Task And Resume
- Resume After Delay
- Assign Tasks
- Create External Task
- Wait For External Task And Resume
- Complete Task
- Forward Task
- Get Form Tasks
- Get Task Data
- Get App Tasks
- Add Task Comment
- Update Task Labels
- Create App Task
- Wait For App Task And Resume
- Configure task timer
- Working with App tasks
- Building Your First Form Action
- Advanced Controls for Drop-downs
- Embedding Objects in Form Actions
- Allowing Users to Upload Files to the Storage Bucket
- Adding Advanced Logic Using Java Script
- Setting a Default Tab
- Removing the Delete button from Edit Grid using custom CSS
- Customizing Edit Grid templates
- Using buttons to trigger custom logic
- Using an External Form Layout
- Dynamically expanding form components at runtime
- Aligning the content of a form component from left to right using JSON attributes
- Sample Workflows
- Automation Ops Pipelines
- System
- Release notes
- About the System activity package
- Project compatibility
- Supported character encoding
- RegEx Builder Wizard
- Add Data Column
- Add Data Row
- Add Log Fields
- Add or Subtract from Date
- Add Transaction Item
- Add Queue Item
- Append Item to Collection
- Append Item to List
- Append Line
- Beep
- Break / Exit Loop
- Browse for File
- Browse for Folder
- Build Collection
- Build Data Table
- Bulk Add Queue Items
- Change Case for Text
- Change Type
- Check False
- Check True
- Clear Data Table
- Collection to Data Table
- Comment
- Compress/Zip Files
- Copy File
- Copy Folder
- Combine text
- Comment Out / Disabled Activities
- Continue / Skip Current
- Create File
- Create Folder
- Create List
- Custom Input
- Delete
- Delete File
- Delete Folder
- Delete Storage File
- Delete Queue Items
- Disable Local Trigger
- Do While
- Download file from URL
- Download Storage File
- Enable Local Trigger
- Evaluate Business Rule
- Exists in Collection
- Extract/Unzip Files
- Extract Date and Time from Text
- Extract Text
- File Change Trigger
- File Exists
- Filter Collection
- Filter Data Table
- Folder Exists
- For Each
- For Each File in Folder
- File Change Trigger V3
- Find and Replace
- Find Matching Patterns
- For Each Folder in Folder
- For Each Row in Data Table
- Format Date as Text
- Format Value
- Generate Data Table From Text
- Get Asset
- Get Credential / Get Orchestrator Credential
- Get Current Job Info
- Get Environment Folder
- Get Environment Variable
- Get File Info
- Get Folder Info
- Get Jobs
- Get Processes
- Get Row Item
- Get Transaction Item
- Get Username/Password
- Get Queue Items
- Global Variable Changed Trigger
- Input Dialog
- Invoke Code
- Invoke Com Method
- Invoke Power Shell
- Invoke Process
- Invoke VBScript
- Invoke Workflow File
- Is Text Matching
- Join Data Tables
- Kill Process
- Launch Workflow Interactive
- List Storage Files
- Log Message
- Lookup Data Table
- Manual Trigger
- Merge Collections
- Merge Data Table
- Message Box
- Modify Date
- Modify Text
- Move File
- Move Folder
- Multiple Assign
- New Item Added to Queue
- Notify Global Variable Changed
- Orchestrator HTTP Request
- Output Data Table
- Path Exists
- Postpone Transaction Item
- Process End Trigger
- Process Start Trigger
- Raise Alert
- Read List Item
- Read Text File
- Read Storage Text
- Remove Data Column
- Remove Data Row
- Remove Duplicate Rows
- Remove From Collection
- Remove Log Fields
- Replace Matching Patterns
- Repeat Number of Times
- Repeat Trigger
- Rename File
- Rename Folder
- Report Status
- Reset Timer
- Resume Timer
- Retry Scope
- Return
- Run Local Triggers
- Run Parallel Process
- Set Asset
- Set Credential
- Set Environment Variable
- Set Transaction Progress
- Set Transaction Status
- Should Stop
- Split Text
- Sort Data Table
- Start Timer
- Start Job
- Stop Job
- Stop Local Triggers
- Stop Timer
- Text to Left/Right
- Text to Upper/Lowercase
- Time Trigger
- Trigger Scope
- Timeout Scope
- Update Row Item
- Update List Item
- Upload Storage File
- Wait for Download
- Wait Queue Item
- While
- Workflow Placeholder
- Write Storage Text
- Write Text File
- AddDataRow
- AddQueueItem
- AddTransactionItem
- AppendLine
- BulkAddQueueItems
- ClearDataTable
- CompressZipFiles
- CopyFile
- CreateFile
- CreateFolder
- DeleteFileOrFolder
- DeleteQueueItems
- DeleteStorageFile
- DownloadStorageFile
- ExtractUnzipFiles
- FilterDataTable
- GetAsset
- GetCredential
- GetJobs
- GetQueueItem
- GetQueueItems
- GetResourceForLocalPath
- GetRowItem
- GetTransactionItem
- InvokeProcess
- JoinDataTables
- ListStorageFiles
- LookUpDataTable
- MergeDataTable
- MoveFile
- OrchestratorHTTPRequest
- OutputDataTable
- PathExists
- PostponeTransactionItem
- ReadStorageText
- ReadTextFile
- RemoveDataColumn
- RemoveDuplicateRows
- Replace
- SetAsset
- SetCredential
- SetTransactionProgress
- SetTransactionStatus
- SortDataTable
- StartJob
- StopJob
- UpdateRowItem
- UploadStorageFile
- WaitQueueItem
- WriteStorageText
- WriteTextFile
- Testing
- Release notes
- About the Testing activity package
- Project compatibility
- Project Settings
- Add Test Data Queue Item
- Address
- Attach Document
- Bulk Add Test Data Queue Items
- Create Comparison Rule
- Delete Test Data Queue Items
- Get Test Data Queue Item
- Get Test Data Queue Items
- Given Name
- Last Name
- Random Date
- Random Number
- Random String
- Random Value
- Verify Control Attribute
- Verify Documents Equivalence
- Verify Expression
- Verify Expression With Operator
- Verify Range
- Verify Text Equivalence
- Address
- AddTestDataQueueItem
- AttachDocument
- BulkAddTestDataQueueItems
- DeleteTestDataQueueItems
- GetTestDataQueueItem
- GetTestDataQueueItems
- GivenName
- LastName
- RandomDate
- RandomNumber
- RandomString
- RandomValue
- VerifyAreEqual
- VerifyAreNotEqual
- VerifyContains
- VerifyExpression
- VerifyExpressionWithOperator
- VerifyIsGreater
- VerifyIsGreaterOrEqual
- VerifyIsLess
- VerifyIsLessOrEqual
- VerifyIsRegexMatch
- VerifyRange
- Workflow Events
- Workflow Foundation
PREVIEWWorking with App tasks
This tutorial guides you through the process of building an App task, which involves the following phases:
- Creating an action definition and uploading it in Action Center.
- Developing an action app within Apps, and setting up fields for each property defined in the action definition.
- Publishing the app and creating a workflow in either Studio Web or Studio Desktop using the Create App Task activity.
- Prepare the action definition:
- Start by adding an open curly brace to indicate the start of the JSON object.
- Inside the JSON object, define the
Name
andDescription
properties as strings, along with their values."Name": "Validate Document", "Description": "Validate and approve invoice",
"Name": "Validate Document", "Description": "Validate and approve invoice", - Add an
Allowed Actions
property as an array of strings to specify the allowed actions that you can take at the end of the action. The values should be the equivalent of Complete or Decline."AllowedActions": [ "Yes", "No" ],
"AllowedActions": [ "Yes", "No" ], - Add a
Schema
property and assign it an object that adheres to the JSON Schema standard:http://json-schema.org/draft-07/schema#
."Schema": { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object",
"Schema": { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", - Within the
properties
object, define each property you want to include in the schema. For each property, specify itstype
anddescription
.Each property in theSchema
is the equivalent to the input fields you will add in the App action."properties": { "Description": { "type": "string", "direction": "in", "description": "Validation message" }, "invoice_document": { "type": "string", "direction": "in", "description": "Document file." }, "Comments": { "type": "string", "direction": "inout", "description": "Approval or rejection comments" } }
"properties": { "Description": { "type": "string", "direction": "in", "description": "Validation message" }, "invoice_document": { "type": "string", "direction": "in", "description": "Document file." }, "Comments": { "type": "string", "direction": "inout", "description": "Approval or rejection comments" } }Note: If thedirection
property is not defined, then the default value for it isinout
(In/Out
). - If certain properties are required, include a
required
array, where you list the properties that you want to mark as required in the action. - Close the JSON object by adding a closing curly brace.
- Upload the action definition to Action Center:
- Open Action Center, navigate to Admin Settings, and select Tenant.
- In the Action Definitions tab, select Add Action Definition.
- Select Download action definition sample to download a sample JSON schema to help you prepare the action definition.
- Select Import from file, and select the JSON file you prepared earlier.
- Enter an appropriate name and description for the Action definition, and then select Create.
Apps created using an integration for Actions are designed to be utilized within long-running workflows, and end users can access these apps only through interaction with the generated actions.
- Open Apps within the organization where you uploaded the action definitions.
- Create a new app from scratch, or choose a pre-made template that suits your needs.
- Next to Add Control,
select Add Any and then select Action.
This step allows you to specify the action definition for this app. For this example, we are using the
Validate Document
action definition. - Select the tenant where you previously uploaded the action definition, and select Next.
- On the left side of the Add
action dialog, select the action definition you have created, and click
Add.
Visit Referencing an action definition within your app to learn more about using action definitions with your Action Apps.
- Now you can start adding controls
to your app.
Ensure that the names of the app controls align precisely with the names used in the JSON schema of the action definition. For instance, if you include a document viewer control to display the
invoice_document
property from the action definition, name the controlinvoice_document
.The input or output parameters of an action can be bound to any app control, by using the following syntax:Actions.<referenced_action_name>.<action_parameter_name>
- Create a blank page and add a Layout to it.
- Inside the Layout, add a Container, where you can add text box and image controls, to display the customer name and logo of the company that's validating the document.
- Inside the Layout, add a Container, where you place the Document Viewer control.
- Create a variable named
var_invoice_file
and add it as the Source of the Document Viewer control. - Add another container
inside the Layout, where you can add a Text Area on the left. As
the Default text type in the following expression:
Actions.Validate_Document.Comments
. - Add two Button
controls responsible for completing the action and configure a rule to
submit the action, corresponding to the
Allowed Actions
specified in the action definition:- Go to Events and select Create rule.
- From the dropdown list menu, select Submit action.
- Under Action
outcome, select the allowed action that you want the
button to trigger when clicked:
Yes
orNo
.
Visit Rule: Submit Action to learn about this specific rule.
- Establish a link to a storage bucket where you'll upload the document before forwarding it as part of the action.
- Publish the app, making it
accessible to use within your Studio workflows.
Visit Publishing an action app to learn more about the process of publishing an action app.
Create a workflow in Studio Web or Studio Desktop to download an invoice document from a Google Drive account. Upload the downloaded document to the storage bucket bound to your Action app. Next, add a User Action/App action activity to display the specific document for user approval or rejection. Assign the task to a user, await action completion, and resume the workflow. Log a message detailing the user's validation decision for the document.
- Create a new project in Studio.
- Add a Download File activity.
- Establish a connection to Google Drive inside the activity.
- In the File to download field, specify the name of the file you want to download.
- Under the Output
section, create a variable to store the downloaded file.
For this example, name the variable
downloadFile
.
- Add an Upload Storage File activity to upload
the file to the storage bucket associated with your Action app.
- From Orchestrator Folder Path and Storage Bucket Name, choose the Orchestrator folder path and storage bucket where you want to upload the file.
- In the File field,
input the variable where you stored the file that you downloaded
file.
For this example, input
downloadFile
. - In the Where to
upload/Path field, enter the expression
downloadFile.FullName.toString
to save the file in the storage bucket.Tip: You can store this expression in a variable.
- Add an Create App Task
activity, to create the action.
- Set the Title, and Priority accordingly.
- For Apps, select the Action app created earlier in the tutorial.
- Populate the generated fields with the appropriate variables.
- Under the Output
section, create an
UserActionData
variable to store the data related to the generated action.In this example, name the variable astaskID
.
- Add an Assign Tasks activity to
assign the task to a user within the organization.
- In the Task Id
field, input an expression that retrieves the task ID from the output
variable created at step 4, substep d.
In this example, input the following expression:
taskID.Id.Value
. - In the User Name or Email field input the username or the email address of the user to whom you want to assign this action.
- In the Task Id
field, input an expression that retrieves the task ID from the output
variable created at step 4, substep d.
- Add a Wait For App Task And Resume
activity to wait for the user to complete the action and then resume the
workflow.
- In the Created App Task field, input the output variable created at step 4, substep d.
- In the Action taken field, create a variable (example:
userActionTaken
) to store the type of action the user took to complete the task.
- Add a Log Message activity
to print the type of action that the user took to complete the task. Use an
expression such as
"The action that user used to complete the Validate Invoice action was " + userActionTaken.ToString
To follow the steps and try out the tutorial yourself, download the sample Studio Desktop project here. To open it in Studio Web, save the project to Cloud, and then check your Studio Web for the project to open it there.