惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Cisco Blogs
Schneier on Security
Schneier on Security
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tenable Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
NISL@THU
NISL@THU
L
Lohrmann on Cybersecurity
Scott Helme
Scott Helme
Webroot Blog
Webroot Blog
Project Zero
Project Zero
Google Online Security Blog
Google Online Security Blog
The Last Watchdog
The Last Watchdog
Spread Privacy
Spread Privacy
Hacker News: Ask HN
Hacker News: Ask HN
PCI Perspectives
PCI Perspectives
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
W
WeLiveSecurity
Attack and Defense Labs
Attack and Defense Labs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News | PayPal Newsroom
Help Net Security
Help Net Security
The Hacker News
The Hacker News
H
Heimdal Security Blog
O
OpenAI News
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
Cyberwarzone
Cyberwarzone
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 叶小钗
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
I
Intezer
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security Affairs
P
Proofpoint News Feed
S
Secure Thoughts
腾讯CDC
Google DeepMind News
Google DeepMind News
量子位
罗磊的独立博客

博客园 - 残叶

Enum视为位域 ASP.NET 2.0 HttpHandler实现生成图片验证码(转) Asp.net 2.0生命周期 ASP.NET 2.0 的 App_Offline.htm 联合使用抽象类和接口 C#中抽象类和接口的区别 C#静态构造函数 Asp.net开发小技巧 跨页面提交数据的方法 页面的重定向 (转)Asp.net 中 Get和Post 的用法 (转)关于ASP.net运行流程 O/R Mapping (Object-Relation Mapping,对象关系映射) 网络主机名与IP C#发送Email方法总结 @@IDENTITY与SCOPE_IDENTITY() .NET和SQL Server中“空值”辨析 Transactions 回家了
封装K2.net 2003中的K2ROM
残叶 · 2007-07-13 · via 博客园 - 残叶

在用K2.net 2003开发Workflow时,我们常常要封装一个K2ROM以对K2流程进行处理.下面就是一个K2流程要用到的最基本的一些操作.

using System;
using System.Collections;
using SourceCode.K2ROM;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace K2ROM
{
    
/// <summary>
    
/// Summary description for K2Helper.
    
/// </summary>

    public class K2Helper
    
{
        
public K2Helper()
        
{
            
//
            
// TODO: Add constructor logic here
            
//
        }



        
public static string GetConnectionString(string domain, string userName, string password)
        
{
            
return string.Format(@"[;];Authenication=Windows;Domain={0};User={1};Password={2}", domain, userName, "Dell1234");
        }



        
/// <summary>
        
/// Authenication
        
/// </summary>

        public static string ConnectionString = "[;];Authenication=Windows;Domain=mstech;User=administrator;Password=Satyam123241";


        
/// <summary>
        
/// Getting the K2 server name.
        
/// </summary>

        public static string ServerName = ConfigurationManager.AppSettings["K2Server"].ToString();


        
/// <summary>
        
/// Start a process instance in k2 server.
        
/// </summary>
        
/// <param name="processName">Process name</param>
        
/// <param name="param">Process instance data,stored as a hashtable</param>
        
/// <returns>Return process instance</returns>

        public static ProcessInstance StartProcessInstance(string processName, Hashtable param)
        
{
            Connection con 
= new Connection();

            con.Open(ServerName);
            ProcessInstance instance 
= con.CreateProcessInstance(processName);
            IDictionaryEnumerator list 
= param.GetEnumerator();
            
while (list.MoveNext())
                instance.DataFields[list.Key.ToString()].Value 
= list.Value;
            con.StartProcessInstance(instance);
            con.Close();
            
return instance;

        }

        
/// <summary>
        
/// Submit the result to K2 server.
        
/// </summary>
        
/// <param name="item">WorklistItem</param>
        
/// <param name="isSubmit">Stop or Finish</param>
        
/// <returns></returns>

        public static bool UpdateWorkItem(WorklistItem item, bool isSubmit)
        
{
            
if (item == null)
                
throw new NullReferenceException("WorklitItem item is null!");

            
if (isSubmit)
                item.Finish();
            
else
                item.Update();
            
return true;
        }



        
/// <summary>
        
/// Redirect the work item to specified person.
        
/// </summary>
        
/// <param name="item"></param>
        
/// <param name="userName"></param>
        
/// <returns></returns>

        public static bool RedirectWorkItem(WorklistItem item, string userName)
        
{
            
if (item != null)
            
{
                item.Redirect(userName);
                
return true;
            }

            
return false;
        }



        
/// <summary>
        
/// Get WorklistItem by serialnumber.
        
/// </summary>
        
/// <param name="serialNumber"></param>
        
/// <returns></returns>

        public static WorklistItem GetWorkistItem(string serialNumber)
        
{
            Connection con 
= new Connection();
            con.Open(ServerName);

            WorklistItem item 
= con.OpenWorklistItem(serialNumber, "ASP");
            
return item;

        }


        
/// <summary>
        
/// Open a server item
        
/// </summary>
        
/// <param name="serialNumber"></param>
        
/// <returns></returns>

        public static ServerItem GetServerItem(string serialNumber)
        
{
            Connection con 
= new Connection();
            con.Open(ServerName);
            
return con.OpenServerItem(serialNumber);
        }



        
/// <summary>
        
/// convert worklist to dataset
        
/// </summary>
        
/// <param name="list"></param>
        
/// <returns></returns>

        public static DataTable GetWorklistDataTable(Worklist list)
        
{
            
if (list == null || list.Count == 0)
                
return null;
            DataTable dt 
= CreatWorkListTable();
            
foreach (WorklistItem item in list)
            
{
                DataRow dr 
= dt.NewRow();
                dr[
"ProcInstID"= item.ProcessInstance.ID;
                dr[
"StartDate"= item.ProcessInstance.StartDate;
                dr[
"SerialNumber"= item.SerialNumber;
                
//The id implement alternant opration between K2 DB and Location DB.
                dr["WorkItemID"= item.ProcessInstance.DataFields["WorkItemID"].Value.ToString();
                dt.Rows.Add(dr);

            }

            
return dt;
        }


        
/// <summary>
        
/// Creat a datatable to store WorkList.
        
/// </summary>
        
/// <returns></returns>

        public static DataTable CreatWorkListTable()
        
{
            DataTable dt 
= new DataTable();
            dt.Columns.Add(
"ProcInstID");
            dt.Columns.Add(
"StartDate");
            dt.Columns.Add(
"SerialNumber");
            dt.Columns.Add(
"WorkItemID");
            
return dt;
        }


        
/// <summary>
        
/// Get Worklist by criteria.
        
/// </summary>
        
/// <param name="criteria"></param>
        
/// <returns></returns>

        public static Worklist GetWorklist(WorklistCriteria criteria)
        
{
            Connection con 
= new Connection();
            con.Open(ServerName);
            
return con.OpenWorklist(criteria);
        }


        
/// <summary>
        
/// Get Worklist by process name.
        
/// </summary>
        
/// <param name="processName"></param>
        
/// <returns></returns>

        public static Worklist GetWorklist(string processName)
        
{
            WorklistCriteria criteria 
= new WorklistCriteria();
            criteria.AddFilterField(WCField.ProcessName, WCCompare.Equal, processName);
            
return GetWorklist(criteria);
        }


        
/// <summary>
        
/// Get Worklist by process name and activity name.
        
/// </summary>
        
/// <param name="processName"></param>
        
/// <param name="activityName"></param>
        
/// <returns></returns>

        public static Worklist GetWorklist(string processName, string activityName)
        
{

            WorklistCriteria criteria 
= new WorklistCriteria();
            criteria.AddFilterField(WCField.ProcessName, WCCompare.Equal, processName);
            criteria.AddFilterField(WCField.ActivityName, WCCompare.Equal, activityName);
            
return GetWorklist(criteria);
        }


        
/// <summary>
        
/// Stop a process instance by process ID.
        
/// </summary>
        
/// <param name="ProcessID"></param>
        
/// <returns></returns>

        public static bool StopProcessInstance(int ProcessID)
        
{
            SourceCode.K2Mng.K2Manager mgr 
= K2Helper.GetK2Manager();
            
bool flag = mgr.StopProcessInstances(ProcessID);
            mgr.Logout();
            
return flag;
        }


        
/// <summary>
        
/// Access K2 service as admin.
        
/// </summary>
        
/// <returns></returns>

        public static SourceCode.K2Mng.K2Manager GetK2Manager()
        
{
            SourceCode.K2Mng.K2Manager mgr 
= new SourceCode.K2Mng.K2Manager();
            
try
            
{
                mgr.Login(ConfigurationManager.AppSettings[
"K2Server"], int.Parse(ConfigurationManager.AppSettings["K2AdminPort"]), ConfigurationManager.AppSettings["K2AdminConnectionString"]);
            }

            
catch (Exception ex)
            
{
                
throw new Exception("Access to K2 Server denied!", ex);
            }

            
return mgr;
        }

    }

}