Exemplo n.º 1
0
        /// <summary>
        /// Display tracking data for all completed workflows
        /// </summary>
        private static void DisplayCompletedWorkflows()
        {
            //query and display tracking data for multiple workflows
            TrackingConsoleWriter trackingWriter
                = new TrackingConsoleWriter(_connStringTracking);
            //only display completed workflows
            SqlTrackingQueryOptions options = new SqlTrackingQueryOptions();

            options.WorkflowStatus = WorkflowStatus.Completed;
            trackingWriter.DisplayAllTrackingData(options);
        }
Exemplo n.º 2
0
        static public ExportProcessDC[] GetExportProcessListByStatus(Guid tenantId, ProcessStatus status)
        {
            List <ExportProcessDC>  processList      = new List <ExportProcessDC>();
            SqlTrackingQuery        sqlTrackingQuery = new SqlTrackingQuery(ConfigurationManager.ConnectionStrings[Constants.Database.TenantWorkflowStore].ConnectionString);
            SqlTrackingQueryOptions options          = new SqlTrackingQueryOptions();

            options.WorkflowStatus = ProcessHelper.ToWorkflowStatus(status);
            options.TrackingDataItems.Add(new TrackingDataItemValue("ExportProcess", "TenantId", tenantId.ToString()));
            IList <SqlTrackingWorkflowInstance> workflows = sqlTrackingQuery.GetWorkflows(options);

            foreach (SqlTrackingWorkflowInstance workflow in workflows)
            {
                ExportProcessDC exportProcessDC = new ExportProcessDC();
                exportProcessDC.ProcessId = workflow.WorkflowInstanceId;
                exportProcessDC.Status    = ProcessHelper.ToProcessStatus(workflow.Status);
                int activityEventsCount = workflow.ActivityEvents.Count;
                if (activityEventsCount > 0)
                {
                    ActivityTrackingRecord record = (ActivityTrackingRecord)workflow.ActivityEvents[activityEventsCount - 1];
                    foreach (TrackingDataItem dataItem in record.Body)
                    {
                        switch (dataItem.FieldName)
                        {
                        case "ObjectId":
                            exportProcessDC.ObjectId = (Guid)dataItem.Data;
                            break;

                        case "Number":
                            exportProcessDC.Number = (string)dataItem.Data;
                            break;

                        case "Creator":
                            exportProcessDC.Creator = (string)dataItem.Data;
                            break;

                        case "Amount":
                            exportProcessDC.Amount = dataItem.Data == null ? default(decimal) : (decimal)dataItem.Data;
                            break;
                        }
                    }
                }
                processList.Add(exportProcessDC);
            }
            return(processList.ToArray());
        }
Exemplo n.º 3
0
        static public ExportProcessDC GetExportProcessbyContractId(Guid contractId)
        {
            SqlTrackingQuery        sqlTrackingQuery = new SqlTrackingQuery(ConfigurationManager.ConnectionStrings[Constants.Database.TenantWorkflowStore].ConnectionString);
            SqlTrackingQueryOptions options          = new SqlTrackingQueryOptions();

            //options.WorkflowStatus = WorkflowStatus.Running;
            options.TrackingDataItems.Add(new TrackingDataItemValue("ExportProcess", "ObjectId", contractId.ToString()));

            IList <SqlTrackingWorkflowInstance> workflows = sqlTrackingQuery.GetWorkflows(options);

            if (workflows.Count == 0)
            {
                return(null);
            }
            SqlTrackingWorkflowInstance workflow        = workflows[workflows.Count - 1];
            ExportProcessDC             exportProcessDC = new ExportProcessDC();

            exportProcessDC.ObjectId  = contractId;
            exportProcessDC.ProcessId = workflow.WorkflowInstanceId;
            exportProcessDC.Status    = ProcessHelper.ToProcessStatus(workflow.Status);
            int activityEventsCount = workflow.ActivityEvents.Count;

            if (activityEventsCount > 0)
            {
                ActivityTrackingRecord record = (ActivityTrackingRecord)workflow.ActivityEvents[activityEventsCount - 1];
                foreach (TrackingDataItem dataItem in record.Body)
                {
                    switch (dataItem.FieldName)
                    {
                    case "Number":
                        exportProcessDC.Number = (string)dataItem.Data;
                        break;

                    case "Creator":
                        exportProcessDC.Creator = (string)dataItem.Data;
                        break;

                    case "Amount":
                        exportProcessDC.Amount = dataItem.Data == null ? default(decimal) : (decimal)dataItem.Data;
                        break;
                    }
                }
            }
            return(exportProcessDC);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Write tracking data to the Console for
        /// all workflow instances
        /// </summary>
        public void DisplayAllTrackingData(SqlTrackingQueryOptions options)
        {
            //retrieve all workflow instances
            IList <SqlTrackingWorkflowInstance> workflows
                = QueryWorkflowList(options);

            SortedList <Int32, TrackingRecord> records
                = new SortedList <int, TrackingRecord>();

            //process all workflow instances in the collection
            foreach (SqlTrackingWorkflowInstance wf in workflows)
            {
                //build a sorted list of TrackingRecords
                records.Clear();
                BuildSortedList(records, wf);
                //write the tracking data to the Console
                WriteSingleInstanceToConsole(wf.WorkflowInstanceId, records);
            }
        }
Exemplo n.º 5
0
    protected void Page_Load(object sender, EventArgs e)
    {
        SqlTrackingQueryOptions options = new SqlTrackingQueryOptions();

        options.WorkflowStatus = WorkflowStatus.Running;
        SqlTrackingQuery query = new SqlTrackingQuery(ConfigurationManager.ConnectionStrings["workflows"].ConnectionString);
        IList <SqlTrackingWorkflowInstance> workflows = query.GetWorkflows(options);

        foreach (SqlTrackingWorkflowInstance workflow in workflows)
        {
            foreach (WorkflowTrackingRecord workflowEvent in workflow.WorkflowEvents)
            {
                TrackingWorkflowTerminatedEventArgs args = workflowEvent.EventArgs as TrackingWorkflowTerminatedEventArgs;
                if (args != null)
                {
                    Response.Write(workflow.WorkflowInstanceId + ": " + args.Exception.Message);
                }
            }
        }
    }
Exemplo n.º 6
0
        /// <summary>
        /// Retrieve tracking data for all workflow instances
        /// matching the specified options
        /// </summary>
        /// <param name="options"></param>
        /// <returns></returns>
        private IList <SqlTrackingWorkflowInstance> QueryWorkflowList(
            SqlTrackingQueryOptions options)
        {
            IList <SqlTrackingWorkflowInstance> workflows
                = new List <SqlTrackingWorkflowInstance>();

            try
            {
                //create an object that queries the tracking database
                SqlTrackingQuery query
                    = new SqlTrackingQuery(_connectionString);

                //retrieve all workflows based on query options
                workflows = query.GetWorkflows(options);
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                Console.WriteLine("SqlException in QueryWorkflowList: {0}",
                                  e.Message);
            }

            return(workflows);
        }
Exemplo n.º 7
0
        internal List <SqlTrackingWorkflowInstance> GetWorkflows(string workflowEvent, DateTime from, DateTime until, TrackingDataItemValue trackingDataItemValue)
        {
            try
            {
                List <SqlTrackingWorkflowInstance> queriedWorkflows = new List <SqlTrackingWorkflowInstance>();
                SqlTrackingQuery        sqlTrackingQuery            = new SqlTrackingQuery(connectionString);
                SqlTrackingQueryOptions sqlTrackingQueryOptions     = new SqlTrackingQueryOptions();
                sqlTrackingQueryOptions.StatusMinDateTime = from.ToUniversalTime();
                sqlTrackingQueryOptions.StatusMaxDateTime = until.ToUniversalTime();
                // If QualifiedName, FieldName, or DataValue is not supplied, we will not query since they are all required to match
                if (!((string.Empty == trackingDataItemValue.QualifiedName) || (string.Empty == trackingDataItemValue.FieldName) || ((string.Empty == trackingDataItemValue.DataValue))))
                {
                    sqlTrackingQueryOptions.TrackingDataItems.Add(trackingDataItemValue);
                }

                queriedWorkflows.Clear();

                if ("created" == workflowEvent.ToLower(CultureInfo.InvariantCulture))
                {
                    sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Created;
                    queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
                }
                else if ("completed" == workflowEvent.ToLower(CultureInfo.InvariantCulture))
                {
                    sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Completed;
                    queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
                }
                else if ("running" == workflowEvent.ToLower(CultureInfo.InvariantCulture))
                {
                    sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Running;
                    queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
                }
                else if ("suspended" == workflowEvent.ToLower(CultureInfo.InvariantCulture))
                {
                    sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Suspended;
                    queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
                }
                else if ("terminated" == workflowEvent.ToLower(CultureInfo.InvariantCulture))
                {
                    sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Terminated;
                    queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
                }
                else if (("all" == workflowEvent.ToLower(CultureInfo.InvariantCulture)) || (string.Empty == workflowEvent) || (null == workflowEvent))
                {
                    sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Created;
                    queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));

                    sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Completed;
                    queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));

                    sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Running;
                    queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));

                    sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Suspended;
                    queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));

                    sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Terminated;
                    queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
                }
                return(queriedWorkflows);
            }
            catch (Exception exception)
            {
                throw new Exception("Exception in GetWorkflows", exception);
            }
        }