Commit 469173d4 authored by Frank Bergmann's avatar Frank Bergmann

WIP fixing reset case

parent 6d8054fd
......@@ -13,7 +13,7 @@ ad_page_contract {
{ button_cancel "" }
{ button_confirm "" }
{ task_id:integer 0 }
{ project_id:integer 0 }
{ case_id:integer 0 }
return_url
{ place_key "tagged" }
{ action_pretty "" }
......@@ -24,7 +24,8 @@ ad_page_contract {
# ---------------------------------------------------------------------
set user_id [auth::require_login]
set page_title "RFC löschen"
set peer_ip [ad_conn peeraddr]
set page_title [lang::message::lookup "" intranet-workflow.Reset_Workflow_Case "Reset Workflow Case"]
set date_format "YYYY-MM-DD"
set bgcolor(0) " class=roweven"
......@@ -36,47 +37,29 @@ set bgcolor(1) " class=rowodd"
if {"" != $button_confirm} {
# Get the general case_id
# "Cancel" all the task in the current case
set case_id [db_string case "select case_id from wf_tasks where task_id = :task_id" -default 0]
if {0 == $case_id} {
set case_id [db_string case2 "select case_id from wf_cases where object_id = :project_id" -default 0]
set case_id [db_string case "select case_id from wf_tasks where task_id = :task_id" -default 0]
}
# Reactivate...
if {"before_fullfill_rfc" == $place_key} {
db_dml delete_end_token "
delete from wf_tokens
where case_id = :case_id
and place_key = 'end'
"
db_dml update_cases "
update wf_cases
set state = 'active'
where case_id = :case_id
"
db_dml update_projects "
update im_projects
set project_status_id = [im_project_status_open]
where project_id = :project_id
"
im_audit -object_id $project_id
if {0 == $case_id} {
ad_return_complaint 1 "Didn't find case_id"
ad_script_abort
}
}
# Get the places of tokens before canceling the case
set places [db_list token_in_places "select place_key||':'||state from wf_tokens where case_id = :case_id and state in ('free', 'locked')"]
set reset_message "Resetting workflow case #$case_id with tokens in [join $places ", "]"
# if {[llength $places] == 0} { set message "Resetting Workflow with no tokens active" }
# set case_journal_id [im_workflow_new_journal -case_id $case_id -action "reset_workflow" -action_pretty "Reset Workflow" -message $message]
ns_log Notice "new-rfc: case_id=$case_id"
set journal_id ""
# Delete all tokens of the case
db_dml delete_tokens "
delete from wf_tokens
where case_id = :case_id
and state in ('free', 'locked')
"
# Make sure the case is active
db_dml update_case "update wf_cases set state = 'active' where case_id = :case_id"
# Delete active tokens, leave old ones in their places
db_dml delete_tokens "delete from wf_tokens where case_id = :case_id and state in ('free', 'locked')"
set tasks_sql "
select task_id as wf_task_id
......@@ -86,13 +69,24 @@ if {"" != $button_confirm} {
"
db_foreach tasks $tasks_sql {
ns_log Notice "new-rfc: canceling task $wf_task_id"
set journal_id [im_workflow_task_action -task_id $wf_task_id -action "cancel" -message "Reassigning task"]
set message "Canceling task #$task_id in case #$case_id as part of WF reset"
set journal_id [im_workflow_new_journal -case_id $case_id -action "cancel" -action_pretty "Cancel Task" -message $message]
db_string cancel_task "select workflow_case__cancel_task(:wf_task_id, :journal_id)"
# set journal_id [im_workflow_task_action -task_id $wf_task_id -action "cancel" -message "Cancel task"]
}
ns_log Notice "new-rfc: adding a token to place=$place_key"
im_exec_dml add_token "workflow_case__add_token (:case_id, :place_key, :journal_id)"
# enable the very first transition
im_exec_dml sweep "workflow_case__sweep_automatic_transitions (:case_id, :journal_id)"
db_string start "select workflow_case__start_case(:case_id, :user_id, :peer_ip, :reset_message)"
# Re-activate the case. Not sure why the case can get "finished" during wf__start_case, but it seems to happen...
# db_dml update_case "update wf_cases set state = 'active' where case_id = :case_id"
# Skip the very first transition as always
# im_workflow_skip_first_transition -case_id $case_id
# Continue to "move
# set sweep_journal_id [im_workflow_new_journal -case_id $case_id -action "sweep" -action_pretty "Sweeping workflow" -message "Sweeping workflow"]
# im_exec_dml sweep "workflow_case__sweep_automatic_transitions (:case_id, :sweep_journal_id)"
}
......@@ -8,7 +8,7 @@
<p>&nbsp;</p>
<form action=reset-case-2 method=POST>
<%= [export_vars -form {return_url project_id task_id place_key action_pretty}] %>
<%= [export_vars -form {return_url case_id task_id place_key action_pretty}] %>
<input type="submit" name="button_cancel" value="<%= [lang::message::lookup "" intranet-workflow.Cancel_Button "Cancel"] %>">
<input type="submit" name="button_confirm" value="<%= [lang::message::lookup "" intranet-workflow.Confirm_Button "Confirm %action_pretty%"] %>">
</form>
......@@ -11,9 +11,9 @@ ad_page_contract {
@author Frank Bergmann (frank.bergmann@project-open.com)
} {
{ task_id:integer 0}
{ project_id:integer 0}
{ case_id:integer 0}
{ place_key "tagged"}
{ action_pretty "l&ouml;schen" }
{ action_pretty "Undefined" }
{ return_url ""}
}
......@@ -22,7 +22,7 @@ ad_page_contract {
# ---------------------------------------------------------------------
set user_id [auth::require_login]
set page_title "RFC $action_pretty"
set page_title [lang::message::lookup "" intranet-workflow.Reset_Workflow_Case "Reset Workflow Case"]
set date_format "YYYY-MM-DD"
set bgcolor(0) " class=roweven"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment