workflow::action::fsm::generate_spec (private)
workflow::action::fsm::generate_spec [ -action_id action_id ] \ [ -one_id one_id ] [ -handlers handlers ]
Defined in packages/workflow/tcl/action-procs.tcl
Generate the spec for an individual action definition.
- Switches:
- -action_id (optional)
- The id of the action to generate spec for.
- -one_id (optional)
- Same as action_id, just used for consistency across roles/actions/states.
- -handlers (optional)
- Returns:
- spec The actions spec
- Author:
- Lars Pind <lars@collaboraid.biz>
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- No testcase defined.
Source code: if { $action_id eq "" } { if { $one_id eq "" } { error "You must supply either action_id or one_id" } set action_id $one_id } else { if { $one_id ne "" } { error "You can only supply either action_id or one_id" } } get -action_id $action_id -array row # Get rid of elements that shouldn't go into the spec array unset row short_name array unset row action_id array unset row workflow_id array unset row sort_order array unset row assigned_role_id array unset row new_state_id array unset row callbacks_array array unset row callback_ids array unset row allowed_roles_array array unset row allowed_role_ids array unset row enabled_state_ids array unset row assigned_state_ids array unset row parent_action array unset row parent_action_id foreach { type namespace } $handlers { # type is 'roles', 'actions', 'states', etc. # LARS: Ugly as hell with the string range to cut from 'actions' to 'action_ids' if { [info exists row(child_[string range $type 0 end-1]_ids)] } { set row(child_${type}) [list] foreach child_id $row(child_[string range $type 0 end-1]_ids) { set child_short_name [${namespace}::get_element -one_id $child_id -element short_name] set child_spec [${namespace}::generate_spec -one_id $child_id -handlers $handlers] lappend row(child_${type}) $child_short_name $child_spec } unset row(child_[string range $type 0 end-1]_ids) } } if { (![info exists row(description)] || $row(description) eq "") } { array unset row description_mime_type } # Get rid of a few defaults array set defaults { trigger_type user always_enabled_p f } set spec [list] foreach name [lsort [array names row]] { if { $row($name) ne "" && !([info exists defaults($name)] && $defaults($name) eq $row($name)) } { lappend spec $name $row($name) } } return $specGeneric XQL file: packages/workflow/tcl/action-procs.xql
PostgreSQL XQL file: packages/workflow/tcl/action-procs-postgresql.xql
Oracle XQL file: packages/workflow/tcl/action-procs-oracle.xql