Exemple #1
0
    // 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();
        }
    }
Exemple #2
0
        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;
        }