Ejemplo n.º 1
0
 public static void PublishActivity(this WorkflowManagementClient client, string name, string xamlFilePath)
 {
     client.Activities.Publish(
         new ActivityDescription(WorkflowUtils.Translate(xamlFilePath))
     {
         Name = name
     });
 }
Ejemplo n.º 2
0
        public static void PublishWorkflowString(this WorkflowManagementClient client, string workflowName, string xamlFile, Collection <ExternalVariable> externalVariables, IDictionary <string, string> configValues, SubscriptionFilter activationFilter = null)
        {
            // publish the activity description related with the workflow
            client.Activities.Publish(
                new ActivityDescription(WorkflowUtils.TranslateString(xamlFile))
            {
                Name = workflowName
            }, true, true);

            // now, publish the workflow description
            WorkflowDescription description = new WorkflowDescription
            {
                Name         = workflowName,
                ActivityPath = workflowName,
            };

            // add external variables
            if (externalVariables != null)
            {
                externalVariables
                .ToList()
                .ForEach(ev => description.ExternalVariables.Add(ev));
            }

            // add config
            if (configValues != null)
            {
                description.Configuration = new WorkflowConfiguration();
                configValues
                .ToList()
                .ForEach(c => description.Configuration.AppSettings.Add(c));
            }

            // add activation filter
            if (activationFilter != null)
            {
                description.ActivationDescription = new SubscriptionActivationDescription
                {
                    Filter = activationFilter
                };
            }

            // publish!
            client.Workflows.Publish(description);
        }
Ejemplo n.º 3
0
        public static string WaitForWorkflowCompletion(this WorkflowManagementClient client, string workflowName, string instanceId, int pollingInterval = 0)
        {
            string currentStatus = string.Empty;
            string lastStatus    = string.Empty;

            WorkflowInstanceInfo instanceInfo = client.Instances.Get(workflowName, instanceId);

            while (true)
            {
                instanceInfo = client.Instances.Get(workflowName, instanceId);

                currentStatus = instanceInfo.UserStatus;

                if (currentStatus != lastStatus && !string.IsNullOrWhiteSpace(currentStatus))
                {
                    Console.Write("   Current Status: ");
                    WorkflowUtils.Print(currentStatus, ConsoleColor.Cyan);
                    lastStatus = currentStatus;
                }

                if (instanceInfo.WorkflowStatus == WorkflowInstanceStatus.Started || instanceInfo.WorkflowStatus == WorkflowInstanceStatus.NotStarted)
                {
                    Thread.Sleep(pollingInterval);
                    continue;
                }

                if (instanceInfo.WorkflowStatus == WorkflowInstanceStatus.Completed)
                {
                    Console.WriteLine("\nWorkflow instance completed");
                }

                break;
            }

            return(instanceInfo.UserStatus);
        }