Flow Designer Scripting
Quick start
Execute flows programmatically:
javascript
var inputs = {};
inputs['sys_id'] = '57af7aec73d423002728660c4cf6a71c';
var result = sn_fd.FlowAPI.getRunner()
.flow('global.my_flow')
.inForeground()
.withInputs(inputs)
.run();
var contextId = result.getContextId();
var outputs = result.getOutputs();
Execute actions:
javascript
var result = sn_fd.FlowAPI.getRunner()
.action('global.markapproved')
.inForeground()
.inDomain('TOP/ACME')
.withInputs(inputs)
.run();
Execute subflows:
javascript
var result = sn_fd.FlowAPI.getRunner()
.subflow('my_app.process_request')
.withInputs(inputs)
.run();
var success = result.wasSuccessful();
Builder pattern
- •FlowAPI: Creates a
getRunner()builder - •ScriptableFlowRunner: Configure flow/action/subflow:
- •
flow(),action(),subflow(), ordatastream() - •
withInputs()- Pass parameters - •
inForeground()orinBackground() - •
inDomain()- For domain-separated instances
- •
- •ScriptableFlowRunnerResult: Inspect results:
- •
getContextId(),getOutputs(),getDomainId() - •
wasSuccessful(),getDate()
- •
Best practices
- •Use foreground execution for immediate results
- •Use background for long-running flows
- •Always check
wasSuccessful()before accessing outputs - •Domain execution runs as System User in that domain
- •Avoid async BR calls; use scheduled jobs instead
Key APIs
| API | Purpose |
|---|---|
| FlowAPI | Entry point; manages runner lifecycle |
| ScriptableFlowRunner | Builder for flow execution |
| ScriptableFlowRunnerResult | Result container and output handler |
Reference
For complete API documentation and advanced patterns, see BEST_PRACTICES.md