Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

Currently, I have an approval task process that assigns a task to an entire group. But only one member of the group has to approve, while it takes two to reject.

I edited the task process completion step to check for any approvals in the task list, unless that task itself was changing the status to approve.

My question is I'm not sure how to check the Workflow Tasks List for an approval related to that specific process. I didn't see a Workflow ID, but not a Task Process ID I could sort by.

Second. The Task process deletes the remaining task assignments since it only requires one approval from the group to complete the task process. I'm all ears for a better implementation.

share|improve this question
add comment

1 Answer

up vote 3 down vote accepted

I understand you want approval workflow on a item and approval task is assigned to group. the item is considered approved when any one person in the group approves it but considered rejected only if two persons reject it.

Assuming you start a new custom workflow in SHarepoint Designer, following the pseudo code below should help you.

  1. You may leverage "Start Approval Process" action and assign it to a group {ApproverGroup}.
  2. Create workflow variables: {RejectCount} and {FirstRejectedBy}
  3. Manipulate Approval Task process in steps below:
  4. Choose "Change Behavior of Single Task" with logic like:

if currentTask.Outcome = Approved

set IsItemApproved = yes

else if currentTask.Outcome = Rejected and {RejectCount} = 0

set {rejectCount} = 1

set {FirstRejectedBy} = currentTask.modifiedBy

use "append Task" action and assign task to {ApproverGroup}

else if currentTask.Outcome = Rejected and RejectCount = 1 and
currentTask.modifiedBy = {FirstRejectedBy}

send email (action) to currentTask.modifiedBy that you have already rejected

use "append Task" action and assign task to {ApproverGroup}

else if currentTask.Outcome = Rejected and RejectCount = 1

set IsItemApproved = no

  1. Finally, modify "completion condition" of the approval task process so that it is based on value of {IsItemApproved}, not based on count of remaining and pending tasks.
share|improve this answer
    
This is almost exactly what I did; However, I changed the completion condition to be based on the number of approved tasks to be equal to or greater than one. I'll have to test the IsItemApproved equal to Approved method and see if it brings up any bugs in our forms. –  surfasb Nov 29 '11 at 16:54
    
good to know that... let me know –  Ashish Patel Nov 29 '11 at 17:57
    
Looks good, just as intended. Thanks. –  surfasb Nov 30 '11 at 16:33
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.