// after the above 3 functions(conditions) are satisfied(return false) the employee is allowed to sign-in. public void SignIn(SignInSignOutModel objSignInSignOutModel) { try { SqlDataReader sdrSignIn = objSignInSignOutBOL.SignIn(objSignInSignOutModel); Guid gSignInSignOutWFID = new Guid("00000000-0000-0000-0000-000000000000"); int SignInSignOutID = 0; while (sdrSignIn.Read()) { if (sdrSignIn[1].ToString() != "") { SignInSignOutID = Convert.ToInt32(sdrSignIn[0].ToString()); gSignInSignOutWFID = new Guid(sdrSignIn[1].ToString()); System.Workflow.Runtime.WorkflowRuntime wr = (System.Workflow.Runtime.WorkflowRuntime)Application["WokflowRuntime"]; Dictionary <string, object> parameters = new Dictionary <string, object>(); parameters.Add("SignInSignOutID", SignInSignOutID); WorkflowInstance wi = wr.CreateWorkflow(typeof(SignInSignOutWF.SignInSignOutWF), parameters, gSignInSignOutWFID); wi.Start(); } } } catch (V2Exceptions ex) { throw; } catch (System.Exception ex) { FileLog objFileLog = FileLog.GetLogger(); objFileLog.WriteLine(LogType.Error, ex.Message, "SignInSignOut.cs", "SignIn", ex.StackTrace); throw new V2Exceptions(); } }
public void WorkflowStart(String assemblyUrl, String workflowClassName, WorkflowStartRequest startRequest) { workflowId = startRequest.WorkflowId; assemblyReferencePath = assemblyUrl.Substring(0, assemblyUrl.LastIndexOf('\\') + 1); assemblyReferenceName = assemblyUrl.Replace(assemblyReferencePath, ""); AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); System.Reflection.Assembly workflowAssembly = System.Reflection.Assembly.LoadFrom(assemblyUrl); Type workflowClass = workflowAssembly.GetType(workflowClassName); if (workflowClass == null) { throw new ApplicationException("Unable to find Class [" + workflowClassName + "] in referenced Assembly [" + assemblyUrl + "]."); } Dictionary <String, Object> workflowArguments = new Dictionary <String, Object> (); foreach (System.Reflection.PropertyInfo currentProperty in workflowClass.GetProperties()) { String propertyName = currentProperty.Name; Type propertyType = currentProperty.PropertyType; // System.Diagnostics.Trace.WriteLineIf (application.TraceSwitchWorkflow.TraceVerbose, "Property [" + propertyName + "]: " + propertyType.Name); if (startRequest.Arguments.Keys.Contains(propertyName)) { try { switch (propertyType.Name) { case "Int16": workflowArguments.Add(propertyName, Convert.ToInt16(startRequest.Arguments[propertyName])); break; case "Int32": workflowArguments.Add(propertyName, Convert.ToInt32(startRequest.Arguments[propertyName])); break; case "Int64": workflowArguments.Add(propertyName, Convert.ToInt64(startRequest.Arguments[propertyName])); break; case "DateTime": workflowArguments.Add(propertyName, Convert.ToDateTime(startRequest.Arguments[propertyName])); break; case "Decimal": workflowArguments.Add(propertyName, Convert.ToDecimal(startRequest.Arguments[propertyName])); break; case "Single": workflowArguments.Add(propertyName, Convert.ToSingle(startRequest.Arguments[propertyName])); break; case "Double": workflowArguments.Add(propertyName, Convert.ToDouble(startRequest.Arguments[propertyName])); break; case "Boolean": workflowArguments.Add(propertyName, Convert.ToBoolean(startRequest.Arguments[propertyName])); break; case "String": workflowArguments.Add(propertyName, Convert.ToString(startRequest.Arguments[propertyName])); break; default: workflowArguments.Add(propertyName, startRequest.Arguments[propertyName]); break; } } catch (Exception conversionException) { System.Diagnostics.Trace.WriteLineIf(application.TraceSwitchWorkflow.TraceError, conversionException.Message); } } else { //System.Diagnostics.Trace.WriteLineIf (application.TraceSwitchWorkflow.TraceVerbose, "Ignored Property [" + propertyName + "]: " + propertyType.Name); //System.Diagnostics.Trace.WriteLine ("Ignored Property [" + propertyName + "]: " + propertyType.Name); } } workflowInstance = workflowRuntime.CreateWorkflow(workflowAssembly.GetType(workflowClassName), workflowArguments); workflowResponse.WorkQueueItemId = startRequest.WorkQueueItemId; workflowResponse.WorkflowInstanceId = workflowInstance.InstanceId; workflowInstance.Start(); return; }