public class ProcessInstanceSolController {
    public String processId;
    public String SolId;
    public ProcessInstance objProcessInstance;
    public Solution_Programme__c objSol {get; set;}
    public string Comments {get;set;}
    public string ApprovalAction {get;set;}
    public PageReference redirectPage;
    //初始化
    public ProcessInstanceSolController()
    {
        processId = ApexPages.currentPage().getParameters().get('id'); //获取当前的工作流ID
        SolId = ApexPages.currentPage().getParameters().get('SolId'); //获取当前case ID
        objSol = [select Name,Confirmation_Result__c,Remarks__c,ProcessOfApproval__c from Solution_Programme__c where id =:SolId]; //获取当前Opp对象为了后面更新comments和Reson
        redirectPage = new PageReference('/'+SolId);
     }
    //审批
     public PageReference Approval(){   
      try
        {
        	System.debug('ApprovalAction:'+ApprovalAction);
            if(ApprovalAction == 'Approve' || ApprovalAction == 'Reject')
            {
                //system.debug('ApprovalAction:'+this.ApprovalAction);
                // User nextapprover =[select Id from User where username = 'yinghai_guo_neo@sina.com'];//新建立一个object 并mapping关系
                if(ApprovalAction == 'Reject'){
                	ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '请填写反馈结果，并按审批按钮'));
                	return null;
                }
                if(objSol.Confirmation_Result__c == null){
                	ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '批准之前必须填写反馈结果！'));
                	return null;
                }
                objSol.ProcessOfApproval__c = false;
                update objSol;
                Approval.ProcessWorkitemRequest approvalNode = new Approval.ProcessWorkitemRequest();
               // system.debug('comments:'+objOpp.Comments__c);
                approvalNode.setComments(Comments);
                approvalNode.setAction(ApprovalAction);
                // approvalNode.setNextApproverIds(new Id[]{nextapprover.Id});                
                approvalNode.setWorkitemId(processId);
                system.debug('processID'+processId);
                Approval.ProcessResult result = Approval.process(approvalNode);
                system.debug('result:'+result.isSuccess());
                
                
                //system.debug('update objOpp');
             }
            else
            {
                //system.debug('ApprovalAction:'+this.ApprovalAction);
            }
        }
        catch(Exception ex)
        {
            system.debug('Ex:'+ex.getMessage());
         }
         return redirectPage;
    }
}