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); } }
/// <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); }
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); } }
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); }
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}"); } }
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); }
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()); }