External workflow logs
External workflow logs record runs of work performed outside Istari — a verification script on your workstation, a CI job, a batch run on an HPC cluster — against the system the work targeted. Output files are uploaded back to the system as workflow outputs, and a workflow log entry ties the run together with a title, status, and the configuration that was active at the time of the run.
External workflows are distinct from Istari jobs, which run on Istari agents and are scheduled and tracked end-to-end by the platform. With external workflows, the work happens wherever you run it; Istari stores the record and the outputs.
External workflow logs are experimental. An administrator must enable Experimental — External Workflows in Application Settings before the Workflow log tab and the related SDK endpoints are available.
A typical run
A common pattern: pull a tracked file from a system, do some work locally, then upload the artifacts and a single log entry back to Istari.
Initialize the clients
from istari_digital_client import Client, V3Client, Configuration
config = Configuration(
registry_url="https://your-instance.istari.digital",
registry_auth_token="your-personal-access-token",
)
client = Client(config)
v3 = V3Client(config)
Pull the source from the system
file = client.get_file(file_id="<file_id>")
source_bytes = file.revisions[-1].read_bytes()
Upload your outputs
Once your workflow has produced one or more files on disk, register each as a workflow output:
output_ids = []
for path in ["out/results.xml", "out/summary.json", "out/plot.png"]:
output = v3.create_workflow_output(system_id="<system_id>", path=path)
output_ids.append(output.id)
Create the log entry
from istari_digital_client.v3.models import WorkflowLogEntryCreateDto
entry = v3.create_workflow_log_entry(
system_id="<system_id>",
workflow_log_entry_create_dto=WorkflowLogEntryCreateDto(
title="Design verification — iter-1",
status="FAILED", # SUCCESS | FAILED | UNSPECIFIED
configuration_id="<configuration_id>",
workflow_output_ids=output_ids,
),
)
The entry now appears on the system's Workflow log tab.
status and workflow_type
Use one of SUCCESS, FAILED, or UNSPECIFIED for status — these are the values the Workflow log tab renders with the appropriate icon and colour. UNSPECIFIED is the default if you omit the field.
workflow_type should be "external" for runs created by the SDK against an external workflow. It is also the default if you omit the field.
Outputs and entries
A workflow log entry owns its outputs. Create the outputs first, then create one entry that references them — a single workflow run should map to a single entry that holds all of its outputs.
Listing and reading entries
page = v3.list_workflow_log_entries(system_id="<system_id>")
for entry in page.items:
print(entry.created, entry.status, entry.title)
detail = v3.get_workflow_log_entry(system_id="<system_id>", entry_id="<entry_id>")
for output in detail.workflow_outputs:
print(output.name, output.size)
What's next
- V3Client reference — full signatures for
create_workflow_output,create_workflow_log_entry, and related methods. - Systems and Snapshots — viewing entries in the UI.