mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
MERGE DEV/3.2_INVITATION to HEAD
MOB-124 First cut of invitation service First cut group site membership git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13378 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
# Display labels for out-of-the-box Site-oriented Workflows
|
||||
|
||||
#
|
||||
# Moderated Invitation
|
||||
#
|
||||
|
||||
wf_invitation-moderated.workflow.title=Invitation (Moderated)
|
||||
wf_invitation-moderated.workflow.description=Moderated invitation to a resource such as a web site.
|
||||
|
||||
wf_invitation-moderated-model.type.approveInvitationTask.title=Approve Invitation
|
||||
wf_invitation-moderated-model.type.approveInvitationTask.description=Approve Invitation
|
||||
|
@@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- Moderated invitation workflow -->
|
||||
|
||||
<model name="wf:invitation-moderated-workflow-model" xmlns="http://www.alfresco.org/model/dictionary/1.0">
|
||||
|
||||
<imports>
|
||||
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d" />
|
||||
<import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm" />
|
||||
<import uri="http://www.alfresco.org/model/workflow/1.0" prefix="wf" />
|
||||
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm" />
|
||||
</imports>
|
||||
|
||||
<types>
|
||||
<type name="wf:moderatedInvitationSubmitTask">
|
||||
<parent>bpm:startTask</parent>
|
||||
<mandatory-aspects>
|
||||
<aspect>bpm:assignee</aspect>
|
||||
<aspect>bpm:groupAssignee</aspect>
|
||||
<aspect>wf:moderatedInvitationStats</aspect>
|
||||
</mandatory-aspects>
|
||||
</type>
|
||||
|
||||
<type name="wf:moderatedInvitationReviewTask">
|
||||
<parent>bpm:workflowTask</parent>
|
||||
<properties>
|
||||
<property name="wf:reviewComments">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="cm:owner">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
</properties>
|
||||
|
||||
<mandatory-aspects>
|
||||
<aspect>bpm:groupAssignee</aspect>
|
||||
<aspect>cm:ownable</aspect>
|
||||
<aspect>wf:moderatedInvitationStats</aspect>
|
||||
</mandatory-aspects>
|
||||
|
||||
</type>
|
||||
|
||||
</types>
|
||||
|
||||
<aspects>
|
||||
<aspect name="wf:moderatedInvitationStats">
|
||||
<properties>
|
||||
<property name="wf:inviteeUserName">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:resourceType">
|
||||
<type>d:text</type>
|
||||
<default>WEB_SITE</default>
|
||||
</property>
|
||||
<property name="wf:resourceName">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:inviteeRole">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:inviteeComments">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
</properties>
|
||||
</aspect>
|
||||
</aspects>
|
||||
|
||||
|
||||
</model>
|
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- Moderated Invitation Workflow -->
|
||||
|
||||
<process-definition xmlns="urn:jbpm.org:jpdl-3.1"
|
||||
name="wf:invitation-moderated">
|
||||
|
||||
<swimlane name="initiator">
|
||||
<assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
|
||||
<actor>#{bpm_assignee.properties['cm:userName']}</actor>
|
||||
</assignment>
|
||||
</swimlane>
|
||||
|
||||
<start-state name="start">
|
||||
<task name="wf:moderatedInvitationSubmitTask" swimlane="initiator" />
|
||||
<transition to="review" name=""></transition>
|
||||
</start-state>
|
||||
|
||||
<swimlane name="approver">
|
||||
<assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
|
||||
<pooledactors>#{bpm_groupAssignee}</pooledactors>
|
||||
</assignment>
|
||||
</swimlane>
|
||||
|
||||
<task-node name="review">
|
||||
<task name="wf:moderatedInvitationReviewTask" swimlane="approver" />
|
||||
<transition name="reject" to="rejected">
|
||||
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
|
||||
<script>
|
||||
<variable name="wf_reviewer" access="write" />
|
||||
<expression>person.properties.userName</expression>
|
||||
</script>
|
||||
</action>
|
||||
</transition>
|
||||
|
||||
<transition name="approve" to="approved">
|
||||
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
|
||||
<script>
|
||||
<variable name="wf_reviewer" access="write" />
|
||||
<expression>person.properties.userName</expression>
|
||||
</script>
|
||||
</action>
|
||||
</transition>
|
||||
</task-node>
|
||||
|
||||
<task-node name="rejected">
|
||||
<transition name="" to="end" >
|
||||
<action class="org.alfresco.repo.invitation.ModeratedActionReject"/>
|
||||
</transition>
|
||||
</task-node>
|
||||
|
||||
<task-node name="approved">
|
||||
<transition name="" to="end" >
|
||||
<action class="org.alfresco.repo.invitation.ModeratedActionApprove"/>
|
||||
</transition>
|
||||
</task-node>
|
||||
|
||||
<end-state name="end" />
|
||||
|
||||
</process-definition>
|
@@ -0,0 +1,40 @@
|
||||
# Display labels for out-of-the-box Site-oriented Workflows
|
||||
|
||||
#
|
||||
# Invite Workflow
|
||||
#
|
||||
|
||||
wf_invite.workflow.title=Invitation (Nominated)
|
||||
wf_invite.workflow.description=Invitation to a Share Site, nominated by a site manager
|
||||
|
||||
# Invite Task Definitions
|
||||
|
||||
wf_invite-workflow-model.type.wf_inviteToSiteTask.title=Start Invite
|
||||
wf_invite-workflow-model.type.wf_inviteToSiteTask.description=Start an invite to a Site
|
||||
wf_invite-workflow-model.type.wf_invitePendingTask.title=Site Invite
|
||||
wf_invite-workflow-model.type.wf_invitePendingTask.description=Invite to a Site
|
||||
wf_invite-workflow-model.type.wf_rejectInviteTask.title=Rejected
|
||||
wf_invite-workflow-model.type.wf_rejectInviteTask.description=Rejected
|
||||
wf_invite-workflow-model.type.wf_acceptInviteTask.title=Accepted
|
||||
wf_invite-workflow-model.type.wf_acceptInviteTask.description=Accepted
|
||||
|
||||
# Invite Process Definitions
|
||||
|
||||
wf_invite.node.start.title=Start
|
||||
wf_invite.node.start.description=Start
|
||||
wf_invite.node.invitePending.title=Invite Pending
|
||||
wf_invite.node.invitePending.description=Invite Pending
|
||||
wf_invite.node.invitePending.transition.reject.title=Reject
|
||||
wf_invite.node.invitePending.transition.reject.description=Reject
|
||||
wf_invite.node.invitePending.transition.accept.title=Accept
|
||||
wf_invite.node.invitePending.transition.accept.description=Accept
|
||||
wf_invite.node.inviteRejected.title=Rejected
|
||||
wf_invite.node.inviteRejected.description=Rejected
|
||||
wf_invite.task.wf_rejectInviteTask.title=Rejected
|
||||
wf_invite.task.wf_rejectInviteTask.description=Rejected
|
||||
wf_invite.node.inviteAccepted.title=Accepted
|
||||
wf_invite.node.inviteAccepted.description=Accepted
|
||||
wf_invite.task.wf_acceptInviteTask.title=Accepted
|
||||
wf_invite.task.wf_acceptInviteTask.description=Accepted
|
||||
wf_invite.node.end.title=End
|
||||
wf_invite.node.end.description=End
|
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- Nominated Invitation Workflow Model -->
|
||||
|
||||
<model name="wf:invite-workflow-model" xmlns="http://www.alfresco.org/model/dictionary/1.0">
|
||||
|
||||
<imports>
|
||||
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d" />
|
||||
<import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm" />
|
||||
<import uri="http://www.alfresco.org/model/workflow/1.0" prefix="wf" />
|
||||
</imports>
|
||||
|
||||
<types>
|
||||
|
||||
<!-- Custom Tasks -->
|
||||
<type name="wf:inviteToSiteTask">
|
||||
<parent>bpm:startTask</parent>
|
||||
<properties>
|
||||
<property name="wf:serverPath">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:acceptUrl">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:rejectUrl">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:inviteTicket">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:inviterUserName">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:inviteeUserName">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:inviteeFirstName">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:inviteeLastName">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:inviteeGenPassword">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:resourceType">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:resourceName">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
<property name="wf:inviteeSiteRole">
|
||||
<type>d:text</type>
|
||||
</property>
|
||||
</properties>
|
||||
<mandatory-aspects>
|
||||
<aspect>bpm:assignee</aspect>
|
||||
</mandatory-aspects>
|
||||
</type>
|
||||
|
||||
<type name="wf:invitePendingTask">
|
||||
<parent>bpm:workflowTask</parent>
|
||||
</type>
|
||||
|
||||
<type name="wf:acceptInviteTask">
|
||||
<parent>bpm:workflowTask</parent>
|
||||
</type>
|
||||
|
||||
<type name="wf:rejectInviteTask">
|
||||
<parent>bpm:workflowTask</parent>
|
||||
</type>
|
||||
|
||||
</types>
|
||||
</model>
|
@@ -0,0 +1,88 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- Nominated invitation -->
|
||||
|
||||
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:invite">
|
||||
|
||||
<swimlane name="initiator"/>
|
||||
|
||||
<start-state name="start">
|
||||
|
||||
<task name="wf:inviteToSiteTask" swimlane="initiator" />
|
||||
|
||||
<transition name="sendInvite" to="invitePending">
|
||||
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
|
||||
<script>
|
||||
var workflowId = workflowinstanceid;
|
||||
var inviterPerson = people.getPerson(wf_inviterUserName);
|
||||
var inviteePerson = people.getPerson(wf_inviteeUserName);
|
||||
var site = siteService.getSite(wf_resourceName);
|
||||
var siteName = site.shortName;
|
||||
if (site.title.length() > 0)
|
||||
{
|
||||
siteName = site.title;
|
||||
}
|
||||
var params = "?inviteId=" + workflowId +
|
||||
"&inviteeUserName=" + wf_inviteeUserName +
|
||||
"&siteShortName=" + wf_resourceName +
|
||||
"&inviteTicket=" + wf_inviteTicket;
|
||||
var acceptLink = wf_serverPath + wf_acceptUrl + params;
|
||||
var rejectLink = wf_serverPath + wf_rejectUrl + params;
|
||||
var mail = actions.create("mail");
|
||||
mail.parameters.from = inviterPerson.properties["cm:email"];
|
||||
mail.parameters.to = inviteePerson.properties["cm:email"];
|
||||
mail.parameters.subject = "Invitation to join '" + siteName + "' site";
|
||||
|
||||
var results = search.luceneSearch(" PATH:\"app:company_home/app:dictionary/app:email_templates/cm:invite/cm:invite-email.ftl\"");
|
||||
var template = results[0];
|
||||
|
||||
var args = [];
|
||||
args["inviteePersonRef"] = inviteePerson.nodeRef.toString();
|
||||
args["inviterPersonRef"] = inviterPerson.nodeRef.toString();
|
||||
args["siteName"] = siteName;
|
||||
args["inviteeSiteRole"] = wf_inviteeSiteRole;
|
||||
args["inviteeUserName"] = wf_inviteeUserName;
|
||||
args["inviteeGenPassword"] = wf_inviteeGenPassword;
|
||||
args["acceptLink"] = acceptLink;
|
||||
args["rejectLink"] = rejectLink;
|
||||
var mail_text = inviteePerson.processTemplate(template, args);
|
||||
|
||||
mail.parameters.text = mail_text;
|
||||
mail.execute(bpm_package);
|
||||
</script>
|
||||
</action>
|
||||
</transition>
|
||||
</start-state>
|
||||
|
||||
<swimlane name="assignee">
|
||||
<assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
|
||||
<actor>#{bpm_assignee.properties['cm:userName']}</actor>
|
||||
</assignment>
|
||||
</swimlane>
|
||||
|
||||
<task-node name="invitePending">
|
||||
<task name="wf:invitePendingTask" swimlane="assignee" />
|
||||
<transition name="accept" to="inviteAccepted">
|
||||
<action class="org.alfresco.repo.invitation.site.AcceptInviteAction"/>
|
||||
</transition>
|
||||
<transition name="reject" to="inviteRejected">
|
||||
<action class="org.alfresco.repo.invitation.site.RejectInviteAction"/>
|
||||
</transition>
|
||||
<transition name="cancel" to="end">
|
||||
<action class="org.alfresco.repo.invitation.site.CancelInviteAction"/>
|
||||
</transition>
|
||||
</task-node>
|
||||
|
||||
<task-node name="inviteAccepted">
|
||||
<task name="wf:acceptInviteTask" swimlane="initiator" />
|
||||
<transition name="end" to="end"/>
|
||||
</task-node>
|
||||
|
||||
<task-node name="inviteRejected">
|
||||
<task name="wf:rejectInviteTask" swimlane="initiator" />
|
||||
<transition name="end" to="end"/>
|
||||
</task-node>
|
||||
|
||||
<end-state name="end" />
|
||||
|
||||
</process-definition>
|
Reference in New Issue
Block a user