예제 #1
0
        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);

            ActivityTypeInfos resp = new ActivityTypeInfos();

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

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

                foreach (var obj in resp.TypeInfos)
                {
                    AddObject(obj);
                }
            }while (!string.IsNullOrEmpty(resp.NextPageToken));
        }
        public static void RegisterActivity(IAmazonSimpleWorkflow swfClient, string domainName, string name, string tasklistName)
        {
            // Register activities if it is not already registered
            var listActivityRequest = new ListActivityTypesRequest()
            {
                Domain             = domainName,
                Name               = name,
                RegistrationStatus = RegistrationStatus.REGISTERED
            };

            if (swfClient.ListActivityTypes(listActivityRequest).ActivityTypeInfos.TypeInfos.FirstOrDefault(
                    x => x.ActivityType.Version == "2.0") == null)
            {
                RegisterActivityTypeRequest request = new RegisterActivityTypeRequest()
                {
                    Name            = name,
                    Domain          = domainName,
                    Description     = "Hello World Activities",
                    Version         = "2.0",
                    DefaultTaskList = new TaskList()
                    {
                        Name = tasklistName
                    },                                                       //Worker poll based on this
                    DefaultTaskScheduleToCloseTimeout = "300",
                    DefaultTaskScheduleToStartTimeout = "150",
                    DefaultTaskStartToCloseTimeout    = "450",
                    DefaultTaskHeartbeatTimeout       = "NONE",
                };
                swfClient.RegisterActivityType(request);
                Console.WriteLine("Setup: Created Activity Name - " + request.Name);
            }
        }
예제 #3
0
        /// <summary>
        /// Registers activity type for a specific version.
        /// </summary>
        /// <param name="domainName">Domain where the activity type should be registered.</param>
        /// <param name="client">Interface for accessing Amazon Simple Workflow Service.</param>
        void IRegistrable.Register(string domainName, IAmazonSimpleWorkflow client)
        {
            var listActivityRequest = new ListActivityTypesRequest
            {
                Domain             = domainName,
                Name               = Options.Name,
                RegistrationStatus = RegistrationStatus.REGISTERED
            };


            if (
                client.ListActivityTypesAsync(listActivityRequest).Result
                .ActivityTypeInfos.TypeInfos.FirstOrDefault(x => x.ActivityType.Version == Options.Version) == null)
            {
                Logger.Trace("New Activity Type.");

                RegisterActivityTypeRequest request = new RegisterActivityTypeRequest
                {
                    Name            = Options.Name,
                    Domain          = domainName,
                    Description     = Options.Description,
                    Version         = Options.Version,
                    DefaultTaskList = TaskList,                     //Worker poll based on this
                    DefaultTaskScheduleToCloseTimeout = Options.ScheduleToCloseTimeout.ToStringOrNone(),
                    DefaultTaskScheduleToStartTimeout = Options.ScheduleToStartTimeout.ToStringOrNone(),
                    DefaultTaskStartToCloseTimeout    = Options.StartToCloseTimeout.ToStringOrNone(),
                    DefaultTaskHeartbeatTimeout       = Options.HeartbeatTimeout.ToStringOrNone()
                };

                client.RegisterActivityTypeAsync(request).Wait();
            }

            Logger.Trace("Activity. Name: {0}, Version: {1}", Options.Name, Options.Version);
        }
예제 #4
0
        public void RegisterActivity(string name, string taskListName)
        {
            var listActivityRequest = new ListActivityTypesRequest()
            {
                Domain             = domainName,
                Name               = name,
                RegistrationStatus = RegistrationStatus.REGISTERED
            };
            var results = swfClient.ListActivityTypesAsync(listActivityRequest).Result;

            if (results.ActivityTypeInfos.TypeInfos.FirstOrDefault(x => x.ActivityType.Name == name) == null)
            {
                RegisterActivityTypeRequest request = new RegisterActivityTypeRequest()
                {
                    Name            = name,
                    Domain          = domainName,
                    Description     = "Custom Description Here",
                    Version         = "1.0",
                    DefaultTaskList = new TaskList()
                    {
                        Name = taskListName
                    },                                                       //Worker poll based on this
                    DefaultTaskScheduleToStartTimeout = "150",
                    DefaultTaskStartToCloseTimeout    = "450",
                    DefaultTaskHeartbeatTimeout       = "NONE",
                    DefaultTaskScheduleToCloseTimeout = "350"
                };
                swfClient.RegisterActivityTypeAsync(request);
                Console.WriteLine("Created Activity: " + request.Name);
            }
        }
예제 #5
0
        private async Task <IEnumerable <ActivityTypeInfo> > ListActivitiesFromAmazonBy(string activityName)
        {
            var listRequest = new ListActivityTypesRequest();

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

            return(response.ActivityTypeInfos.TypeInfos);
        }
예제 #6
0
        static void RegisterActivity(string name, string tasklistName)
        {
            // Register activities if it is not already registered
            var listActivityRequest = new ListActivityTypesRequest()
            {
                Domain             = domainName,
                Name               = name,
                RegistrationStatus = RegistrationStatus.REGISTERED
            };

            if (SwfClient.ListActivityTypes(listActivityRequest).ActivityTypeInfos.TypeInfos.FirstOrDefault(
                    x => x.ActivityType.Version == "2.0") == null)
            {
                var request = new RegisterActivityTypeRequest()
                {
                    Name            = name,
                    Domain          = domainName,
                    Description     = "Swf Demo Activities",
                    Version         = "2.0",
                    DefaultTaskList = new TaskList()
                    {
                        Name = tasklistName
                    },                                                       //Worker poll based on this
                    DefaultTaskScheduleToCloseTimeout = "300",
                    DefaultTaskScheduleToStartTimeout = "150",
                    DefaultTaskStartToCloseTimeout    = "450",
                    DefaultTaskHeartbeatTimeout       = "NONE",
                };
                try
                {
                }
                catch (TypeAlreadyExistsException tex)
                {
                    SwfClient.RegisterActivityType(request);
                }
                Console.WriteLine($"INITIATOR: Created Activity Name - {request.Name}");
            }
        }
예제 #7
0
        private async Task CreateActivity()
        {
            //Get the list of activities for the specified domain
            ListActivityTypesRequest listActivityRequest = new ListActivityTypesRequest()
            {
                Domain             = this.SwfConfiguration.DomainName,
                Name               = this.SwfConfiguration.ActivityName,
                RegistrationStatus = RegistrationStatus.REGISTERED
            };
            ListActivityTypesResponse listActivityTypesResponse = await this.SwfClient.ListActivityTypesAsync(listActivityRequest);

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

            //If doesn't exist -> create
            RegisterActivityTypeRequest registerActivityTypeRequest = new RegisterActivityTypeRequest()
            {
                Domain          = this.SwfConfiguration.DomainName,
                Name            = this.SwfConfiguration.ActivityName,
                Description     = this.SwfConfiguration.ActivityDescription,
                Version         = this.SwfConfiguration.ActivityVersion,
                DefaultTaskList = new TaskList()
                {
                    Name = this.SwfConfiguration.ActivityTasksList
                },
                DefaultTaskScheduleToCloseTimeout = this.SwfConfiguration.ScheduleToCloseTimeout,
                DefaultTaskScheduleToStartTimeout = this.SwfConfiguration.ScheduleToStartTimeout,
                DefaultTaskStartToCloseTimeout    = this.SwfConfiguration.StartToCloseTimeout,
                DefaultTaskHeartbeatTimeout       = this.SwfConfiguration.HeartbeatTimeout,
            };

            await this.SwfClient.RegisterActivityTypeAsync(registerActivityTypeRequest);
        }
예제 #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());
        }