temporalio-workflow 0.5.0

Temporal Rust workflow authoring surface
Documentation
package temporal:workflow-runtime@0.1.0;

interface types {
type payload = list<u8>;

type workflow-command = list<u8>;

type failure = list<u8>;

type workflow-task-failed-cause = u32;

record workflow-init {
  namespace: string,
  task-queue: string,
  run-id: string,
  initialize-workflow: list<u8>,
}

record workflow-definition {
  workflow-type: string,
  has-init: bool,
  init-takes-input: bool,
  signals: list<string>,
  queries: list<string>,
  updates: list<update-definition>,
}

record update-definition {
  name: string,
  has-validator: bool,
}

record query-response {
  response: result<payload, failure>,
}

type routine-id = u64;

type workflow-activation = list<u8>;

variant routine-kind {
  main,
  signal(string),
  update(update-routine-kind),
}

record update-routine-kind {
  name: string,
  update-id: string,
  protocol-instance-id: string,
}

record started-routine {
  routine-id: routine-id,
  kind: routine-kind,
}

variant activation-job-result {
  none,
  started-routine(started-routine),
  query-response(query-response),
  update-rejected(failure),
}

record activation-result {
  job-results: list<activation-job-result>,
}

type continue-as-new-request = list<u8>;

record task-failure {
  failure: failure,
  force-cause: option<workflow-task-failed-cause>,
}

variant terminal-outcome {
  completed(payload),
  failed(failure),
  cancelled,
  continue-as-new(continue-as-new-request),
}

variant main-routine-completion {
  blocked,
  task-failed(task-failure),
  terminal(terminal-outcome),
}

variant update-routine-completion {
  completed(update-routine-success),
  rejected(update-routine-rejection),
}

record update-routine-success {
  protocol-instance-id: string,
  value: payload,
}

record update-routine-rejection {
  protocol-instance-id: string,
  failure: failure,
}

variant signal-routine-completion {
  succeeded,
  failed(failure),
}

variant routine-completion {
  main(main-routine-completion),
  signal(signal-routine-completion),
  update(update-routine-completion),
}

record routine-poll-result {
  completion: option<routine-completion>,
  made-progress: bool,
}
}