using System.Collections.Generic;
using SourceCode.Hosting.Client;
using SourceCode.Workflow.Client;
using SourceCode.SmartObjects.Client;
Dictionary<string, string> pair = new Dictionary<string, string>();
public static void Main(string[] args)
string _smoName = "TimerSmo";
GetTaskSmartobject(server, _smoName);
public static String SoConnString()
SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder builder = new SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder();
builder.Authenticate = true;
builder.Integrated = true;
builder.IsPrimaryLogin = true;
builder.SecurityLabelName = "K2";
return builder.ToString();
public static String WFConnString()
SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder builder = new SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder();
builder.Authenticate = true;
builder.Integrated = true;
builder.IsPrimaryLogin = true;
builder.SecurityLabelName = "K2";
return builder.ToString();
public static void GetTaskSmartobject(string server, string smoName)
string _smoName = smoName;
SourceCode.SmartObjects.Client.SmartObjectClientServer serverName = new SmartObjectClientServer();
serverName.CreateConnection();
serverName.Connection.Open(SoConnString());
SmartObject smartObject = serverName.GetSmartObject(_smoName);
smartObject.MethodToExecute = "GetList";
SmartObjectList smoList = serverName.ExecuteList(smartObject);
foreach (SmartObject smo in smoList.SmartObjectsList)
string ArtifactType = smo.Properties["ArtifactType"].Value;
string ArtifactName = smo.Properties["ArtifactName"].Value;
string smoMethodName = smo.Properties["smoMethodName"].Value;
string DataFieldName = smo.Properties["DataFieldName"].Value;
string DataFieldValue = smo.Properties["DataFieldValue"].Value;
string DataFields = smo.Properties["DataFields"].Value;
if (ArtifactType == "smartobject")
if ((DataFields != null) & (DataFields != string.Empty))
CallSmartobject(ArtifactName, smoMethodName, DataFields);
Console.WriteLine("Call smartobject with datafields");
else if ((DataFields == null) || (DataFields == string.Empty))
CallSmartobject(ArtifactName, smoMethodName);
Console.WriteLine("Call smartobject without datafields");
else if (ArtifactType == "workflow")
CallWorkflow(_server, ArtifactName, DataFields);
Console.WriteLine("Call workflow.");
Console.WriteLine("Something went wrong.");
Console.WriteLine("Error: " + ex.Message);
serverName.Connection.Close();
public static void CallSmartobject(string smoName, string smoMethodName)
string _smoName = smoName;
string _smoMethodName = smoMethodName;
SourceCode.SmartObjects.Client.SmartObjectClientServer serverName = new SmartObjectClientServer();
serverName.CreateConnection();
serverName.Connection.Open(SoConnString());
SmartObject smartObject = serverName.GetSmartObject(_smoName);
smartObject.MethodToExecute = _smoMethodName;
serverName.ExecuteScalar(smartObject);
Console.WriteLine("Error: " + ex.Message);
serverName.Connection.Close();
public static void CallSmartobject(string smoName, string smoMethodName, string smoInputParameterName, string smoInputParameterValue)
string _smoName = smoName;
string _smoMethodName = smoMethodName;
string _smoInputParameterName = smoInputParameterName;
string _smoInputParameterValue = smoInputParameterValue;
SourceCode.SmartObjects.Client.SmartObjectClientServer serverName = new SmartObjectClientServer();
serverName.CreateConnection();
serverName.Connection.Open(SoConnString());
SmartObject smartObject = serverName.GetSmartObject(_smoName);
smartObject.MethodToExecute = _smoMethodName;
if (smartObject.Properties.Count != 0 || smoInputParameterName != null || smoInputParameterValue != null)
smartObject.Properties[_smoInputParameterName].Value = _smoInputParameterValue;
serverName.ExecuteScalar(smartObject);
serverName.ExecuteScalar(smartObject);
Console.WriteLine("Error: " + ex.Message);
serverName.Connection.Close();
public static void CallSmartobject(string smoName, string smoMethodName, string _xmlString)
string xmlString = _xmlString;
string _smoName = smoName;
string _smoMethodName = smoMethodName;
XmlDocument xml = new XmlDocument();
XmlNodeList xnList = xml.SelectNodes("/datafields/datafield");
SourceCode.SmartObjects.Client.SmartObjectClientServer serverName = new SmartObjectClientServer();
serverName.CreateConnection();
serverName.Connection.Open(SoConnString());
SmartObject smartObject = serverName.GetSmartObject(_smoName);
foreach (XmlNode xn in xnList)
string name = xn["name"].InnerText;
string val = xn["value"].InnerText;
Dictionary<string, string> dict = new Dictionary<string, string>();
Console.WriteLine("{0} {1}", name, val);
smartObject.Properties[name].Value = val;
smartObject.MethodToExecute = _smoMethodName;
serverName.ExecuteScalar(smartObject);
Console.WriteLine("Error: " + ex.Message);
serverName.Connection.Close();
public static void CallWorkflow(string server, string wfName)
Connection connection = new Connection();
connection.Open(_server, WFConnString());
ProcessInstance processInstance = connection.CreateProcessInstance(_wfName);
processInstance.Folio = DateTime.Now.ToString();
connection.StartProcessInstance(processInstance, false);
Console.WriteLine("Folio:" + processInstance.Folio.ToString());
Console.WriteLine("ID: " + processInstance.ID.ToString());
Console.WriteLine(ex.Message);
public static void CallWorkflow(string server, string wfName, string dataFieldName, string dataFieldValue)
string _dataFieldName = dataFieldName;
string _dataFieldValue = dataFieldValue;
Connection connection = new Connection();
connection.Open(_server, WFConnString());
ProcessInstance processInstance = connection.CreateProcessInstance(_wfName);
processInstance.DataFields[_dataFieldName].Value = _dataFieldValue;
processInstance.Folio = DateTime.Now.ToString();
connection.StartProcessInstance(processInstance, false);
Console.WriteLine("Folio:" + processInstance.Folio.ToString());
Console.WriteLine("ID: " + processInstance.ID.ToString());
Console.WriteLine(ex.Message);
public static void CallWorkflow(string server, string wfName, string _xmlString)
string xmlString = _xmlString;
XmlDocument xml = new XmlDocument();
XmlNodeList xnList = xml.SelectNodes("/datafields/datafield");
Connection connection = new Connection();
connection.Open(_server, WFConnString());
ProcessInstance processInstance = connection.CreateProcessInstance(_wfName);
foreach (XmlNode xn in xnList)
string name = xn["name"].InnerText;
string val = xn["value"].InnerText;
Dictionary<string, string> dict = new Dictionary<string, string>();
Console.WriteLine("{0} {1}", name, val);
processInstance.DataFields[name].Value = val;
processInstance.Folio = DateTime.Now.ToString();
connection.StartProcessInstance(processInstance, false);
Console.WriteLine("Folio:" + processInstance.Folio.ToString());
Console.WriteLine("ID: " + processInstance.ID.ToString());
Console.WriteLine(ex.Message);