Skip to main content

Commands

Commands are returned in your /runevent response and executed by the SDK after each event. Your handler queues them by calling the corresponding helper methods — the SDK processes them in order.

At their core, commands are just JSON keys in the response body. The helper methods (cmd.*, screen.*) are convenience wrappers that build that JSON for you — but you can implement your own wrappers in any language as long as the response structure matches what the SDK expects.

GitHub example

All commands listed here are already implemented in the Workforce Management example on GitHub. Use it as a working reference, or copy the wrapper classes directly into your project.

Commands overview​

CommandMethodDescription
OpenModalcmd.ShowRecord()Open a form in a modal
Messagescmd.SuccessMessage() / cmd.NotificationMessage() / cmd.WarningMessage()Display a notification
Downloadcmd.Download()Trigger a file download
PreviewDocumentcmd.PreviewDocument()Open the document viewer
CloseFormcmd.CloseForm()Close the current form
Redirectcmd.RedirectToUrl()Navigate to a URL
RedrawScreencmd.RedrawScreen()Refresh the current form
AfterRecordSavecmd.SetAfterRecordSave()Signal save completion and update the active GUID
FormValidationDatacmd.SetFormValidationData()Highlight invalid fields in red
MoveToTabscreen.MoveToTab()Switch to a specific tab
widgetsStatescreen.SetVisibility() / screen.SetReadonly()Show/hide or lock widgets
fieldAllowedValuescmd.PopulateSelectBoxList()Populate a select box

OpenModal​

Opens a form for viewing or editing a record in a modal window.

cmd.ShowRecord("INTRA", "CUSTOMERFORM", "new");

// With prefill data
cmd.ShowRecord("INTRA", "CUSTOMERFORM", "new", false, new Dictionary<string, object>
{
{ "status", "New" },
{ "country", "US" }
});

See Opening a Form in a Modal for the full parameter reference.


Messages​

Display a notification to the user.

cmd.SuccessMessage("Record saved successfully.");
cmd.NotificationMessage("Processing will complete in a few minutes.");
cmd.WarningMessage("Approval limit exceeded.");

WarningMessage throws a UserWarningException internally — the SDK catches it and displays the warning to the user.

See Displaying Messages for more patterns.


Download​

Triggers a file download in the browser.

cmd.Download("employee-export.xlsx", fileStoragePath);

See File Download for more patterns.


PreviewDocument​

Opens the built-in document viewer with the given file.

byte[] pdfBytes = await _pdfService.RenderAsync("Template", record.GetData());
cmd.PreviewDocument("document.pdf", pdfBytes);

See Document Previewer for the full signature and patterns.


CloseForm​

Closes the currently open form.

cmd.CloseForm();

Redirect​

Navigates the user to a URL.

cmd.RedirectToUrl("/forms/customers");
cmd.RedirectToUrl($"/orders/{id}");

See Redirection for more patterns.


RedrawScreen​

Refreshes the current form, re-firing its initialization events.

cmd.RedrawScreen();

AfterRecordSave​

Signals that a new record was saved, updates the active GUID, and closes the modal if open.

cmd.SetAfterRecordSave(newId.ToString());

See Saving a Record for context.


FormValidationData​

Highlights invalid fields in red and blocks further save attempts until they are filled.

Dictionary<string, string> errors = await formValidator.Validate(record, screen);
cmd.SetFormValidationData(errors);

See Form Validation for the full validation pattern.


MoveToTab​

Programmatically switches the form to a specific tab widget.

screen.MoveToTab("detailstab");

widgetsState​

Controls widget visibility and read-only state.

screen.SetVisibility("internalNotes", false);
screen.SetReadonly("createdAt", true);

See Hiding / Showing Widgets for more patterns.


fieldAllowedValues​

Populates a select box with options.

cmd.PopulateSelectBoxList("status", new Dictionary<string, string>
{
{ "draft", "Draft" },
{ "active", "Active" }
});

See Populating Select Boxes for more patterns.


Chaining commands​

Commands execute in the order they are queued:

cmd.SetFormValidationData(errors);
// or, on success:
cmd.SuccessMessage("Employee saved.");
cmd.SetAfterRecordSave(newId.ToString());