- 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
- Add Task Comment
- Update Task Labels
- Create App Task
- Wait for App Task and Resume
- 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
- Sample Workflows
- Automation Ops Pipelines
- System
- Release notes
- About the System activity package
- Project compatibility
- RegEx Builder Wizard
- Is Text Matching
- Find Matching Patterns
- Modify Text
- Modify Date
- Replace Matching Patterns
- Text to Left/Right
- Add Data Column
- Add Data Row
- Build Data Table
- Clear Data Table
- Get Row Item
- Update Row Item
- Merge Data Table
- Output Data Table
- Remove Data Column
- Remove Data Row
- For Each Row in Data Table
- Generate Data Table From Text
- Create List
- Append Item to List
- Read List Item
- Update List Item
- Add Log Fields
- Comment Out / Disabled Activities
- Comment
- Change Type
- Log Message
- Remove Log Fields
- Invoke Com Method
- Format Value
- Lookup Data Table
- Filter Data Table
- Sort Data Table
- Remove Duplicate Rows
- Join Data Tables
- Report Status
- Append Line
- Compress/Zip Files
- Copy File
- Copy Folder
- Create Folder
- Create File
- Delete
- File Exists
- Folder Exists
- Extract/Unzip Files
- Wait for Download
- File Change Trigger
- For Each File in Folder
- For Each Folder in Folder
- Delete File
- Delete Folder
- Move File
- Move Folder
- Rename Folder
- Rename File
- Path Exists
- Read Text File
- Write Text File
- Get File Info
- Get Folder Info
- Get Processes
- Get Username/Password
- Kill Process
- Beep
- Get Environment Folder
- Get Environment Variable
- Invoke Power Shell
- Input Dialog
- Message Box
- Browse for File
- Browse for Folder
- Invoke VBScript
- Process End Trigger
- Process Start Trigger
- File Change Trigger V3
- Trigger Scope
- Repeat Number of Times
- Text to Upper/Lowercase
- Set Environment Variable
- For Each
- Break / Exit Loop
- Retry Scope
- Check True
- Check False
- Workflow Placeholder
- Invoke Workflow File
- Launch Workflow Interactive
- Invoke Code
- Continue / Skip Current
- Multiple Assign
- Invoke Process
- Run Parallel Process
- While
- Do While
- Repeat Number Of Times
- Raise Alert
- Orchestrator HTTP Request
- Get Asset
- Get Credential / Get Orchestrator Credential
- Set Asset
- Set Credential
- Get Jobs
- Get Current Job Info
- Start Job
- Stop Job
- Add Queue Item
- Add Transaction Item
- Delete Queue Items
- Get Queue Items
- Get Transaction Item
- Postpone Transaction Item
- Set Transaction Progress
- Set Transaction Status
- Should Stop
- Wait Queue Item
- Bulk Add Queue Items
- Write Storage Text
- Upload Storage File
- List Storage Files
- Read Storage Text
- Download Storage File
- Delete Storage File
- Custom Input
- Append Item to Collection
- Build Collection
- Collection to Data Table
- Exists in Collection
- Filter Collection
- Merge Collections
- Remove From Collection
- Reset Timer
- Resume Timer
- Start Timer
- Stop Timer
- Timeout Scope
- Manual Trigger
- When New Item Added to Queue
- Stop Local Triggers
- Run Local Triggers
- Repeat Trigger
- Time Trigger
- Disable Local Trigger
- Enable Local Trigger
- Notify Global Variable Changed
- Global Variable Changed Trigger
- Extract Text
- Find and Replace
- Return
- Extract Date and Time from Text
- Change Case for Text
- Add or Subtract from Date
- Download file from URL
- Format Date as Text
- Split Text
- Combine text
- 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
- Project compatibility
- About the Testing activity package
- Project Settings
- Add Test Data Queue Item
- Address
- Attach Document
- Bulk Add Test Data Queue Items
- 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 Expression
- Verify Expression With Operator
- Verify Range
- 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.