06-18-2009 04:26 PM
06-18-2009 07:09 PM
<event type="node-enter">
<action class="com.someco.bpm.ExternalReviewNotification"/>
</event>
String recipient = (String) executionContext.getVariable(ExternalReviewNotification.RECIP_PROCESS_VARIABLE);
StringBuffer sb = new StringBuffer();
sb.append("You have been assigned to a task named ");
sb.append(executionContext.getToken().getNode().getName());
…SNIP – Continue to build the body as appropriate…
Action mailAction = this.actionService.createAction(MailActionExecuter.NAME);
mailAction.setParameterValue(MailActionExecuter.PARAM_SUBJECT, ExternalReviewNotification.SUBJECT);
mailAction.setParameterValue(MailActionExecuter.PARAM_TO, recipient);
mailAction.setParameterValue(MailActionExecuter.PARAM_FROM, ExternalReviewNotification.FROM_ADDRESS);
mailAction.setParameterValue(MailActionExecuter.PARAM_TEXT, sb.toString());
this.actionService.executeAction(mailAction, null);
06-18-2009 09:53 PM
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<runas>admin</runas>
<script>
<expression>
for each (user in people.getMembers(people.getGroup('GROUP_Company'), false)){
var mail = actions.create("mail");
mail.parameters.to = user.properties["cm:email"];
mail.parameters.subject = "One or more Content has been sent to you for Review.";
mail.parameters.from = initiator.properties["cm:email"];
mail.parameters.text = "New content has been submitted and are awaiting your review!";
mail.execute(bpm_package);
}
</expression>
</script>
</action>
06-19-2009 06:31 PM
06-19-2009 06:51 PM
bpm_package.children[0].properties["bpm_comment"]
but didnt work .. 06-20-2009 09:14 PM
token.comments.get(0).message
09-29-2009 12:36 PM
09-29-2009 04:25 PM
09-29-2009 05:11 PM
If you are talking about the out-of-the-box parallel processes, the assignees are either in bpm_assignees for users or bpm_groupAssignee for group assignment. You can iterate over the users in bpm_assignees and then send an email using the out-of-the-box mail action or you can write your own action that uses the Java Mail API to send the email. For group assignment, you'll have to ask the group for its member list and then iterate over those.
Hope that helps,
Jeff
xml version = "1.0" encoding = "UTF-8"?
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:review">
<swimlane name="initiator" />
<start-state name="start">
<task name="wf:submitReviewTask" swimlane="initiator" />
<transition name="" to="review" />
</ start-state>
<swimlane name="reviewer">
<assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
<actor> # (bpm_assignee) </ actor>
</ assignment>
</ swimlane>
<task-node name="review">
<task name="wf:reviewTask" swimlane="reviewer">
<event type="task-create">
<script>
if (bpm_workflowDueDate! = void) taskInstance.dueDate = bpm_workflowDueDate;
if (bpm_workflowPriority! = void) taskInstance.priority = bpm_workflowPriority;
</ script>
</ event>
</ task>
<transition name="" to="completed" />
<event type="node-enter">
<! - Update the status to Rejected when we enter this task ->
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>
for (var i = 0, i <bpm_package.children.length i + +)
(
bpm_package.children [i]. properties [ "my: priority"] = bpm_workflowPriority;
bpm_package.children [i]. properties [ "my: ultimoestado"] = "Pendent";
bpm_package.children [i]. properties [ "my: ultimotecnico"] = bpm_assignee.properties [ "cm: userName"];
if (bpm_package.children [i]. properties [ "my: state"] == null) (
bpm_package.children [i]. properties [ "my: state"] = "Pendent";
bpm_package.children [i]. properties [ "my: tecnico"] = bpm_assignee.properties [ "cm: userName"];
) else (
bpm_package.children [i]. properties [ "my: state"] [bpm_package.children [i]. properties [ "my: state."] length] = "Pendent";
bpm_package.children [i]. properties [ "my: tecnico"] [bpm_package.children [i]. properties [ "my: tecnico."] length] = bpm_assignee.properties [ "cm: userName"];
)
bpm_package.children [i]. save ();
bpm_package.children [i]. setInheritsPermissions (false);
bpm_package.children var permissions = [i]. permissions;
var acl = [];
for (var j = 0, j <permissions.length j + +)
(
acl = permissions [j]. (";"); split
var perm = acl [2];
var grp = acl [1];
bpm_package.children [i]. removePermission (perm, grp);
)
bpm_package.children [i]. setPermission ( "Consumer" bpm_assignee.properties [ "cm: userName"]);
)
var mail = actions.create ( "mail");
bpm_assignee.properties mail.parameters.to = [ "cm: email"];
mail.parameters.subject = "Notice of assignment" + bpm_workflowDescription;
mail.parameters.from = "noreply@edu.gva.es";
mail.parameters.text = "No reply to this task mensaje.La" + bpm_workflowDescription + "has been assigned must review here http://notasinternas.edu.gva.es";
mail.execute (bpm_package);
</ script>
</ action>
</ event>
</ task-node>
<task-node name="completed">
<event type="node-enter">
<! - Update the status to Rejected when we enter this task ->
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>
for (var z = 0, z <bpm_package.children.length, z + +)
(
bpm_package.children [z]. properties [ "my: priority"] = bpm_workflowPriority;
bpm_package.children [z]. properties [ "my: ultimoestado"] = "acabat";
bpm_package.children [z]. properties [ "my: ultimotecnico"] = bpm_assignee.properties [ "cm: userName"];
if (bpm_package.children [z]. properties [ "my: state"] == null) (
bpm_package.children [z]. properties [ "my: state"] = "acabat";
bpm_package.children [z]. properties [ "my: tecnico"] = bpm_assignee.properties [ "cm: userName"];
) else (
bpm_package.children [z]. properties [ "my: state"] [bpm_package.children [z]. properties [ "my: state."] length] = "acabat";
bpm_package.children [z]. properties [ "my: tecnico"] [bpm_package.children [z]. properties [ "my: tecnico."] length] = bpm_assignee.properties [ "cm: userName"];
)
bpm_package.children [z]. save ();
)
</ script>
</ action>
</ event>
<transition name="" to="end" />
</ task-node>
<end-state name="end" />
</ process-definition>
xml version = "1.0" encoding = "UTF-8"?
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:parallelreview">
<swimlane name="initiator"> </ swimlane>
<start-state name="start">
<task name="wf:submitParallelReviewTask" swimlane="initiator" />
<transition name="" to="startreview"/>
</ start-state>
<node name="startreview">
<action class="org.alfresco.repo.workflow.jbpm.ForEachFork">
<foreach> # (bpm_assignees) </ foreach>
<var> reviewer </ var>
</ action>
<event type="node-enter">
<script>
<variable name="wf_approveCount" access="write" />
<expression>
wf_approveCount = 0;
</ expression>
</ script>
</ event>
<transition name="review" to="review" />
</ node>
<task-node name="review">
<task name="wf:reviewTask">
<assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
<actor> # (reviewer) </ actor>
</ assignment>
</ task>
<event type="node-enter">
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>
for (var i = 0, i <bpm_package.children.length i + +)
(
bpm_package.children [i]. setInheritsPermissions (false);
bpm_package.children var permissions = [i]. permissions;
var acl = [];
for (var j = 0, j <permissions.length j + +)
(
acl = permissions [j]. (";"); split
var perm = acl [2];
var grp = acl [1];
bpm_package.children [i]. removePermission (perm, grp);
var mail = actions.create ( "mail");
reviewer.properties mail.parameters.to = [ "cm: email"];
mail.parameters.subject = "Notice of assignment;
mail.parameters.from = "noreply@edu.gva.es";
mail.parameters.text = acl + "Do not respond to this mensaje.Tiene an assignment should review http://notasinternas.edu.gva.es here";
mail.execute (bpm_package)
)
bpm_package.children [i]. setPermission ( "Coordinator", reviewer.properties [ "cm: userName"]);
)
var mail = actions.create ( "mail");
reviewer.properties mail.parameters.to = [ "cm: email"];
mail.parameters.subject = "Notice of assignment;
mail.parameters.from = "noreply@edu.gva.es";
mail.parameters.text = acl + "Do not respond to this mensaje.Tiene an assignment should review http://notasinternas.edu.gva.es here";
mail.execute (bpm_package);
</ script>
</ action>
</ event>
<transition name="reject" to="endreview" />
<transition name="approve" to="endreview">
<script>
<variable name="wf_approveCount" access="read,write" />
<expression>
wf_approveCount = wf_approveCount +1;
</ expression>
</ script>
</ transition>
</ task-node>
<join name="endreview">
<transition to="isapproved" />
</ join>
<decision name="isapproved">
<event type="node-enter">
<script>
<variable name="wf_reviewerCount" access="write"/>
<variable name="wf_requiredPercent" access="write"/>
<variable name="wf_actualPercent" access="write"/>
<expression>
wf_requiredPercent = wf_requiredApprovePercent;
wf_reviewerCount = bpm_assignees.size ();
wf_actualPercent = ((wf_approveCount * 100) / wf_reviewerCount);
</ expression>
</ script>
</ event>
<transition name="reject" to="rejected" />
<transition name="approve" to="approved">
<condition> # (wf_actualPercent> = wf_requiredApprovePercent) </ condition>
</ transition>
</ decision>
<task-node name="rejected">
<transition to="end" />
</ task-node>
<task-node name="approved">
<transition to="end" />
</ task-node>
<end-state name="end"/>
</ process-definition>
09-29-2009 06:51 PM
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.