Index: openacs-4/packages/workflow/workflow.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/workflow/workflow.info,v
diff -u -r1.19 -r1.20
--- openacs-4/packages/workflow/workflow.info 8 Aug 2006 21:27:24 -0000 1.19
+++ openacs-4/packages/workflow/workflow.info 17 Jun 2010 18:46:09 -0000 1.20
@@ -6,6 +6,8 @@
Workflows
f
t
+ f
+ t
workflow
@@ -22,20 +24,20 @@
It supports the Bug Tracker, CMS publication, simple approval, and much more.
<p>
For more information, see: <a href="http://www.collaboraid.biz/developer/workflow-spec">the workflow specification</a>.
+ 0
-
-
+
-
+
-
+
Index: openacs-4/packages/workflow/tcl/case-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/workflow/tcl/case-procs.tcl,v
diff -u -r1.42 -r1.43
--- openacs-4/packages/workflow/tcl/case-procs.tcl 18 Jun 2008 21:42:42 -0000 1.42
+++ openacs-4/packages/workflow/tcl/case-procs.tcl 17 Jun 2010 18:46:09 -0000 1.43
@@ -1206,12 +1206,17 @@
} {
db_transaction {
if { $replace_p } {
- db_dml delete_assignees {}
+ workflow::case::role::assignees_remove -case_id $case_id -role_id $role_id
}
foreach party_id $party_ids {
if { [catch {
db_dml insert_assignee {}
+
+ callback workflow::case::role::after_assign \
+ -case_id $case_id \
+ -party_id $party_id
+
} errMsg] } {
set already_assigned_p [db_string already_assigned_p {}]
if { !$already_assigned_p } {
@@ -1240,9 +1245,38 @@
} {
db_dml delete_assignee {}
+ callback workflow::case::role::after_unassign \
+ -case_id $case_id \
+ -party_id $party_id
+
workflow::case::role::flush_cache -case_id $case_id
}
+ad_proc -public workflow::case::role::assignees_remove {
+ {-case_id:required}
+ {-role_id:required}
+} {
+ Remove all assignees in this role
+
+ @param case_id the ID of the case.
+ @param role_id the ID of the role to remove the assignees from.
+
+ @author Ryan Gallimore
+} {
+ set assignees [workflow::case::role::get_assignees -case_id $case_id -role_id $role_id]
+ foreach assignee $assignees {
+ foreach {party_id email name} {
+ callback workflow::case::role::after_unassign \
+ -case_id $case_id \
+ -party_id $party_id
+ }
+ }
+
+ db_dml delete_assignees {}
+
+ workflow::case::role::flush_cache -case_id $case_id
+}
+
ad_proc -public workflow::case::role::assign {
{-case_id:required}
{-array:required}
Index: openacs-4/packages/workflow/tcl/case-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/workflow/tcl/case-procs.xql,v
diff -u -r1.14 -r1.15
--- openacs-4/packages/workflow/tcl/case-procs.xql 5 Feb 2004 10:37:33 -0000 1.14
+++ openacs-4/packages/workflow/tcl/case-procs.xql 17 Jun 2010 18:46:09 -0000 1.15
@@ -137,7 +137,7 @@
-
+
delete from workflow_case_role_party_map
where case_id = :case_id
Index: openacs-4/packages/workflow/tcl/workflow-callback-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/workflow/tcl/workflow-callback-procs.tcl,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/workflow/tcl/workflow-callback-procs.tcl 17 Jun 2010 18:47:12 -0000 1.1
@@ -0,0 +1,19 @@
+ad_library {
+ ad_proc -callback procs for workflow
+}
+
+ad_proc -callback workflow::case::role::after_assign {
+ {-case_id:required}
+ {-party_id:required}
+} {
+ After assignment callback to execute arbitrary code after
+ a party is assigned to a role.
+} -
+
+ad_proc -callback workflow::case::role::after_unassign {
+ {-case_id:required}
+ {-party_id:required}
+} {
+ After assignment callback to execute arbitrary code after
+ a party is unassigned from a role.
+} -
\ No newline at end of file