Method

import com.documentum.fc.client.*;
import com.documentum.fc.common.DfException;
import com.documentum.fc.common.DfId;
import com.documentum.fc.common.IDfLoginInfo;
import com.documentum.com.DfClientX;
import com.documentum.fc.methodserver.*;

import java.util.*;
import java.io.PrintWriter;


public class CustomJavaMethodPrintParams implements IDfMethod
{

    // fields to store Workflow specific params passed by Content Server
    private String m_docbasename = null;
    private String m_serviceconfigname = null;
    private String m_workflowid = null;
    private String m_actseqno = null;
    private int m_timertype = 0;
    private String m_username = null;
    private String m_loginTicket=null;

    // the following are the param names passed by Server
    private static final String DOCBASE_NAME = "docbase_name";
    private static final String SERVERCONFIG_NAME = "serverconfig_name";
    private static final String WORKFLOW_ID = "workflow_id";
    private static final String ACT_SEQNO = "act_seqno";
    private static final String TIMER_TYPE = "timer_type";
    private static final String USER_NAME = "user_name";
    private static final String TICKET_KEY = "ticket";

    public int execute (Map params, PrintWriter ostream) throws Exception
    {

        IDfSession session = null;

        initWorkflowParams(params);
        System.out.println("Username is .."+m_username);
            System.out.println("Docbase name is ...."+m_docbasename);
            System.out.println("Workflow Id is ..."+m_workflowid);
            System.out.println("Activity seq no is.."+m_actseqno);
            System.out.println("Timer type is..."+m_timertype);
            System.out.println("ServerConfig name is ..."+m_serviceconfigname);
        IDfSessionManager sessionMgr = null;

        try {

            sessionMgr  = login();
            session = sessionMgr.getSession(m_docbasename);


            return 0;
        }
        catch (DfException e)
            {

                String msg = "Exception in CustomJavaMethodPrintParams::execute() for WorkitemID: " + m_workflowid;
                System.err.println(msg + " - " + e.getMessage());
  e.printStackTrace();
                return -1;
            }
        finally
            {
                if ( session != null )
                    sessionMgr.release(session);

               // if(sessionMgr != null)
                //    sessionMgr.clearIdentities(); // Has side effect of flushing the session pool before garbage collection
            }

    } // end execute()


    /****************************************************************
        This method reads the passed in params and store them in class member variables
     ******************************************************************/
      protected void initWorkflowParams(Map params)
    {
        // get the 6 WF-related parameters always passed in by Server
       Set keys = params.keySet();
       Iterator iter = keys.iterator();
       while (iter.hasNext())
       {
           String key = (String) iter.next();
           //int timerkey = 0;
           if( (key == null) || (key.length() == 0) )
           {
               continue;
           }
           String []value = (String[])params.get(key);

           if ( key.equalsIgnoreCase(USER_NAME) )
               m_username = (value.length > 0) ? value[0] : "";
           else if ( key.equalsIgnoreCase(DOCBASE_NAME) ) {
               m_docbasename = (value.length > 0) ? value[0] : "";
                System.out. println("docbase name............: " + m_docbasename);
           }
           else if ( key.equalsIgnoreCase(WORKFLOW_ID) )
               m_workflowid = (value.length > 0) ? value[0] : "";
           else if ( key.equalsIgnoreCase(ACT_SEQNO) )
               m_actseqno = (value.length > 0) ? value[0] : "";
           else if ( key.equalsIgnoreCase(TIMER_TYPE) )
               m_timertype = (value.length > 0) ? (Integer.parseInt(value[0])) : 1 ;
           else if ( key.equalsIgnoreCase(SERVERCONFIG_NAME) )
               m_serviceconfigname = (value.length > 0) ? value[0] : "";
           else if ( key.equalsIgnoreCase(TICKET_KEY) )
               m_loginTicket = (value.length > 0) ? value[0] : "";
       }
   }

   protected IDfSessionManager login() throws DfException
   {
       if (m_docbasename == null || m_username == null || m_loginTicket == null )
           return null;

       IDfLoginInfo li = new DfClientX().getLoginInfo();
       li.setUser(m_username);
       li.setPassword(m_loginTicket);
       li.setDomain(null);

       IDfSessionManager sessionMgr = DfClient.getLocalClient().newSessionManager();
       sessionMgr.setIdentity(m_docbasename, li);
       return sessionMgr;

    }
}

猜你喜欢

转载自l007it.iteye.com/blog/1484056