Пример #1
0
        public void RegisterWorkflow(string name)
        {
            var listWorkflowRequest = new ListWorkflowTypesRequest()
            {
                Name               = name,
                Domain             = domainName,
                RegistrationStatus = RegistrationStatus.REGISTERED
            };
            var results = swfClient.ListWorkflowTypesAsync(listWorkflowRequest).Result;

            if (results.WorkflowTypeInfos.TypeInfos.FirstOrDefault(x => x.WorkflowType.Name == name) == null)
            {
                RegisterWorkflowTypeRequest request = new RegisterWorkflowTypeRequest()
                {
                    DefaultChildPolicy = ChildPolicy.TERMINATE,
                    DefaultExecutionStartToCloseTimeout = "350",
                    DefaultTaskList = new TaskList()
                    {
                        Name = deciderPollingKey
                    },
                    DefaultTaskStartToCloseTimeout = "150",
                    Domain  = domainName,
                    Name    = name,
                    Version = "1.0"
                };

                swfClient.RegisterWorkflowTypeAsync(request);

                Console.WriteLine("Registerd Workflow: " + request.Name);
            }
        }
Пример #2
0
        static void RegisterWorkflow(string name)
        {
            // Register workflow type if not already registered
            var listWorkflowRequest = new ListWorkflowTypesRequest()
            {
                Name               = name,
                Domain             = domainName,
                RegistrationStatus = RegistrationStatus.REGISTERED
            };

            if (swfClient.ListWorkflowTypes(listWorkflowRequest).WorkflowTypeInfos.TypeInfos.FirstOrDefault(
                    x => x.WorkflowType.Version == "2.0") == null)
            {
                RegisterWorkflowTypeRequest request = new RegisterWorkflowTypeRequest()
                {
                    DefaultChildPolicy = ChildPolicy.TERMINATE,
                    DefaultExecutionStartToCloseTimeout = "300",
                    DefaultTaskList = new TaskList()
                    {
                        Name = "HelloWorld" // Decider need to poll for this task
                    },
                    DefaultTaskStartToCloseTimeout = "150",
                    Domain  = domainName,
                    Name    = name,
                    Version = "2.0"
                };

                swfClient.RegisterWorkflowType(request);

                Console.WriteLine("Setup: Registerd Workflow Name - " + request.Name);
            }
        }
        public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems)
        {
            AmazonSimpleWorkflowConfig config = new AmazonSimpleWorkflowConfig();

            config.RegionEndpoint = region;
            ConfigureClient(config);
            AmazonSimpleWorkflowClient client = new AmazonSimpleWorkflowClient(creds, config);

            WorkflowTypeInfos resp = new WorkflowTypeInfos();

            do
            {
                ListWorkflowTypesRequest req = new ListWorkflowTypesRequest
                {
                    NextPageToken = resp.NextPageToken
                    ,
                    MaximumPageSize = maxItems
                };

                resp = client.ListWorkflowTypes(req);
                CheckError(resp.HttpStatusCode, "200");

                foreach (var obj in resp.TypeInfos)
                {
                    AddObject(obj);
                }
            }while (!string.IsNullOrEmpty(resp.NextPageToken));
        }
Пример #4
0
        private async Task CreateWorkflowType()
        {
            //Get the list of workflow types for the specified domain
            ListWorkflowTypesRequest listWorkflowRequest = new ListWorkflowTypesRequest()
            {
                Domain             = this.SwfConfiguration.DomainName,
                Name               = this.SwfConfiguration.WorkflowName,
                RegistrationStatus = RegistrationStatus.REGISTERED
            };
            ListWorkflowTypesResponse listWorkflowTypesResponse = await this.SwfClient.ListWorkflowTypesAsync(listWorkflowRequest);

            //Check if our activity exists
            if (listWorkflowTypesResponse.WorkflowTypeInfos.TypeInfos.Count > 0)
            {
                return;
            }

            //If doesn't exist -> create
            RegisterWorkflowTypeRequest registerWorkflowTypeRequest = new RegisterWorkflowTypeRequest()
            {
                DefaultChildPolicy = ChildPolicy.TERMINATE,
                DefaultExecutionStartToCloseTimeout = this.SwfConfiguration.ExecutionStartToCloseTimeout,
                DefaultTaskList = new TaskList()
                {
                    Name = this.SwfConfiguration.ActivityTasksList
                },
                DefaultTaskStartToCloseTimeout = this.SwfConfiguration.TaskStartToCloseTimeout,
                Domain  = this.SwfConfiguration.DomainName,
                Name    = this.SwfConfiguration.WorkflowName,
                Version = this.SwfConfiguration.WorkflowVersion
            };

            await this.SwfClient.RegisterWorkflowTypeAsync(registerWorkflowTypeRequest);
        }
Пример #5
0
        private async Task <IEnumerable <WorkflowTypeInfo> > ListWorkflowsFromAmazonBy(string workflowName)
        {
            var listRequest = new ListWorkflowTypesRequest();

            listRequest.Name               = workflowName;
            listRequest.Domain             = _name;
            listRequest.MaximumPageSize    = 1000;
            listRequest.RegistrationStatus = RegistrationStatus.REGISTERED;
            var response = await _simpleWorkflowClient.ListWorkflowTypesAsync(listRequest);

            return(response.WorkflowTypeInfos.TypeInfos);
        }
Пример #6
0
        private string GetLatestWorkflowTypeVersion()
        {
            var request = new ListWorkflowTypesRequest
            {
                Domain             = Constants.SWF_DOMAIN,
                Name               = Constants.SWF_WORKFLOW_TYPE_NAME,
                RegistrationStatus = RegistrationStatus.REGISTERED
            };
            var listResponse = _instance._swfClient.ListWorkflowTypesAsync(request).Result;

            return(listResponse.WorkflowTypeInfos.TypeInfos[0].WorkflowType.Version);
        }
Пример #7
0
        static void RegisterWorkflow(string name)
        {
            // Register workflow type if not already registered
            var listWorkflowRequest = new ListWorkflowTypesRequest()
            {
                Name               = name,
                Domain             = domainName,
                RegistrationStatus = RegistrationStatus.REGISTERED
            };

            if (SwfClient.ListWorkflowTypes(listWorkflowRequest)
                .WorkflowTypeInfos
                .TypeInfos
                .FirstOrDefault(x => x.WorkflowType.Version == "2.0") == null)
            {
                var request = new RegisterWorkflowTypeRequest()
                {
                    DefaultChildPolicy = ChildPolicy.TERMINATE,
                    DefaultExecutionStartToCloseTimeout = "300",
                    DefaultTaskList = new TaskList()
                    {
                        Name = "SwfDemo" // Decider need to poll for this task
                    },
                    DefaultTaskStartToCloseTimeout = "150",
                    Domain  = domainName,
                    Name    = name,
                    Version = "2.0"
                };
                try
                {
                }
                catch (TypeAlreadyExistsException tex)
                {
                    SwfClient.RegisterWorkflowType(request);
                }

                Console.WriteLine($"INITIATOR: Registerd Workflow Name - {request.Name}");
            }
        }
Пример #8
0
        public static string GetServiceOutput()
        {
            var sb = new StringBuilder(1024);

            using (var sr = new StringWriter(sb))
            {
                sr.WriteLine("===============================");
                sr.WriteLine("| AWS Simple Workflow Service |");
                sr.WriteLine("===============================");

                try
                {
                    // Print the available domains, workflows and activities. Region endpoint depends on where
                    // you chose to set up your workflow domain
                    var swfClient = new AmazonSimpleWorkflowClient(RegionEndpoint.USWest2);

                    sr.WriteLine();
                    var listDomainRequest = new ListDomainsRequest
                    {
                        RegistrationStatus = "REGISTERED"
                    };

                    var listDomainResponse = swfClient.ListDomains(listDomainRequest);
                    foreach (var domain in listDomainResponse.DomainInfos.Infos)
                    {
                        sr.WriteLine("[" + domain.Name + "]");
                        sr.WriteLine("status: " + domain.Status);
                        sr.WriteLine("description: " + domain.Description);

                        sr.WriteLine("\n  WORKFLOWS");
                        var listWorkflowRequest = new ListWorkflowTypesRequest
                        {
                            Domain             = domain.Name,
                            RegistrationStatus = "REGISTERED"
                        };
                        var listWorkflowTypesResponse = swfClient.ListWorkflowTypes(listWorkflowRequest);
                        foreach (
                            var workflow in
                            listWorkflowTypesResponse.WorkflowTypeInfos.TypeInfos)
                        {
                            sr.WriteLine("  [" + workflow.WorkflowType.Name + "] (" + workflow.WorkflowType.Version + ") " + workflow.Status);
                            sr.WriteLine("  creation: " + workflow.CreationDate);
                            sr.WriteLine("  deprecation: " + workflow.DeprecationDate);
                            sr.WriteLine("  description:" + TrimStringToLength(workflow.Description, 60, "", "              "));
                            sr.WriteLine();
                        }

                        sr.WriteLine("\n  ACTIVITIES");
                        var listActivityRequest = new ListActivityTypesRequest
                        {
                            Domain             = domain.Name,
                            RegistrationStatus = "REGISTERED"
                        };
                        var listActivityResponse = swfClient.ListActivityTypes(listActivityRequest);
                        foreach (
                            var activity in listActivityResponse.ActivityTypeInfos.TypeInfos)
                        {
                            sr.WriteLine("  [" + activity.ActivityType.Name + "] (" + activity.ActivityType.Version + ") " + activity.Status);
                            sr.WriteLine("  creation: " + activity.CreationDate);
                            sr.WriteLine("  deprecation: " + activity.DeprecationDate);
                            sr.WriteLine("  description:" + TrimStringToLength(activity.Description, 60, "", "              "));
                            sr.WriteLine();
                        }
                    }
                }
                catch (AmazonSimpleWorkflowException ex)
                {
                    if (ex.ErrorCode != null && ex.ErrorCode.Equals("AuthFailure"))
                    {
                        sr.WriteLine("The account you are using is not signed up for Amazon SWF.");
                        sr.WriteLine("You can sign up for Amazon SWF at http://aws.amazon.com/swf");
                    }
                    else
                    {
                        sr.WriteLine("Caught Exception: " + ex.Message);
                        sr.WriteLine("Response Status Code: " + ex.StatusCode);
                        sr.WriteLine("Error Code: " + ex.ErrorCode);
                        sr.WriteLine("Error Type: " + ex.ErrorType);
                        sr.WriteLine("Request ID: " + ex.RequestId);
                        sr.WriteLine("Data: " + ex.Data);
                        sr.WriteLine("Stacktrace: " + ex.StackTrace);
                    }
                }
                sr.WriteLine();
            }
            return(sb.ToString());
        }