/// <summary> /// Records the test result /// </summary> /// <param name="TestRunId"></param> /// <param name="Actual"></param> /// <param name="Expected"></param> /// <param name="Sign"></param> private static void RecordResult(int TestRunId, object Actual, string Expected, string Sign) { SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder hostServerConnectionString = new SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder(); hostServerConnectionString.Host = "localhost"; hostServerConnectionString.Port = 5555; hostServerConnectionString.IsPrimaryLogin = true; hostServerConnectionString.Integrated = true; SourceCode.SmartObjects.Client.SmartObjectClientServer serverName = new SourceCode.SmartObjects.Client.SmartObjectClientServer(); serverName.CreateConnection(); serverName.Connection.Open(hostServerConnectionString.ToString()); try { SourceCode.SmartObjects.Client.SmartObject smartObject = serverName.GetSmartObject("K2C_TST_SMO_TestRun"); smartObject.MethodToExecute = "Execute_NaN"; smartObject.GetMethod("Execute_NaN").Parameters["pTestRunId"].Value = TestRunId.ToString(); smartObject.GetMethod("Execute_NaN").Parameters["pResult"].Value = Actual.ToString(); smartObject.GetMethod("Execute_NaN").Parameters["pExpectedResult"].Value = Expected; smartObject.GetMethod("Execute_NaN").Parameters["pPass"].Value = Result(Actual, Expected, Sign).ToString(); serverName.ExecuteScalar(smartObject); } catch (Exception ex) { string x = ex.Message; } finally { serverName.Connection.Close(); } }
//K2 connection opening samples public static void K2ConnectionSamples() { //you must instantiate the connection object Connection K2Conn = new Connection(); //simple open using only a server name. (we are using localhost for this sample, in your example use your K2 Server name or NLB server-name) //This is the simplest way to open a connection for the current user (Active Directory credentials) on the default workflow port (5252) K2Conn.Open("[localhost]"); //creating a more advanced connection with the connection string builder SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder K2ConnStringBuilder = new SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder(); K2ConnStringBuilder.Host = "[localhost]"; //K2 server name or the name of the DNS entry pointing to the K2 Farm K2ConnStringBuilder.Authenticate = true; //specify whether to authenticate the user's credentials against the security provider. This is usually set to true K2ConnStringBuilder.UserID = "[username]"; //a specific username K2ConnStringBuilder.Password = "******"; //the user's password, unencrypted K2ConnStringBuilder.Port = 5252; //if K2 was configured to run on a non-standard port, you can specify the port number here K2ConnStringBuilder.IsPrimaryLogin = true; //this is normally set to true, unless you are using cached security credentials K2ConnStringBuilder.SecurityLabelName = "K2"; //if using a different security provider, specify the label of the security provider here //opening a K2 connection with the advanced connection string K2Conn.Open(K2ConnStringBuilder.ToString()); //closing a connection: you must always close the K2 connection when you are done with it K2Conn.Close(); //to ensure that the connection is closed and disposed, you can also wrap the connection into a using statement, like this: using (Connection K2Conn2 = new Connection()) { K2Conn2.Open("[servername]"); //do something with the connection //the connection will be closed and disposed when the using statement is done } }
/// <summary> /// Update the test details to say it has finished /// </summary> /// <param name="TestId"></param> private static void UpdateTestDetailsEnd(int TestId) { SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder hostServerConnectionString = new SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder(); hostServerConnectionString.Host = "localhost"; hostServerConnectionString.Port = 5555; hostServerConnectionString.IsPrimaryLogin = true; hostServerConnectionString.Integrated = true; SourceCode.SmartObjects.Client.SmartObjectClientServer serverName = new SourceCode.SmartObjects.Client.SmartObjectClientServer(); serverName.CreateConnection(); serverName.Connection.Open(hostServerConnectionString.ToString()); try { SourceCode.SmartObjects.Client.SmartObject smartObject = serverName.GetSmartObject("K2C_TST_SMO_TestRun"); smartObject.MethodToExecute = "Execute_NaN_NaN_1"; smartObject.GetMethod("Execute_NaN_NaN_1").Parameters["pTestId"].Value = TestId.ToString(); serverName.ExecuteScalar(smartObject); } catch (Exception ex) { string x = ex.Message; } finally { serverName.Connection.Close(); } }
/// <summary> /// Updates the test details to say it has started /// </summary> /// <param name="TestDetailsid"></param> /// <param name="ProcessInstanceId"></param> /// <param name="Folio"></param> /// <param name="Originator"></param> /// <param name="StartedDate"></param> /// <param name="Started"></param> private static void UpdateTestDetails(int TestDetailsid, int ProcessInstanceId, string Folio, string Originator, DateTime StartedDate, bool Started) { SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder hostServerConnectionString = new SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder(); hostServerConnectionString.Host = "localhost"; hostServerConnectionString.Port = 5555; hostServerConnectionString.IsPrimaryLogin = true; hostServerConnectionString.Integrated = true; SourceCode.SmartObjects.Client.SmartObjectClientServer serverName = new SourceCode.SmartObjects.Client.SmartObjectClientServer(); serverName.CreateConnection(); serverName.Connection.Open(hostServerConnectionString.ToString()); try { SourceCode.SmartObjects.Client.SmartObject smartObject = serverName.GetSmartObject("K2C_TST_SMO_TestRun"); smartObject.MethodToExecute = "Execute_NaN_1"; smartObject.GetMethod("Execute_NaN_1").Parameters["pTestDetailsid"].Value = TestDetailsid.ToString(); smartObject.GetMethod("Execute_NaN_1").Parameters["pProcessInstanceId"].Value = ProcessInstanceId.ToString(); smartObject.GetMethod("Execute_NaN_1").Parameters["pFolio"].Value = Folio.ToString(); smartObject.GetMethod("Execute_NaN_1").Parameters["pOriginator"].Value = Originator.ToString(); smartObject.GetMethod("Execute_NaN_1").Parameters["pStartedDate"].Value = StartedDate.ToString(); smartObject.GetMethod("Execute_NaN_1").Parameters["pStarted"].Value = Started.ToString(); serverName.ExecuteScalar(smartObject); } catch (Exception ex) { string x = ex.Message; } finally { serverName.Connection.Close(); } }
/// <summary> /// 得到K2连接串 /// </summary> /// <returns></returns> public static string GetK2ManagementServerConnectionString() { SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder connectionString; connectionString = new SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder(); connectionString.Authenticate = true; connectionString.WindowsDomain = "CENTALINE"; connectionString.SecurityLabelName = "K2"; connectionString.UserID = MngUserID; connectionString.Password = Cryptography.DESDecryption(MngUserPassword); connectionString.Host = PlanServer; connectionString.Integrated = true; connectionString.IsPrimaryLogin = true; connectionString.Port = 5555; return(connectionString.ToString()); }
//sample that demonstrates opening a connection to the K2 server using the management API public void OpenManagementConnection() { WorkflowManagementServer K2Mgmt = new WorkflowManagementServer(); //construct a connection string with the hosting client API SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder builder = new SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder(); builder.Integrated = true; //use the current user's security credentials builder.IsPrimaryLogin = true; builder.Authenticate = true; builder.EncryptedPassword = false; builder.Host = "localhost"; builder.Port = 5555; //you must use port 5555 when connecting with the management API builder.SecurityLabelName = "K2"; //this sample uses the Active Directory security provider //open the connection using the constructed connection string K2Mgmt.Open(builder.ToString()); //do something in the management connection //close the connection when you are done K2Mgmt.Connection.Close(); }
/// <summary> /// Gets a list of Events for an activity /// </summary> /// <param name="activityid"></param> /// <returns></returns> public List <Events> GetEvents(string activityid) { List <Events> list = new List <Events>(); SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder hostServerConnectionString = new SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder(); hostServerConnectionString.Host = servername; hostServerConnectionString.Port = 5555; hostServerConnectionString.IsPrimaryLogin = true; hostServerConnectionString.Integrated = true; SourceCode.SmartObjects.Client.SmartObjectClientServer serverName = new SourceCode.SmartObjects.Client.SmartObjectClientServer(); serverName.CreateConnection(); serverName.Connection.Open(hostServerConnectionString.ToString()); try { SourceCode.SmartObjects.Client.SmartObject smartObject = serverName.GetSmartObject("Event_Instance"); smartObject.MethodToExecute = "List"; smartObject.Properties["ActivityInstanceID"].Value = activityid; SourceCode.SmartObjects.Client.SmartObjectList smoList = serverName.ExecuteList(smartObject); foreach (SourceCode.SmartObjects.Client.SmartObject item in smoList.SmartObjectsList) { int ProcInstId = 0; int ActInstId = 0; int.TryParse(item.Properties["ProcessInstanceID"].Value, out ProcInstId); int.TryParse(item.Properties["ActivityInstanceID"].Value, out ActInstId); DateTime startDate = DateTime.Today; DateTime finishDate = DateTime.Today; DateTime.TryParse(item.Properties["StartDate"].Value, out startDate); DateTime.TryParse(item.Properties["FinishDate"].Value, out finishDate); list.Add(new Events { ProcessInstanceId = ProcInstId, ActivityInstanceId = ActInstId, EventName = item.Properties["EventName"].Value, Status = item.Properties["Status"].Value, StartDate = startDate, FinishDate = finishDate, Destination = item.Properties["Destination"].Value }); } } catch (Exception ex) { list.Add(new Events { ProcessInstanceId = 0, ActivityInstanceId = 0, EventName = ex.Message, Status = "Error", StartDate = DateTime.Today, FinishDate = DateTime.Today }); } finally { serverName.Connection.Close(); } return(list); }
/// <summary> /// Gets the test details /// </summary> /// <param name="TestId"></param> /// <returns></returns> public static List <TestPlanDetails> GetTestDetails(int TestId) { List <TestPlanDetails> list = new List <TestPlanDetails>(); SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder hostServerConnectionString = new SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder(); hostServerConnectionString.Host = "localhost"; hostServerConnectionString.Port = 5555; hostServerConnectionString.IsPrimaryLogin = true; hostServerConnectionString.Integrated = true; SourceCode.SmartObjects.Client.SmartObjectClientServer serverName = new SourceCode.SmartObjects.Client.SmartObjectClientServer(); serverName.CreateConnection(); serverName.Connection.Open(hostServerConnectionString.ToString()); try { SourceCode.SmartObjects.Client.SmartObject smartObject = serverName.GetSmartObject("K2C_TST_SMO_TestRun"); SourceCode.SmartObjects.Client.SmartObject returnSmartObject; smartObject.MethodToExecute = "List_NaN_NaN"; smartObject.GetMethod("List_NaN_NaN").Parameters["pTestId"].Value = TestId.ToString(); returnSmartObject = serverName.ExecuteScalar(smartObject); int ProcessTypeId = 0; int ProcessInstanceId = 0; int parameters = 0; DateTime StartedDate = DateTime.Today; DateTime FinishedDate = DateTime.Today; int.TryParse(returnSmartObject.Properties["ProcessTypeId"].Value, out ProcessTypeId); int.TryParse(returnSmartObject.Properties["ProcessInstanceId"].Value, out ProcessInstanceId); DateTime.TryParse(returnSmartObject.Properties["StartedDate"].Value, out StartedDate); DateTime.TryParse(returnSmartObject.Properties["FinishedDate"].Value, out FinishedDate); list.Add(new TestPlanDetails { TestName = returnSmartObject.Properties["TestName"].Value, WorkflowName = returnSmartObject.Properties["WorkflowName"].Value, ProcessTypeId = ProcessTypeId, ProcessInstanceId = ProcessInstanceId, Folio = returnSmartObject.Properties["Folio"].Value, Originator = returnSmartObject.Properties["Originator"].Value, Started = returnSmartObject.Properties["Started"].Value, StartedDate = StartedDate, Finished = returnSmartObject.Properties["Finished"].Value, FinishedDate = FinishedDate, Status = returnSmartObject.Properties["Status"].Value, Route = returnSmartObject.Properties["Route"].Value }); } catch (Exception ex) { list.Add(new TestPlanDetails { TestName = ex.Message }); } finally { serverName.Connection.Close(); } return(list); }
/// <summary> /// SmartObject call to get a certain test plan /// </summary> /// <param name="TestId"></param> /// <returns></returns> public static List <TestPlanTest> BuildTestPlan(int TestId) { List <TestPlanTest> list = new List <TestPlanTest>(); SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder hostServerConnectionString = new SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder(); hostServerConnectionString.Host = "localhost"; hostServerConnectionString.Port = 5555; hostServerConnectionString.IsPrimaryLogin = true; hostServerConnectionString.Integrated = true; SourceCode.SmartObjects.Client.SmartObjectClientServer serverName = new SourceCode.SmartObjects.Client.SmartObjectClientServer(); serverName.CreateConnection(); serverName.Connection.Open(hostServerConnectionString.ToString()); try { SourceCode.SmartObjects.Client.SmartObject smartObject = serverName.GetSmartObject("K2C_TST_SMO_TestRun"); smartObject.MethodToExecute = "List_1"; smartObject.GetMethod("List_1").Parameters["pTestId"].Value = TestId.ToString(); SourceCode.SmartObjects.Client.SmartObjectList smoList = serverName.ExecuteList(smartObject); foreach (SourceCode.SmartObjects.Client.SmartObject item in smoList.SmartObjectsList) { var z = item.Properties["Sign"].Value; int testrunid = 0; int parameters = 0; int Milliseconds = 0; int.TryParse(item.Properties["NumberOfParameters"].Value, out parameters); int.TryParse(item.Properties["TestRunId"].Value, out testrunid); int.TryParse(item.Properties["Milliseconds"].Value, out Milliseconds); list.Add(new TestPlanTest { TestRunId = testrunid, TestType = item.Properties["TestType"].Value, ExpectedResult = item.Properties["ExpectedResult"].Value, LeftParameter = item.Properties["LeftParameter"].Value, MiddleParameter = item.Properties["MiddleParameter"].Value, RightParameter = item.Properties["RightParameter"].Value, Milliseconds = Milliseconds, NumberOfParameters = parameters, Sign = item.Properties["Sign"].Value }); } } catch (Exception ex) { list.Add(new TestPlanTest { }); } finally { serverName.Connection.Close(); } return(list); }