一步一步学习Ultimus - 十、EIK接口实例

十、   EIK接口实例

下面我就附上一些简单的调用EIK接口的例子。

 

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Data;
using Ultimus.WFServer;
using Ultimus.OC;

/// <summary>
/// UltimusEik 的摘要说明。
/// </summary>
public class UltimusEik
{
    
public UltimusEik()
    {
        
//
        
// TODO: 在此处添加构造函数逻辑
        
//
    }

    
/// <summary>
    
/// 定义一个空的表
    
/// </summary>
    public DataTable Blank()
    {
        DataTable pGetData 
= new DataTable();

        DataColumn pCol1 
= new DataColumn("PROCESSNAME");//流程名称
        pGetData.Columns.Add(pCol1);

        DataColumn pCol2 
= new DataColumn("SUMMARY");//摘要
        pGetData.Columns.Add(pCol2);

        DataColumn pCol3 
= new DataColumn("INCIDENT");//实例号
        pGetData.Columns.Add(pCol3);

        DataColumn pCol4 
= new DataColumn("VERSION");//流程版本
        pGetData.Columns.Add(pCol4);

        DataColumn pCol5 
= new DataColumn("STEPNAME");//步骤名称
        pGetData.Columns.Add(pCol5);

        DataColumn pCol6 
= new DataColumn("PRIORITY");//优先级
        pGetData.Columns.Add(pCol6);

        DataColumn pCol7 
= new DataColumn("URGENTDUETIME");//完成时限
        pGetData.Columns.Add(pCol7);

        DataColumn pCol8 
= new DataColumn("CLIENT");//当前用户
        pGetData.Columns.Add(pCol8);

        DataColumn pCol9 
= new DataColumn("OWNER");//拥有者
        pGetData.Columns.Add(pCol9);

        DataColumn pCol10 
= new DataColumn("STATUS");//状态
        pGetData.Columns.Add(pCol10);

        DataColumn pCol11 
= new DataColumn("SUBSTATUS");//子状态
        pGetData.Columns.Add(pCol11);

        DataColumn pCol12 
= new DataColumn("TASKID");//步骤ID
        pGetData.Columns.Add(pCol12);

        
return pGetData;
    }

    
/// <summary>
    
/// 将任务列表转化为DataTale
    
/// </summary>
    
/// <param name="pTaskList"></param>
    
/// <returns></returns>
    public DataTable GetTaskListToDT(Ultimus.WFServer.Tasklist pTaskList)
    {
        DataTable pGetTaskData 
= this.Blank();

        
if (pTaskList != null)
        {
            
for (int i = 0; i < pTaskList.GetTasksCount(); i++)
            {
                Ultimus.WFServer.Task pTask 
= pTaskList.GetAt(i);
                DataRow pRow 
= pGetTaskData.NewRow();
                pRow[
"PROCESSNAME"= pTask.strProcessName;
                pRow[
"SUMMARY"= pTask.strSummary;
                pRow[
"INCIDENT"= pTask.nIncidentNo.ToString();
                pRow[
"VERSION"= pTask.nProcessVersion.ToString();
                pRow[
"STEPNAME"= pTask.strStepName;
                pRow[
"PRIORITY"= pTask.nPriority.ToString();
                pRow[
"URGENTDUETIME"= DateTime.FromOADate(pTask.dOverDueTime);
                pRow[
"CLIENT"= pTask.strAssignedToUser;
                pRow[
"OWNER"= pTask.strUser;
                pRow[
"STATUS"= pTask.nTaskStatus;
                pRow[
"SUBSTATUS"= pTask.nTaskSubStatus;
                pRow[
"TASKID"= pTask.strTaskId;

                pGetTaskData.Rows.Add(pRow);
            }
        }

        
return pGetTaskData;
    }


    
/// <summary>
    
/// 获取用户对象
    
/// </summary>
    
/// <param name="pUserName"></param>
    
/// <returns></returns>
    public static Ultimus.OC.User GetUser(string pUserName)
    {
        Ultimus.OC.User pUser 
= null;
        Ultimus.OC.OrgChart pOC 
= new Ultimus.OC.OrgChart();
        pOC.FindUser(pUserName, 
""0out pUser);

        
return pUser;
    }

    
/// <summary>
    
/// 获取用户FullName
    
/// </summary>
    
/// <param name="pUserName"></param>
    
/// <returns></returns>
    public static string GetFullName(string pUserName)
    {
        Ultimus.OC.User pUser 
= null;
        Ultimus.OC.OrgChart pOC 
= new Ultimus.OC.OrgChart();
        pOC.FindUser(pUserName, 
""0out pUser);
        
return pUser.strUserFullName;
    }


    
/// <summary>
    
/// 发起流程(第一个步骤新发起流程时调用)
    
/// </summary>
    
/// <param name="strProcessName">流程名称</param>
    
/// <param name="strUserName">处理人登录名</param>
    
/// <param name="strSummary">摘要</param>
    
/// <param name="varList">变量列表</param>
    
/// <param name="nIncidentNo">返回实例号</param>
    
/// <param name="strError">返回错误信息</param>
    
/// <returns></returns>
    public static bool LaunchIncident(string strProcessName, string strUserName, string strSummary, Variable[] varList, ref int nIncidentNo, ref string strError)
    {

        Tasklist tasklist1;
        TasklistFilter filter1;
        Task task1;
        
bool flag1;
        tasklist1 
= new Tasklist();
        filter1 
= new TasklistFilter();
        task1 
= new Task();
        
try
        {
            filter1.strProcessNameFilter 
= strProcessName;
            filter1.nIncidentNo 
= 0;
            filter1.strArrUserName 
= new string[1];
            filter1.strArrUserName[
0= strUserName;
            tasklist1.LoadFilteredTasks(filter1);
            task1 
= tasklist1.GetFirstTask();
            
if (task1 == null)
            {
                nIncidentNo 
= -1;
                strError 
= "No task for these parameters";
                flag1 
= false;
                
goto L_008A;
            }

            
if (task1.SendFrom(strUserName, varList, null, strSummary, ref nIncidentNo, out strError))
            {
                flag1 
= true;
                
goto L_008A;
            }
            flag1 
= false;
        }
        
catch (Exception exception1)
        {
            nIncidentNo 
= -1;
            strError 
= exception1.Message;
            flag1 
= false;

        }

    L_008A:
        
return flag1;
    }


    
/// <summary>
    
/// 获取变量值
    
/// </summary>
    
/// <param name="pTask"></param>
    
/// <param name="varName"></param>
    
/// <returns></returns>
    public static string GetVarValue(Ultimus.WFServer.Task pTask, string varName)
    {
        
string strError = "";
        
object pretValue = "";
        pTask.GetVariableValue(varName, 
out pretValue, out strError);

        
return pretValue.ToString();
    }


    
/// <summary>
    
/// 提交
    
/// </summary>
    
/// <param name="pTaskID"></param>
    
/// <param name="pVarList"></param>
    
/// <returns></returns>
    public static bool Send(string pTaskID, Ultimus.WFServer.Variable[] pVarList)
    {
        
bool pReturn = false;
        Ultimus.WFServer.Task ptask 
= new Ultimus.WFServer.Task();
        
bool pBool = ptask.InitializeFromTaskId(pTaskID);
        
if (pBool)
        {
            
int nincident = 0;
            
string strError = "";
            pReturn 
= ptask.Send(pVarList, """"ref nincident, out strError);
        }
        
return pReturn;
    }

    
/// <summary>
    
/// 退回
    
/// </summary>
    
/// <param name="pTaskID"></param>
    
/// <param name="pVarList"></param>
    
/// <returns></returns>
    public static bool Return(string pTaskID, Ultimus.WFServer.Variable[] pVarList)
    {
        
bool pReturn = false;
        Ultimus.WFServer.Task ptask 
= new Ultimus.WFServer.Task();
        
bool pBool = ptask.InitializeFromTaskId(pTaskID);
        
if (pBool)
        {
            
int nincident = 0;
            
string strError = "";
            pReturn 
= ptask.Return(pVarList, """"out strError);
        }
        
return pReturn;
    }

    
/// <summary>
    
/// 获取可发起、代办任务、已完成任务列表
    
/// </summary>
    
/// <param name="strUserName">用户账号(域名\账号)</param>
    
/// <param name="nType">1-可发起流程2-代办3-已完成</param>
    
/// <param name="pGetTaskData">返回流程的数据集</param>
    
/// <param name="strError">返回错误</param>
    
/// <returns></returns>
    public bool GetUserTasksList(string strUserName, int nType, out DataTable pGetTaskData, out string strError)
    {
        
bool flag1;
        Tasklist tasklist1 
= new Tasklist();
        TasklistFilter filter1 
= new TasklistFilter();
        Task task1 
= new Task();

        pGetTaskData 
= null;
        
try
        {
            filter1.strArrUserName 
= new string[1] { strUserName };

            
switch (nType)
            {
                
case 1:
                    filter1.nFiltersMask 
= Filters.nFilter_Initiate;
                    
break;
                
case 2:
                    filter1.nFiltersMask 
= (Filters.nFilter_Urgent | Filters.nFilter_Overdue) | Filters.nFilter_Current;
                    
break;
                
case 3:
                    filter1.nFiltersMask 
= Filters.nFilter_Complete;
                    
break;
            }
            tasklist1.LoadFilteredTasks(filter1);

            pGetTaskData 
= this.GetTaskListToDT(tasklist1);

            strError 
= null;
            flag1 
= true;
        }
        
catch (Exception exception1)
        {
            tasklist1 
= null;
            strError 
= exception1.Message;
            flag1 
= false;
        }
        
return flag1;
    }
}

如果我们
要发起流程可以使用:Send()
要保存流程可以使用:Save()
要退回流程可以使用:Return()
要终止流程可以使用:Abort()

我们通常从Ultimus中获取了一些任务列表以后,需要调用GetTaskListToDT()这个方法,把对应的TaskList转换为DataTable。
方便我们在页面上显示和调用。

 

转载于:https://www.cnblogs.com/jay-xu33/archive/2009/04/27/1444497.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值