K2Helper

Published Monday, July 07, 2008 2:27 PM
using System;
using System.Collections;  
using System.Collections.Generic;
using System.Text;
using System.Data;
using SourceCode.Workflow.Client;
using SourceCode.Workflow.Common;
using SourceCode.Workflow.Runtime;  
 
namespace MyCommon
{
    /// <summary>
    /// K2Helper Class
    /// </summary>
    public class K2Helper: IDisposable
    {
        private string serverName = string.Empty;
        private SourceCode.Workflow.Client.Connection conn = null;
        private string errorMessage = string.Empty;
        private SourceCode.Workflow.Client.User user = null;       

        /// <summary>
        /// Initializes a new instance of the <see cref="K2HelperClient"/> class.
        /// </summary>
        /// <param name="ServerName">Name of the server.</param>
        public K2Helper(string ServerName)
        {
            serverName = ServerName;
            try
            {
                Open();
            }catch (Exception ex)
            {
                errorMessage = ex.Message + "," + ex.Source;
            }
        }

        /// <summary>
        /// Gets the name of the server.
        /// </summary>
        /// <value>The name of the server.</value>
        public string ServerName
        {
            get { return serverName; }
        }

        /// <summary>
        /// Gets the user.
        /// </summary>
        /// <value>The user.</value>
        public User User
        {
            get { return conn.User; }
        }

        /// <summary>
        /// Gets the error message.
        /// </summary>
        /// <value>The error message.</value>
        public string ErrorMessage
        {
            get { return errorMessage; }
        }

        /// <summary>
        /// Gets the conn.
        /// </summary>
        /// <value>The conn.</value>
        public SourceCode.Workflow.Client.Connection K2Conn
        {
            get
            {
                Open();
                return conn;
            }

            set { conn = value; }
        }

        /// <summary>
        /// Opens this instance.
        /// </summary>
        private void Open()
        {
            if (string.IsNullOrEmpty(serverName)) serverName = "localhost";  
            if (conn == null)
            {
                conn = new Connection();
                conn.Open(serverName);
            }
        }

        /// <summary>
        /// Impersonates the user.
        /// </summary>
        /// <param name="userName">Name of the user.</param>
        public void ImpersonateUser(string userName)
        {
            Open();
            conn.ImpersonateUser(userName);   
        }
        
        /// <summary>
        /// K2s the server event finish.
        /// </summary>
        /// <param name="k2SN">The k2 SN.</param>
        /// <returns></returns>
        public bool K2ServerEventFinish(string k2SN)
        {
            SourceCode.Workflow.Client.ServerItem k2ServerItem=null;    
            bool sts=false;
            try
            {
                Open();
                k2ServerItem = conn.OpenServerItem(k2SN);
                k2ServerItem.Finish();
                sts = true;
            }
            catch (Exception ex)
            {
                errorMessage = ex.Message + "," + ex.Source;
            }
            finally
            {
                k2ServerItem = null;
            }
            return sts;
        }
                

        /// <summary>
        /// Starts the process instance.
        /// </summary>
        /// <param name="processName">Name of the process.</param>
        /// <param name="param">The param.</param>
        /// <returns></returns>
        public ProcessInstance StartProcessInstance(string processName, Hashtable param)
        {
            ProcessInstance instance = null;
            try
            {
                Open();
                instance = conn.CreateProcessInstance(processName);
                IDictionaryEnumerator list = param.GetEnumerator();
                while (list.MoveNext())
                {
                    instance.DataFields[list.Key.ToString()].Value = list.Value;
                }
                conn.StartProcessInstance(instance);
            }
            catch (Exception ex)
            {
                errorMessage = ex.Message + "," + ex.Source;
            }
            return instance;
        }

        /// <summary>
        /// Redirects the work list item.
        /// </summary>
        /// <param name="item">The item.</param>
        /// <param name="userName">Name of the user.</param>
        /// <returns></returns>
        public bool RedirectWorkListItem(WorklistItem item,string userName)
        {
            bool sts = false;
            try
            {
                if (item == null)
                {
                    errorMessage = "WorklistItem is null";
                    return false;
                }
                item.Redirect(userName);  
            }
            catch (Exception ex)
            {
                errorMessage = ex.Message + "," + ex.Source;
            }
            return sts;
        }

        /// <summary>
        /// Gets the work list item.
        /// </summary>
        /// <param name="k2SN">The k2 SN.</param>
        /// <returns></returns>
        public WorklistItem GetWorkListItem(string k2SN)
        {
            Open();
            WorklistItem item = conn.OpenWorklistItem(k2SN, "ASP", true, true);
            return item;
        }

        /// <summary>
        /// Gets the server item.
        /// </summary>
        /// <param name="k2SN">The k2 SN.</param>
        /// <returns></returns>
        public ServerItem GetServerItem(string k2SN)
        {
            Open();
            ServerItem item = conn.OpenServerItem(k2SN);
            return item;
        }

        /// <summary>
        /// Creates the work list data table.
        /// </summary>
        /// <returns></returns>
        private DataTable CreateWorkListDataTable()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Folio");  
            dt.Columns.Add("ProcInstID");
            dt.Columns.Add("StartDate");
            dt.Columns.Add("SerialNumber");
            return dt;
        }

        /// <summary>
        /// Gets the work list data table.
        /// </summary>
        /// <param name="list">The list.</param>
        /// <returns></returns>
        public DataTable GetWorkListDataTable(Worklist list)
        {
            DataTable dt = null;
            if (list != null && list.Count > 0)
            {
                dt = CreateWorkListDataTable();
                foreach (WorklistItem item in list)
                {
                    DataRow dr = dt.NewRow();
                    dr["Folio"] = item.ProcessInstance.Folio;
                    dr["ProcInstID"] = item.ProcessInstance.ID;
                    dr["StartDate"] = item.ProcessInstance.StartDate;
                    dr["SerialNumber"] = item.SerialNumber;  
                }
            }
            return dt;
        }

        /// <summary>
        /// Gets the work list.
        /// </summary>
        /// <returns></returns>
        public Worklist GetWorkList()
        {
            Open();
            Worklist list = conn.OpenWorklist();
            return list;
        }

        /// <summary>
        /// Gets the work list.
        /// </summary>
        /// <param name="criteria">The criteria.</param>
        /// <returns></returns>
        public Worklist GetWorkList(WorklistCriteria criteria)
        {
            Open();
            Worklist list = conn.OpenWorklist(criteria);
            return list;
        }

        /// <summary>
        /// Gets the work list.
        /// </summary>
        /// <param name="processName">Name of the process.</param>
        /// <returns></returns>
        public Worklist GetWorkListByProcessName(string processName)
        {
            WorklistCriteria criteria = new WorklistCriteria();
            criteria.AddFilterField(WCField.ProcessName, WCCompare.Equal, processName);
            return GetWorkList(criteria);   
        }

        /// <summary>
        /// Gets the work list by folio.
        /// </summary>
        /// <param name="folio">The folio.</param>
        /// <returns></returns>
        public Worklist GetWorkListByFolio(string folio)
        {
            WorklistCriteria criteria = new WorklistCriteria();
            criteria.AddFilterField(WCField.ProcessFolio, WCCompare.Equal, folio);
            return GetWorkList(criteria);  
        }


        /// <summary>
        /// Stop a process instance by process ID.
        /// </summary>
        /// <param name="ProcessID"></param>
        /// <returns></returns>
        public bool StopProcessInstance(int ProcessID)
        {
            SourceCode.K2Mng.K2Manager mgr = this.GetK2Manager();
            bool flag = mgr.StopProcessInstances(ProcessID);
            mgr.Logout();
            return flag;
        }

        /// <summary>
        /// Gets the k2 manager.
        /// </summary>
        /// <returns></returns>
        public SourceCode.K2Mng.K2Manager GetK2Manager()
        {
            SourceCode.K2Mng.K2Manager mgr = new SourceCode.K2Mng.K2Manager();
            try
            {
                mgr.Login(serverName, 5252, "");
            }
            catch (Exception ex)
            {
                throw new Exception("Access to K2 Server denied!", ex);
            }
            return mgr;
        }

        /// <summary>
        /// Gets all work list items.
        /// </summary>
        /// <param name="dtStart">The dt start.</param>
        /// <param name="dtEnd">The dt end.</param>
        /// <param name="destination">The destination.</param>
        /// <param name="processName">Name of the process.</param>
        /// <param name="activityName">Name of the activity.</param>
        /// <param name="eventName">Name of the event.</param>
        /// <param name="folio">The folio.</param>
        /// <returns></returns>
        public SourceCode.K2Mng.WorkListItems GetK2MngAllWorkListItems(DateTime dtStart, DateTime dtEnd, string destination, string processName, string activityName, string eventName, string folio)
        {
            SourceCode.K2Mng.WorkListItems list;
            SourceCode.K2Mng.K2Manager mgr = this.GetK2Manager();
            list = mgr.GetWorkListItems(dtStart, dtEnd, destination, processName, activityName, eventName, folio);    
            mgr.Logout();
            return list;
        }

        /// <summary>
        /// Gets the k2 MNG all work list items.
        /// </summary>
        /// <param name="dtStart">The dtStart.</param>
        /// <param name="dtEnd">The dtEnd.</param>
        /// <returns></returns>
        public SourceCode.K2Mng.WorkListItems GetK2MngAllWorkListItems(DateTime dtStart, DateTime dtEnd)
        {
            SourceCode.K2Mng.WorkListItems list;
            SourceCode.K2Mng.K2Manager mgr = this.GetK2Manager();
            list = mgr.GetWorkListItems(dtStart, dtEnd, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty);
            mgr.Logout();
            return list;
        }

        /// <summary>
        /// Gets all process instances.
        /// </summary>
        /// <returns></returns>
        public SourceCode.K2Mng.ProcessInstances GetK2MngAllProcessInstances()
        {
            SourceCode.K2Mng.ProcessInstances list;
            SourceCode.K2Mng.K2Manager mgr = this.GetK2Manager();
            list = mgr.GetProcessInstances();
            mgr.Logout();
            return list;
        }
 

        /// <summary>
        /// Closes this instance.
        /// </summary>
        public void Close()
        {
            if (conn != null)
            {
                conn.Close();
            }
            conn = null;  
        }



        /// <summary>
        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
        /// </summary>
        public void Dispose()
        {
            serverName = string.Empty;
            errorMessage = string.Empty;
            Close();
            GC.Collect();
        }
    }
}

Share this post: | | | |
by agusto
Filed under:

Comments

# K2Helper | Available Domains - Industry leading domain name news said on Monday, July 07, 2008 3:10 PM

Pingback from  K2Helper | Available Domains - Industry leading domain name news

# Tila Tequila Naked said on Saturday, August 30, 2008 2:11 AM

Hey =) Just check this out: Tila Tequila is naked uhhhh.... hot ***: tilatequilanaked.0catch.com

Leave a Comment

(required) 
(required) 
(optional)
(required) 

Enter the numbers above: