Skip to main content

Workflow

Extended module. Use withExtended. Every method accepts trailing RequestOptions.

import { createFrappeClient } from 'frappe-js-client'
import { withExtended } from 'frappe-js-client/extended'

const frappe = withExtended(createFrappeClient({ url }))
const doc = { doctype: 'ToDo', name: 'abc' } // WorkflowDoc: doctype + name + extra keys

const transitions = await frappe.workflow.getTransitions(doc)
// { action, state, next_state, allowed?, allow_self_approval?, condition?, … }

await frappe.workflow.apply(doc, 'Approve')
await frappe.workflow.canCancelDocument('ToDo')
await frappe.workflow.getCommonTransitionActions([doc], 'ToDo') // string[] of action names
await frappe.workflow.bulkApproval(['abc', 'def'], 'ToDo', 'Approve')

Methods

MethodReturnsServer
getTransitions(doc)WorkflowTransition[]frappe.model.workflow.get_transitions
apply(doc, action)T (default unknown)frappe.model.workflow.apply_workflow
canCancelDocument(doctype)booleanfrappe.model.workflow.can_cancel_document
getCommonTransitionActions(docs, doctype)string[]frappe.model.workflow.get_common_transition_actions
bulkApproval(names, doctype, action)unknownfrappe.model.workflow.bulk_workflow_approval. Wire docnames is JSON.stringify(names)

WorkflowDoc is { doctype, name, ... }. WorkflowTransition includes action, state, next_state, plus optional allowed, allow_self_approval, condition, and extra server keys.