├── .github └── workflows │ └── codeql-analysis.yml ├── ChatGPT spam filter └── readme.md ├── LICENSE ├── README.md ├── ServiceNowJiraIntegration ├── ServiceNowJiraIntegration.zip └── readme.md ├── Twitter_ServiceNow_Incidents ├── images │ ├── 01.png │ ├── 02.png │ ├── 03.png │ ├── 04.png │ ├── 05.png │ ├── 06.png │ ├── 07.png │ ├── 08.png │ ├── 09.png │ ├── 10.png │ ├── 11.png │ ├── 12.png │ ├── 13.png │ ├── 14.png │ ├── 15.png │ ├── 16.png │ ├── 17.png │ ├── 18.png │ └── 19.png └── readme.md ├── agileapps-connector ├── createcase.js └── readme.md ├── aws-lambda ├── Creating_First_Workflow.png ├── aws_connection_config.png ├── aws_service.png ├── aws_service_account_info.png ├── aws_service_mapping.png ├── final_flow.png ├── invoke_aws_service.png ├── postman.png ├── readme.md ├── rest.png ├── return_webhook.png ├── return_webhook_linked.png ├── return_webhook_mapped.png ├── trigger.png ├── webhook.png ├── webhook_payload.png └── webhookconfigured.png ├── convertdata-xml-json ├── ConvertXMLToJSON.zip ├── CreateWorkflow.png ├── SendEmail.png ├── SendEmailMapping.png ├── Testing.PNG ├── XMLToJSON.json ├── XMLToJSONMapping.png ├── XMLToJSONService.PNG ├── completeflow.png └── readme.md ├── cumulocity-s3 ├── CumulocityReg2.PNG ├── addaws.PNG ├── aws.PNG ├── awsIcon.PNG ├── awsS3.PNG ├── canvas.PNG ├── cumulocity-s3.zip ├── cumulocityRegistration.PNG ├── mapping.PNG ├── readme.md └── save.PNG ├── cumulocitytofreshdesk ├── addfreshdeskservice.PNG ├── addglobalerrorhandler.PNG ├── addlogger.PNG ├── completeworkflow.PNG ├── createworkflow.PNG ├── cumulocityalarm-freshdesk.json ├── cumulocityalarmtofreshdesk.zip ├── cumulocityconnection.PNG ├── cumulocitytrigger.PNG ├── errortesting.PNG ├── freshdeskconnection.PNG ├── globalerrorhandlermapping.PNG ├── loggermapping.PNG ├── mapping.PNG ├── readme.md ├── selectfreshdeskaction.PNG └── successtesting.PNG ├── dropbox-sendemail ├── adddropbox.PNG ├── addsendemail.PNG ├── createworkflow.PNG ├── dropboxaction.PNG ├── dropboxconnection.PNG ├── dropboxconnectionsuccess.PNG ├── dropboxtosendemail.json ├── dropboxtosendemail.zip ├── readme.md ├── sendemailmapping.PNG ├── sourcefilemapping.PNG ├── testing.PNG └── testingui.PNG ├── github-slack ├── canvas.PNG ├── connectWorkflow.PNG ├── github-slack.zip ├── githubAuthorization.PNG ├── readme.md ├── save.PNG ├── slackAuth.PNG ├── slackMessage.PNG ├── slackTest.PNG └── successPull.PNG ├── hello-email ├── creating-first-workflow.png ├── emailtosubject.png ├── optionalemail.png ├── postman.png ├── readme.md ├── sendemail.png ├── sendemailrightdialog.png ├── straightemail.png ├── testemail.png ├── testinitialemail.png ├── trigger.png ├── webhook.jpg └── webhookconfigured.png ├── httprequest-sendemail ├── AddHTML.png ├── ConnectHTTPRequest.png ├── FinalWorkflow.png ├── HTTPRequest.png ├── Nodejs.png ├── PollingTriggerClock.png └── readme.md ├── mysql-multi-insert ├── MySQL-ChunkAndInsert.zip ├── README.md ├── custom_nodejs │ └── prepare-multiple-insert-mysql.js └── resources │ ├── create_custom_nodejs_connector_1.png │ ├── create_custom_nodejs_connector_2.png │ ├── import_recipe_1.png │ ├── import_recipe_2.png │ ├── step-0-webhook-configuration.png │ ├── step-1-decode-input-details.png │ ├── step-1-decode-input.png │ ├── step-2-csv-to-json.png │ ├── step-3-chunk-json-details.png │ ├── step-3-chunk-json.png │ ├── step-4-loop-details.png │ ├── step-4-loop-mysql-insert.png │ ├── step-4-loop-prepare-insert.png │ ├── step-4-loop.png │ └── workflow_overview.png ├── netatmo-security-connector ├── .gitignore ├── NetatmoSecurity │ ├── .flowapprc │ ├── action │ │ └── v1 │ │ │ ├── gethomedata.js │ │ │ ├── gethomestatus.js │ │ │ └── getnextevents.js │ ├── auth.conf │ ├── authentication.js │ ├── icon │ │ └── icon.png │ ├── index.json │ ├── oauth.json │ ├── package-lock.json │ └── package.json ├── README.md └── images │ ├── Image001.png │ ├── Image002.png │ ├── Image003.png │ ├── Image004.png │ ├── Image005.png │ ├── Image006.png │ ├── Image007.png │ ├── Image008.png │ └── Image009.png ├── nodejs-blocks ├── Readme.md └── index.js ├── pager-slack ├── pager1.png ├── pager2.png ├── pager3.png ├── readme.md ├── slack1.png ├── slack2.png ├── slack3.png ├── slack4.png ├── slack5.png ├── slack6.png └── slack7.png ├── salesforceleads-slack ├── AddSlackService.png ├── AddingLogger.png ├── CompleteWorkflow.png ├── Creating_First_Workflow.png ├── LoggingMapper.png ├── README.md ├── SalesforceConnection.png ├── SalesforceLeadToSlackMapping.png ├── SalesforceLeadsToSlackChannel.json ├── SalesforceLeadsToSlackChannel.zip ├── SalesforceLogin.png ├── SalesforcePollingTrigger.png ├── SlackAuthentication.png ├── SlackChannelOutput.png ├── SlackConnectionAndAction.png └── TestingWorkflow.png ├── slack-twitter-linkedin ├── canvas.PNG ├── linkedaccess.PNG ├── linkeddata.PNG ├── posttweet.PNG ├── readme.md ├── save.PNG ├── slack-auth.PNG ├── slack-twitter-linkedin.zip └── tweetdata.PNG ├── sms-my-tesla ├── readme.md ├── sms-my-tesla-test-1.png ├── sms-my-tesla.zip ├── sms-tesla-flow.png ├── sms-tesla-sequence-1.png ├── sms-tesla-test-1.png ├── twilio-post.txt ├── wm-io-project-dashboard.png ├── wm-io-switch-1.png ├── wm-io-switch-2.png ├── wm-io-switch-3.png ├── wm-io-switch-case-1.png ├── wm-io-switch-case-2.png ├── wm-io-switch-case-3.png ├── wm-io-switch-case-4.png ├── wm-io-switch-case-5.png ├── wm-io-tesla-1.png ├── wm-io-tesla-10.png ├── wm-io-tesla-11.png ├── wm-io-tesla-12.png ├── wm-io-tesla-2.png ├── wm-io-tesla-3.png ├── wm-io-tesla-4.png ├── wm-io-tesla-5.png ├── wm-io-tesla-6.png ├── wm-io-tesla-7.png ├── wm-io-tesla-8.png ├── wm-io-tesla-9.png ├── wm-io-tesla-get-state-flow.png ├── wm-io-twilio-config-1.png ├── wm-io-twilio-config-2.png ├── wm-io-twilio-response-1.png ├── wm-io-twilio-response-10.png ├── wm-io-twilio-response-11.png ├── wm-io-twilio-response-12.png ├── wm-io-twilio-response-2.png ├── wm-io-twilio-response-3.png ├── wm-io-twilio-response-4.png ├── wm-io-twilio-response-5.png ├── wm-io-twilio-response-6.png ├── wm-io-twilio-response-7.png ├── wm-io-twilio-response-8.png ├── wm-io-twilio-response-9.png ├── wm-io-webhook-trigger-2.png ├── wm-io-webhook-trigger-3.png ├── wm-io-webhook-trigger-4.png ├── wm-io-webhook-trigger-5.png └── wm-io-webhook-trigger.png ├── twilio-receive-sms ├── Complete-Integration.PNG ├── Creating_First_Workflow.png ├── ReceiveMessageFromTwilio.json ├── ReceiveMessageFromTwilio.zip ├── email-canvas.PNG ├── email-map.PNG ├── email-received.PNG ├── readme.md ├── trigger.png ├── twilio-auth.png ├── twilio-diff-options.png └── twilio.png ├── twilio-send-sms ├── add-return-hook.png ├── creating-first-workflow.png ├── final-integration.png ├── postman-execution.png ├── readme.md ├── return-hook-map.png ├── send-sms-using-twilio.json ├── send-sms-using-twilio.zip ├── sms-screenshot.jpg ├── trigger.png ├── twilio-action-configure.png ├── twilio-auth.png ├── twilio-canvas.png ├── twilio-final-complete.png ├── twilio-map.png ├── twilio-search.png ├── webhook-canvas.png ├── webhook-payload.png └── webhook.png ├── wmio-connector-hafas ├── LICENSE ├── README.md ├── resources │ ├── wmio-connector-hafas-combined-workflow.png │ ├── wmio-connector-hafas-getneareststop_coord_mapping.png │ ├── wmio-connector-hafas-getneareststop_output.png │ ├── wmio-connector-hafas-getstationboard_mapping.png │ ├── wmio-connector-hafas-getstationboard_output.png │ ├── wmio-connector-hafas-searchaddress_input.png │ ├── wmio-connector-hafas-searchaddress_output.png │ └── wmio-connector-hafas-standalone-workflow.png └── src │ ├── action │ └── v1 │ │ ├── getlocationname.js │ │ ├── getlocationnearbystops.js │ │ └── getstationboard.js │ ├── auth.conf │ ├── authentication.js │ ├── icon │ └── icon.png │ ├── index.json │ ├── package-lock.json │ ├── package.json │ ├── settings.json │ └── webhook_sampleinput.json └── wmio-tasksynch ├── images ├── Image 001.png ├── Image 025.png ├── Image 030.png ├── Image 037.png ├── Image 038.png ├── Image 039.png ├── Image 043.png ├── Image 050.png ├── Image 051.png ├── Image 052.png ├── Image 053.png ├── Image 054.png ├── Image 055.png ├── Image 056.png ├── Image 1.png ├── Image 2.png ├── Image002.png ├── Image003.png ├── Image004.png ├── Image005.png ├── Image006.png ├── Image007.png ├── Image008.png ├── Image009.png ├── Image010.png ├── Image011.png ├── Image012.png ├── Image013.png ├── Image014.png ├── Image015.png ├── Image016.png ├── Image017.png ├── Image018.png ├── Image019.png ├── Image020.png ├── Image021.png ├── Image022.png ├── Image023.png ├── Image024.png ├── Image026.png ├── Image027.png ├── Image028.png ├── Image029.png ├── Image031.png ├── Image032.png ├── Image033.png ├── Image034.png ├── Image035.png ├── Image036.png ├── Image040.png ├── Image041.png ├── Image042.png ├── Image044.png ├── Image045.png ├── Image046.png ├── Image047.png ├── Image048.png └── Image049.png └── readme.md /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # 12 | name: "CodeQL" 13 | 14 | on: 15 | push: 16 | branches: [ master ] 17 | pull_request: 18 | # The branches below must be a subset of the branches above 19 | branches: [ master ] 20 | schedule: 21 | - cron: '23 20 * * 4' 22 | 23 | jobs: 24 | analyze: 25 | name: Analyze 26 | runs-on: ubuntu-latest 27 | permissions: 28 | actions: read 29 | contents: read 30 | security-events: write 31 | 32 | strategy: 33 | fail-fast: false 34 | matrix: 35 | language: [ 'javascript' ] 36 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] 37 | # Learn more about CodeQL language support at https://git.io/codeql-language-support 38 | 39 | steps: 40 | - name: Checkout repository 41 | uses: actions/checkout@v2 42 | 43 | # Initializes the CodeQL tools for scanning. 44 | - name: Initialize CodeQL 45 | uses: github/codeql-action/init@v1 46 | with: 47 | languages: ${{ matrix.language }} 48 | # If you wish to specify custom queries, you can do so here or in a config file. 49 | # By default, queries listed here will override any specified in a config file. 50 | # Prefix the list here with "+" to use these queries and those in the config file. 51 | # queries: ./path/to/local/query, your-org/your-repo/queries@main 52 | 53 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). 54 | # If this step fails, then you should remove it and run the build manually (see below) 55 | - name: Autobuild 56 | uses: github/codeql-action/autobuild@v1 57 | 58 | # ℹ️ Command-line programs to run using the OS shell. 59 | # 📚 https://git.io/JvXDl 60 | 61 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines 62 | # and modify them (or add more) to build your code if your project 63 | # uses a compiled language 64 | 65 | #- run: | 66 | # make bootstrap 67 | # make release 68 | 69 | - name: Perform CodeQL Analysis 70 | uses: github/codeql-action/analyze@v1 71 | -------------------------------------------------------------------------------- /ChatGPT spam filter/readme.md: -------------------------------------------------------------------------------- 1 | # Detect spam forum posts with webMethods.io Integration ChatGPT connector 2 | 3 | This is a simple workflow example of how to use [webMethods.io Integration ChatGPT API connector](https://tech.forums.softwareag.com/t/webmethods-io-chatgpt-api-connector-available-now/268371) to filter forum spam messages. The example below uses Discourse's API but will also work with any application that has an API you can access. 4 | 5 | ## Prerequisite 6 | 7 | * webMethods.io Integration tenant - [sign up](https://signup.softwareag.cloud/#/basic?product=webmethodsioint) for a free forever trial if you're new 8 | * an OpenAI account and an API key, [Overview - OpenAI API](https://platform.openai.com/overview) 9 | 10 | ## Setup 11 | 12 | 1. Create a new project or choose an existing one. 13 | 14 | 2. Go ahead and get started by creating a blank workflow. If you need a refresher on how to get to this point, [this guide](https://docs.webmethods.io/integration/workflow_building_blocks/creating_first_workflow/#gsc.tab=0) can be a great introduction. 15 | 16 | 3. The first step is to set a RSS feeds trigger which will automatically start the workflow once a new forum post is submitted. 17 | Hover over the Start step and click the gear icon. Find the RSS feeds trigger and configure it – enter RSS Feed URL and perform a test. 18 | 19 | ![3](https://user-images.githubusercontent.com/45091718/226317520-d89e7e8c-4b93-4a2d-9551-5f5184462893.png) ![3 1](https://user-images.githubusercontent.com/45091718/226317550-8ead02aa-b3ae-434b-a8a1-6f8771698748.png) 20 | 21 | 4. Next, search for the ChatGPT connector and add it to the canvas. To configure it provide your API key and fill out all necessary fields – use the prompt field to ask ChatGPT anything. 22 | 23 | ![4](https://user-images.githubusercontent.com/45091718/226317901-8f9c9f8d-344e-4ffd-ac2e-80b7cc2c78fa.png) 24 | 25 | In this example the ChatGPT connector setup looks like this: 26 | 27 | ![4 1](https://user-images.githubusercontent.com/45091718/226317926-e516d0d2-fa81-4c1c-87da-065d9871d40d.png) 28 | 29 | **Model:** *text-davinci-003*
30 | **Prompt:** *Does this post in the Software AG Tech Community support forum sound like spam? 31 | {{$trigger.description}}* (from the Incoming data panel add the post content fetched by the RSS feeds trigger)
32 | **max_tokens:** *35* 33 | 34 | 5. Then you can choose what are the next steps if the post is defined by ChatGPT as spam. 35 | 36 | Add two arrows that come out of the ChatGPT connector. Hover over the first one and click the gear icon. Then set up a condition if the ChatGPT answer matches ‘Yes’. Connect the arrow to the next action. 37 | 38 | ![5](https://user-images.githubusercontent.com/45091718/226318166-eb87fceb-d7e0-432e-80ca-cc59fcb79072.png) 39 | 40 | This example sends a POST API request to Discourse API which flags the post as spam, hides it and sends it to the review queue. The HTTP Request connector setup looks like this: 41 | 42 | **HTTP method:** Post
43 | **URL**: `https://{defaultHost}/post_actions.json`
44 | **Headers:** 45 | ``` 46 | Key: Api-Username 47 | Value: username 48 | 49 | Key: Api-Key 50 | Value: key 51 | ``` 52 | **Set Body Type:** x-www-form-urlencoded
53 | **Body:** 54 | ``` 55 | Name: id 56 | Value: get the post id from the Incoming data panel 57 | 58 | Name: post_action_type_id 59 | Value: 8 60 | ``` 61 | 62 | If the post is not spam, set up a condition if the ChatGPT answer matches ‘no’ and connect the second arrow to the Stop step – this will leave the post as it is. 63 | 64 | ![5 1](https://user-images.githubusercontent.com/45091718/226318736-0839fe8e-0062-49a1-906b-36f6330694a8.png) 65 | 66 | 6. Save the workflow. Now to test the workflow you can publish a new post and you can review the result. 67 | 68 | ![6](https://user-images.githubusercontent.com/45091718/226318858-10a0bb21-419b-4b17-a6aa-3f646178db53.png) 69 | 70 | 71 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # webMethods.io workflow examples 2 | Collection of examples for beginner webMethods.io developers. It consists of common use cases and starting points for developers getting up to speed with webMethods.io. webMethods.io is an integration platform that enables a wide variety of integration tasks to be accomplishes quickly and easily with a graphical/api interface. In many cases, use of webMethods.io allows tasks to be accomplished much faster than traditional efforts involving software engineering, more information can be found [here](https://www.softwareag.cloud/site/product/webmethodsio-integration.html#/). Each example will contain instructions on how to recreate itself from a blank project. 3 | 4 | ## Introduction 5 | 6 | 1. [Hello Email](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/hello-email) 7 | 1. [Pagerduty-Slack](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/pager-slack) 8 | 1. [SalesForceLeads-Slack](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/salesforceleads-slack) 9 | 1. [Github-Slack](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/github-slack) 10 | 1. [Slack-Twitter-Linkedin](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/slack-twitter-linkedin) 11 | 1. [AWS-Lambda](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/aws-lambda) 12 | 1. [Twilio-Receive-SMS](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/twilio-receive-sms) 13 | 1. [Twilio-Send-SMS](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/twilio-send-sms) 14 | 1. [Cumulocity-S3](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/cumulocity-s3) 15 | 1. [Cumulocity-Freshdesk](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/cumulocitytofreshdesk) 16 | 1. [Convert-XML-JSON](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/convertdata-xml-json) 17 | 1. [Dropbox-Sendemail](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/dropbox-sendemail) 18 | 1. [MySQL-Insert](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/mysql-multi-insert) 19 | 1. [Tasksynch](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/wmio-tasksynch) 20 | 1. [Agile Apps Connector](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/agileapps-connector) 21 | 1. [Hafas Connector](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/wmio-connector-hafas) 22 | 1. [Netamo Connector](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/netatmo-security-connector) 23 | 1. [SMS my Tesla](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/sms-my-tesla) 24 | 1. [Twitter-ServiceNow](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/Twitter_ServiceNow_Incidents) 25 | 1. [Nodejs-Blocks](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/nodejs-blocks) 26 | 1. [HTTPrequest-Sendemail](https://github.com/SoftwareAG/webmethodsio-examples/tree/master/httprequest-sendemail) 27 | 1. [ChatGPT spam filter](https://github.com/SoftwareAG/webMethods-io-examples/tree/master/ChatGPT%20spam%20filter) 28 | 2. [ServiceNowJiraIntegration](https://github.com/SoftwareAG/webMethods-io-examples/tree/master/ServiceNowJiraIntegration) 29 | 30 | ## Custom 31 | 32 | 1. [Echo Custom Connector](https://github.com/SoftwareAG/wmio-connector-basicexample) - This example shows the basic features of a webMethods.io custom connector to help you get started with your own one. 33 | 34 | ______________________ 35 | For more information you can Ask a Question in the [TECHcommunity Forums](https://tech.forums.softwareag.com/tags/c/forum/1/webMethods-io-Integration). 36 | 37 | You can find additional information in the [Software AG TECHcommunity](https://tech.forums.softwareag.com/tag/webmethods-io-integration). 38 | ______________________ 39 | These tools are provided as-is and without warranty or support. They do not constitute part of the Software AG product suite. Users are free to use, fork and modify them, subject to the license agreement. While Software AG welcomes contributions, we cannot guarantee to include every contribution in the master project. 40 | 41 | Contact us at [TECHcommunity](mailto:technologycommunity@softwareag.com?subject=Github/SoftwareAG) if you have any questions. 42 | -------------------------------------------------------------------------------- /ServiceNowJiraIntegration/ServiceNowJiraIntegration.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/ServiceNowJiraIntegration/ServiceNowJiraIntegration.zip -------------------------------------------------------------------------------- /ServiceNowJiraIntegration/readme.md: -------------------------------------------------------------------------------- 1 | ***Author:** Bharath Meka ([@bharathreddy89](https://github.com/bharathreddy89))* 2 | ## ServiceNow – Jira integration 3 | This webMethods.io Integration recipe integrates Jira and ServiceNow applications. The workflow creates an issue in Jira for every new incident in ServiceNow. 4 | 5 | ## Prerequisites 6 | * *Atlassian Jira account* 7 | * *ServiceNow account* 8 | 9 | ## Setup 10 | 1. Download the recipe archive ([**ServiceNowJiraIntegration.zip**](https://github.com/SoftwareAG/webMethods-io-examples/blob/master/ServiceNowJiraIntegration/ServiceNowJiraIntegration.zip)). 11 | ![image](https://github.com/SoftwareAG/webMethods-io-examples/assets/23717841/565e59cc-2ff2-4584-a3fe-2309b634e234) 12 | 2. Go to the project where you want to import the workflow and click **Import**. 13 | ![image](https://github.com/SoftwareAG/webMethods-io-examples/assets/23717841/279330eb-0912-4d16-aee4-8c6467efdd08) 14 | 3. Find the archive on your computer and open it. 15 | 4. On the next screen, you need to connect your Jira and ServiceNow accounts with webMethods.io Integration and provide the needed information. 16 | ![image](https://github.com/SoftwareAG/webMethods-io-examples/assets/23717841/ac7442b3-fc92-4f5a-b178-f1d48f9ea151) 17 | > **Note:** You need to select an incident table in your ServiceNow project as a trigger. 18 | 19 | When you are done, click **Import**. 20 | 21 | This will import the workflow into the specified project. 22 | 23 | ![image](https://github.com/SoftwareAG/webMethods-io-examples/assets/23717841/2b48b170-fed9-487b-bc82-0d96c0fa8c82) 24 | ![image](https://github.com/SoftwareAG/webMethods-io-examples/assets/23717841/93c5a8af-fa5c-43bf-bb15-037d1532409b) 25 | 26 | 5. You can now proceed with testing the workflow – simply add a new incident in your ServiceNow incident table, watch the workflow execution and create an issue in your Jira project. 27 | -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/01.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/02.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/03.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/04.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/05.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/06.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/07.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/08.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/09.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/10.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/11.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/12.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/13.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/14.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/15.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/16.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/17.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/18.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/images/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/Twitter_ServiceNow_Incidents/images/19.png -------------------------------------------------------------------------------- /Twitter_ServiceNow_Incidents/readme.md: -------------------------------------------------------------------------------- 1 | Twitter Tweets to ServiceNow Incidents: 2 | 3 | 4 | This flow identifies hashtags addressed to a certain twitter account and directs tweets with certain hashtag to ServiceNow, to create incidents and other tweets to GoogleSheet to log for future reference. 5 | 6 | 1) Start with an empty flow: 7 | 8 | ![](images/01.png) 9 | 10 | 11 | 2) Double Click on the ‘Start’ icon to see the list of triggers. Search for Twitter. 12 | 13 | ![](images/02.png) 14 | 15 | 3) Create a new trigger definition. Trigger the flow when there is a tweet mentioning you with the list of hashtags in the hashtag field. 16 | 17 | ![](images/03.png) 18 | ![](images/04.png) ![](images/08.png) 19 | ![](images/05.png) 20 | 21 | 22 | 3) Add a switch and a Service Now step to the flow. 23 | 24 | ![](images/06.png) 25 | 26 | 4) Configure ServiceNow with your ServiceNow Developer Account Details. Select the createIncidents operation. 27 | ![](images/07.png) 28 | 29 | 5) Configure ServiceNow CreateIncidents mapping 30 | 31 | ![](images/08.png) 32 | 33 | 34 | 5) Click on the path from Switch to ServiceNow and add the Case1 Definition. In this case, we want to filter the Hashtag array received from Twitter feed and identify if the array has #SwagHelp. If yes, send that feed to serviceNow to create a new Incident. 35 | 36 | ![](images/09.png) 37 | 38 | Click on Transform > Add Transform Name > Select Transform Data as Filter (from the Array subsection). 39 | 40 | Drag and drop the ‘Hashtags’ array from Twitter Trigger output (left side) to the Array field on the right side. Use AdvancedFilter to filter the Array object where hashtag[] = ‘SwagHelp’. Click Done on the transform window. 41 | 42 | 43 | 44 | 6) On the condition window, the newly created transform variable is available to use. Map the filtered array to filter 1 on right side and check if this array has any elements. If it does, it means we received a #SwagHelp in the feed. 45 | ![](images/10.png) 46 | 47 | 7) For the Default flow of switch case, map that branch to a Google Sheet workflow step. All other hashtags will cause the twitter feed to be logged into an excel/Google Sheet. This can be later converted into a CSV or JSON for further processing and analysis, if required. 48 | 49 | ![](images/11.png) 50 | 51 | 52 | 53 | 8) GoogleSheet add row configuration 54 | 55 | ![](images/12.png) 56 | 57 | 9) The spreadsheet id and sheet name show as dropdowns and you can pick from the available spreadsheets in your google drive. 58 | 59 | ![](images/13.png) 60 | 61 | Using Transform capability to get the current datetime in a specific format. 62 | 63 | ![](images/14.png) 64 | 65 | Mapping the userid, tweet and currentDateTime (from Transform section). 66 | ![](images/15.png) 67 | 68 | Output: 69 | 70 | Twitter Tweet: 71 | 72 | ![](images/16.png) 73 | 74 | webMethods.io: 75 | 76 | ![](images/17.png) 77 | 78 | Service Now: 79 | 80 | ![](images/18.png) 81 | 82 | Google Sheet: 83 | When the tweet doesn’t contain the #SwagHelp tag: 84 | 85 | ![](images/19.png) 86 | -------------------------------------------------------------------------------- /agileapps-connector/createcase.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright � 2010 - 2013 Apama Ltd. 3 | * Copyright � 2013 - 2016 Software AG, Darmstadt, Germany and/or its licensors 4 | * 5 | * SPDX-License-Identifier: Apache-2.0 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * 19 | */ 20 | module.exports = { 21 | 22 | name: "createcase", 23 | 24 | title: "Createcase", 25 | 26 | description: "", 27 | version: "v1", 28 | 29 | input:{ 30 | title: "Createcase", 31 | type: "object", 32 | properties: { 33 | caseobject: { 34 | title: 'Object', // displayed as field label 35 | type: 'string', 36 | description: 'Object', 37 | minLength: 1 // define as reqiured 38 | }, 39 | casedata: { 40 | title: 'Data', 41 | type: 'array', 42 | description: 'Data', 43 | items: { 44 | title : 'Key-Value pairs', 45 | type: 'object', 46 | description: 'Key-Values', 47 | properties: { 48 | casekey: { 49 | title: 'Key', // displayed as field label 50 | type: 'string', 51 | description: 'Key', 52 | minLength: 1 // define as reqiured 53 | }, 54 | casevalue: { 55 | title: 'Value', // displayed as field label 56 | type: 'string', 57 | description: 'Value', 58 | minLength: 1 // define as reqiured 59 | } 60 | } 61 | } 62 | } 63 | } 64 | }, 65 | 66 | output: { 67 | title: "output", 68 | type: "object", 69 | properties: { 70 | 71 | } 72 | }, 73 | 74 | mock_input:{caseobject:'Anwohnerparkausweis', casedata:[ {casekey:'field_id', casevalue:'123'},{casekey:'rolle', casevalue:'test'} ] }, 75 | 76 | 77 | execute: function(input, output){ 78 | // to access auth info use input.auth , eg: input.auth.username 79 | // and to return output use output callback like this output(null, { 'notice' : 'successful'}) 80 | // your code here 81 | const request = require('request'); 82 | var loginxml = " " + ""+input.auth.username+"" + ""+input.auth.password+"" + "" + ""; 83 | var cookie = "test" 84 | 85 | 86 | request.post({ 87 | url: "https://.agileappscloud.eu/networking/rest/login", 88 | port:443, 89 | method:"POST", 90 | headers:{ 91 | 'Content-Type' : 'application/xml' 92 | }, 93 | body: loginxml 94 | }, 95 | function (error, res, body) { 96 | if (error) { 97 | output(null,error) 98 | return 99 | } 100 | 101 | let response= JSON.parse(body); 102 | cookie = response.platform.login.cookieString; 103 | 104 | var addrecordxml = " "; 105 | input.casedata.forEach(element => { 106 | addrecordxml+= "<" + element.casekey +">" + element.casevalue +"" 107 | }); 108 | addrecordxml = addrecordxml + ""; 109 | 110 | request.post({ 111 | url: "https://.agileappscloud.eu/networking/rest/record/" + input.caseobject, 112 | port: 443, 113 | method: "POST", 114 | headers: { 115 | 'Content-Type' : 'application/xml', 116 | 'Cookie' : cookie 117 | }, 118 | body: addrecordxml 119 | }, 120 | function (error, res, body) { 121 | if (error) { 122 | output(null,error) 123 | return 124 | } 125 | output(null,body) 126 | }) 127 | }) 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /agileapps-connector/readme.md: -------------------------------------------------------------------------------- 1 | # webMethods.io Integration Connector for AgileApps 2 | 3 | This example shows how to create a generic webmethods.io connector to create data records in AgileApps. The AgileApps Cloud platform is a business process and application platform that lets you create process-driven, situational, case management applications in a very short time. 4 | 5 | ## Prerequisite 6 | 7 | 1. To test the AgileApps Connector you should have a AgileApps tenant. You can request a 30-days free-trial on https://www.softwareag.cloud/site/product/webmethods-agile-apps.html#/ 8 | 9 | 2. NVM v8.14.0 10 | 11 | 3. wM.io Connector Builder CL (by running the command "npm i @webmethodsio/wmiocli -g") 12 | 13 | 14 | 15 | ## Setup 16 | 17 | 1. Before you can start with the webMethods.io Connector Builder, you must first 18 | 19 | • Switch to Node.js v8.14.0 20 | 21 | • Make sure that Connector Builder is installed globally under Node.js v8.14.0 22 | 23 | • Login to the webMethods.io Integration tenant 24 | 25 | 2. Establish connection to your tenant from the connector builder. 26 | • You need your "Developer key" on your webMethods.io tenant - You find it on your avatar/Settings. 27 | • In your visual code terminal do 28 | 29 | > nvm use 8.14.0 30 | 31 | > wmio -v 32 | 33 | > wmio login #Enter the required parameters like your tenant, email and developer key. 34 | 35 | > wmio init #Enter the name of your connector 36 | 37 | 3. Install all needed libraries for your new connector app. To do so, run the following command in the Terminal view: 38 | > npm install 39 | 40 | 4. Create a new Action named "createcase" by running the following command 41 | > wmio create action createcase 42 | 43 | 5. Implement the "createcase" action using the createcase.js sample 44 | 45 | • You find the new action "createcase" in /action/v1 46 | 47 | • Replace the source with the createcase.js file of this sample 48 | 49 | 6. Deploy the connector to your webMethods.io tenant 50 | 51 | • In your Terminal view enter the following command: 52 | > wmio deploy 53 | 54 | 55 | ## Test your new "createcase" connector 56 | 57 | 1. In a browser, log into your tenant and open webMethods.io integration 58 | 59 | 2. Open a project 60 | 61 | 3. Create a new workflow 62 | 63 | 4. Find the new created connector in the Connectors Panel by entering the name in the search field 64 | 65 | 5. Drag the new Connector to your canvas and connect it with the start and end nodes. 66 | 67 | 6. Open the action settings by clicking on the gear icon of the action node. On the first step, an account for the connector must be configured. Click on the "+" icon to do so. Entwer your userame and password of the agileapps tenant. Click "next" 68 | 69 | 7. Provide the input values for the action 70 | 71 | • Set the "object" name to name of the agileapps object on which you would like to add a new record. 72 | 73 | • Add one or more attributes to the object by adding key-value-pairs to the object. The "key" has to be one of the field-name of the agileapps object. When you are done click "next". 74 | 75 | 8. In the last step of the action configuration, you can test your action by clicking on the "Test" button. 76 | 77 | 9. As a result you should see the response from agileapps which contains the record-Id of the newly created record. You can also check in agileapps if the record was created successful. 78 | 79 | 80 | -------------------------------------------------------------------------------- /aws-lambda/Creating_First_Workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/Creating_First_Workflow.png -------------------------------------------------------------------------------- /aws-lambda/aws_connection_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/aws_connection_config.png -------------------------------------------------------------------------------- /aws-lambda/aws_service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/aws_service.png -------------------------------------------------------------------------------- /aws-lambda/aws_service_account_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/aws_service_account_info.png -------------------------------------------------------------------------------- /aws-lambda/aws_service_mapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/aws_service_mapping.png -------------------------------------------------------------------------------- /aws-lambda/final_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/final_flow.png -------------------------------------------------------------------------------- /aws-lambda/invoke_aws_service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/invoke_aws_service.png -------------------------------------------------------------------------------- /aws-lambda/postman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/postman.png -------------------------------------------------------------------------------- /aws-lambda/readme.md: -------------------------------------------------------------------------------- 1 | # Invoke AWS Lambda function 2 | 3 | This example shows how easy it is, to call AWS Lambda function from webMethods.io and expose it as a rest resource inside webMethods.io. The response involves status code showing the success or failure of Lambda invocation 4 | 5 | ## Prerequisite 6 | 7 | The AWS Lambda function needs to written and configured in AWS. You must also have AWS access id and secret access key for the AWS account, which you plan to use, to call AWS Lambda. 8 | 9 | 10 | ## Setup 11 | 12 | 1. Go ahead and get started creating a blank workflow. If you need a refresher on how to get to this point, this [guide](https://docs.webmethods.io/workflow-building-blocks/creating-first-workflow) can be a great introduction. Your starting point should resemble ![this](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/Creating_First_Workflow.png) 13 | 14 | 2. The Webhook is created by modifying the start icon, which is is the entrypoint to the new flow. Please select the gear on top of the start icon to access settings. Once settings is selected in the start icon, a 'trigger' dialog will appear that allows Webhook to be selected.![trigger](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/trigger.png) 15 | 16 | 3. Leave Webhook Authentication unchecked. Check/Enable Webhook Payload, add the structure of the input payload into the "Body" text area and click next. Note the webhook url and save this for later. As a best practice, Authentication should be added immedately after flow ("Call AWS Lambda Directly") is working ![webhook](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/webhook.png) ![webhookpayload](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/webhook_payload.png) 17 | 18 | 4. Select done once presented with the final dialog. You should now see the start arrow dialog replaced with a webhook icon. ![webhookconfigured](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/webhookconfigured.png) 19 | 20 | 21 | 5. Now the flow is ready to process, once the webhook receives the request. In the search dialog lookup "Amazon" service and select "Amazon Web Services" service, drag and drop it into the flow canvas. ![awsservice](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/aws_service.png) Connect the arrows from start to the email icon and then to the end icon. This inserts the 'Amazon web services' step in the flow. 22 | 23 | 6. Connect the start step to 'Amazon web services' step. Also connect from 'Amazon webservices' to the stop step. ![invokeawsservice](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/invoke_aws_service.png) 24 | 25 | 7. Configure the "Amazon webservices" step by clicking the gear icon in the step. Select action as "Lambda Invoke function". Give it a name (ie the step name) as "Lambda Invoke Function". Optional, Please take a look at all the actions supported by the service, which includes calling "Execute Lambda Function via API Gateway". Click + icon next to "Connect to Amazon Webservices" drop down and configure the account credentials to connect to AWS instance. ![awsconnectionconfig](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/aws_connection_config.png). Note - if you had already configured the AWS credentials, just reuse it by selecting from "Connect to Amazon Webservices" drop down. 26 | 27 | 8. Configure the AWS credentials. You will use AWS access key ID and access key to connect to AWS instance in this screen. ![awsserviceaccountinfo](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/aws_service_account_info.png) Click Add to close the window and go back to configure "Amazon websservices "Lambda Invoke function" window. Click "Next" 28 | 29 | 9. In the Mapping screen, add the AWS Region for the function, provide exact name of the Lambda function you would like to call in AWS and input data to functions arguments. ![awsservicemapping](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/aws_service_mapping.png) Click Next and complete the form. The resulting flow will look like as below. ![finalflow](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/final_flow.png)The flow is now ready for testng in the webMethods.io UI 30 | 31 | 10. To make this a flow a useful Rest API, you need to return a response. This can be performed by adding a "Return Data on Sync Webhook" service step. In order to do this, in the search dialog lookup "Return" service and select "Return Data on Sync Webhook" service, drag and drop into the flow canvas. ![returnresponse](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/return_webhook.png) The resulting flow will look like as below ![returnresponselinked](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/return_webhook_linked.png) 32 | 33 | 11.Configure the "Return Data on Sync Webhook" service by clicking on the gear icon on the service step, give it a name and click next 34 | 35 | 12. In this page map the response status code from Lambda function to Response data of the "Return Data on Sync Webhook" service. ![returnwebhookmapped](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/return_webhook_mapped.png) 36 | 37 | 13. The flow is now ready to test as a Rest API from an external tool like Postman. Please make sure to grab the exposed Rest URL from the Webhook URL field in the first flow step(webhook) and use it as the Rest API URL. ![restcall](https://github.com/flyondeals/webmethodsio-examples/blob/master/aws-lamda/rest.png) 38 | 39 | -------------------------------------------------------------------------------- /aws-lambda/rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/rest.png -------------------------------------------------------------------------------- /aws-lambda/return_webhook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/return_webhook.png -------------------------------------------------------------------------------- /aws-lambda/return_webhook_linked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/return_webhook_linked.png -------------------------------------------------------------------------------- /aws-lambda/return_webhook_mapped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/return_webhook_mapped.png -------------------------------------------------------------------------------- /aws-lambda/trigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/trigger.png -------------------------------------------------------------------------------- /aws-lambda/webhook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/webhook.png -------------------------------------------------------------------------------- /aws-lambda/webhook_payload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/webhook_payload.png -------------------------------------------------------------------------------- /aws-lambda/webhookconfigured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/aws-lambda/webhookconfigured.png -------------------------------------------------------------------------------- /convertdata-xml-json/ConvertXMLToJSON.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/convertdata-xml-json/ConvertXMLToJSON.zip -------------------------------------------------------------------------------- /convertdata-xml-json/CreateWorkflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/convertdata-xml-json/CreateWorkflow.png -------------------------------------------------------------------------------- /convertdata-xml-json/SendEmail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/convertdata-xml-json/SendEmail.png -------------------------------------------------------------------------------- /convertdata-xml-json/SendEmailMapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/convertdata-xml-json/SendEmailMapping.png -------------------------------------------------------------------------------- /convertdata-xml-json/Testing.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/convertdata-xml-json/Testing.PNG -------------------------------------------------------------------------------- /convertdata-xml-json/XMLToJSONMapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/convertdata-xml-json/XMLToJSONMapping.png -------------------------------------------------------------------------------- /convertdata-xml-json/XMLToJSONService.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/convertdata-xml-json/XMLToJSONService.PNG -------------------------------------------------------------------------------- /convertdata-xml-json/completeflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/convertdata-xml-json/completeflow.png -------------------------------------------------------------------------------- /convertdata-xml-json/readme.md: -------------------------------------------------------------------------------- 1 | # Convert Data xml-json and send email 2 | 3 | This example shows how easy it is, to convert the data from one format to other format. We can pass any xml data in the rest api call and get that converted to json format. 4 | 5 | ## Prerequisite 6 | Have some XML data handy to convert to Json 7 | 8 | 9 | ## Setup 10 | 11 | 1. Go ahead and get started creating a blank workflow. If you need a refresher on how to get to this point, this [guide](https://docs.webmethods.io/workflow-building-blocks/creating-first-workflow) can be a great introduction. Your starting point should resemble ![CreateWorkFlow](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/convertdata-xml-json/completeflow.png) 12 | 13 | 2. In the search dialog lookup "xml to json" service and select "XML to JSON" service, drag and drop it into the flow canvas. ![XML to JSON](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/convertdata-xml-json/XMLToJSONService.PNG) Connect the arrows automatically from start to the XML to JSON service icon. This inserts the 'XML to JSON' step in the flow. Hardcode the XML data which need to be converted to JSON. 14 | 15 | 3. Under XML to JSON service mapping map the input body to XML Data ![Mapping](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/convertdata-xml-json/XMLToJSONMapping.png) 16 | 17 | 4. We can configure send email if the converted data need to be sent over email to the respected audience. In the search dialog lookup "send an email" service and select "Send an Email" service, drag and drop it into the flow canvas. ![SendEmail](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/convertdata-xml-json/SendEmail.png) 18 | 19 | 5.Under Send an Email configuere the to address, cc, subject and map the body to Json data. ![SendEmailMapping](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/convertdata-xml-json/SendEmailMapping.png) 20 | 21 | 6.Your complete flow should looks like this.![CompleteFlow](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/convertdata-xml-json/completeflow.png) 22 | 23 | 6. Now test the flow by clicking on Test button. We can view the result in Action tab.![Testing](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/convertdata-xml-json/Testing.PNG) 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /cumulocity-s3/CumulocityReg2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocity-s3/CumulocityReg2.PNG -------------------------------------------------------------------------------- /cumulocity-s3/addaws.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocity-s3/addaws.PNG -------------------------------------------------------------------------------- /cumulocity-s3/aws.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocity-s3/aws.PNG -------------------------------------------------------------------------------- /cumulocity-s3/awsIcon.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocity-s3/awsIcon.PNG -------------------------------------------------------------------------------- /cumulocity-s3/awsS3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocity-s3/awsS3.PNG -------------------------------------------------------------------------------- /cumulocity-s3/canvas.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocity-s3/canvas.PNG -------------------------------------------------------------------------------- /cumulocity-s3/cumulocity-s3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocity-s3/cumulocity-s3.zip -------------------------------------------------------------------------------- /cumulocity-s3/cumulocityRegistration.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocity-s3/cumulocityRegistration.PNG -------------------------------------------------------------------------------- /cumulocity-s3/mapping.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocity-s3/mapping.PNG -------------------------------------------------------------------------------- /cumulocity-s3/readme.md: -------------------------------------------------------------------------------- 1 | # Cumulocity > WebMethods > AWS S3 2 | In this example we will send IoT logs from webMethods to AWS S3 3 | 4 | ## Prerequisites 5 | I. AWS instance running with an available S3 bucket, Access Key and Secret Key will be required when registering Access to your AWS enviroment 6 | 7 | II. Cumulocity account with at least 1 registered IoT device 8 | 9 | ## Set Up 10 | 11 | 1. Lets start by creating a new workflow from scratch, you should now see a workflow canvas shown below. 12 | 13 | canvas 14 | 15 | 2. Double click the start icon, scroll down the list of triggers and select Cumulocity. You will now be able to set a label name for your Trigger. We will leave the Select Trigger field as "Alarm". If this is your first time connecting Cumulocity, you will have to click the "+" button and enter your Cumulocity Tenant and Credentials(Hover over the lightbulb for examples). Last you will have to enter your device ID(Device ID can be found in Cumulocity under the device information). 16 | 17 | cumulocityRegistration 18 | 19 | CumulocityReg2 20 | 21 | 3. Click and drop the AWS icon from the list of application on the right panel onto the canvas. Connect the start icon to the AWS icon and also connect the AWS icon to the end icon. 22 | 23 | awsIcon 24 | 25 | 4. Double click the AWS icon and from the list of Actions select "S3 Upload File". You will now have to click the "+" sign and connect to your AWS instance by entering the required Keys, when finished click "Add". 26 | 27 | aws 28 | 29 | addaws 30 | 31 | 5. From the mapping screen we will now enter the S3 bucket that you want files uploaded into. We can now also customize the Cumulocity Data we want to recieve and store in a file for each alarm. In the Example below for the File name I used the Id + _@_ + time + .txt (example file name : 37417_@_2018-12-18T06:54:20.007Z.txt). In the Raw Data field I added the string of information and made the content type as "text/plain" . Click the "Next" button and Test your configured Data. When test has passed click the "Done" button. 32 | 33 | mapping 34 | 35 | 6. It is very important to remeber to save your workflow in order to start executing the workflow! 36 | 37 | save 38 | 39 | 7. To test the workflow, trigger an alarm from your device, you will see the workflow execute and save the file into your specified S3 bucket. 40 | 41 | awsS3 42 | 43 | -------------------------------------------------------------------------------- /cumulocity-s3/save.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocity-s3/save.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/addfreshdeskservice.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/addfreshdeskservice.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/addglobalerrorhandler.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/addglobalerrorhandler.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/addlogger.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/addlogger.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/completeworkflow.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/completeworkflow.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/createworkflow.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/createworkflow.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/cumulocityalarmtofreshdesk.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/cumulocityalarmtofreshdesk.zip -------------------------------------------------------------------------------- /cumulocitytofreshdesk/cumulocityconnection.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/cumulocityconnection.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/cumulocitytrigger.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/cumulocitytrigger.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/errortesting.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/errortesting.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/freshdeskconnection.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/freshdeskconnection.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/globalerrorhandlermapping.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/globalerrorhandlermapping.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/loggermapping.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/loggermapping.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/mapping.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/mapping.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/readme.md: -------------------------------------------------------------------------------- 1 | # Cumulocity Alarm To FreshDesk Ticket with Global Error Handling 2 | 3 | This example shows how easy it is, to create the freshdesk ticket for each device alarms created in cumulocity. 4 | 5 | ## Prerequisite 6 | We should have the device added to cumulocity SaaS and an alarm should be created for device health monitoring 7 | We should have a FreshDesk access to create the tickets 8 | 9 | 10 | ## Setup 11 | 12 | 1. Go ahead and get started creating a blank workflow. If you need a refresher on how to get to this point, this [guide](https://docs.webmethods.io/workflow-building-blocks/creating-first-workflow) can be a great introduction. Your starting point should resemble ![CreateWorkFlow](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/createworkflow.PNG) 13 | 14 | 2. Add the cumulocity trigger by editing the start button and selecting the cumulocity trigger from the search result.![CumulocityTrigger](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/cumulocitytrigger.PNG) 15 | 16 | 3. Enter the cumulocity connection details and also trigger details. Select Trigger as Alarm and Device ID.![CumulocityConnection]( 17 | https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/cumulocityconnection.PNG) 18 | 19 | 4. Add the FreshDesk service in the canvas by searching under available services.![AddFreshDeskService](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/addfreshdeskservice.PNG) 20 | 21 | 5. Click on the small settings icon on the freshdesk service to add the action "create ticket". ![SelectFreshDeskAction](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/selectfreshdeskaction.PNG) 22 | 23 | 6. Add the fresh desk connection details to create the connection to freshdesk.![FreshDeskConnection](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/freshdeskconnection.PNG) 24 | 25 | 7. Now map the required data from cumulocity alarm to freshdesk ticket. Do not forget to map the required fields.![Mapping](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/mapping.PNG) 26 | 27 | 8. We have a cool feature which is logging where you can log the necessary unique data so that you can visualize the data in monitoring workflows. Search for logging and drag and drop the logging service to canvas.![addlogger](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/addlogger.PNG) 28 | 29 | 9. Map the required fields in the logging. In the below example we have mapped the complete cumulocity alarm information.![AddLogger](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/loggermapping.PNG) 30 | 31 | 10. This completes the workflow and connect to stop step. We can add the global error handler for the complete workflow. If any error happens in the workflow is catch the error by the global error handler.![AddGlobalErrorHandler](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/addglobalerrorhandler.PNG) 32 | 33 | 11. If any error happens we create one more ticket in the freshdesk so that necessary actions can be taken. Do the mapping for freahdesk ticket.![GlobalErrorHandlerMapping](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/globalerrorhandlermapping.PNG) 34 | 35 | 12. This is the complete workflow looks like. ![completeworkflow](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/completeworkflow.PNG) 36 | 37 | 13. We can test the success scenario by creating the cumulocity alarm for the device added. ![SuccessTesting]( 38 | https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/successtesting.PNG) 39 | 40 | 14. We can test the negative scenario by not passing the required field while creating the freshdesh ticket. This scenario will invoke the global error handler.![SuccessTesting](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/cumulocitytofreshdesk/errortesting.PNG) 41 | -------------------------------------------------------------------------------- /cumulocitytofreshdesk/selectfreshdeskaction.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/selectfreshdeskaction.PNG -------------------------------------------------------------------------------- /cumulocitytofreshdesk/successtesting.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/cumulocitytofreshdesk/successtesting.PNG -------------------------------------------------------------------------------- /dropbox-sendemail/adddropbox.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/dropbox-sendemail/adddropbox.PNG -------------------------------------------------------------------------------- /dropbox-sendemail/addsendemail.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/dropbox-sendemail/addsendemail.PNG -------------------------------------------------------------------------------- /dropbox-sendemail/createworkflow.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/dropbox-sendemail/createworkflow.PNG -------------------------------------------------------------------------------- /dropbox-sendemail/dropboxaction.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/dropbox-sendemail/dropboxaction.PNG -------------------------------------------------------------------------------- /dropbox-sendemail/dropboxconnection.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/dropbox-sendemail/dropboxconnection.PNG -------------------------------------------------------------------------------- /dropbox-sendemail/dropboxconnectionsuccess.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/dropbox-sendemail/dropboxconnectionsuccess.PNG -------------------------------------------------------------------------------- /dropbox-sendemail/dropboxtosendemail.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/dropbox-sendemail/dropboxtosendemail.zip -------------------------------------------------------------------------------- /dropbox-sendemail/readme.md: -------------------------------------------------------------------------------- 1 | # Download the file from dropbox and send an email to respective people by attaching the downloaded file. 2 | 3 | This example shows how easy it is, to send an email to respective audience with the downloaded file from dropbox as an attachment. 4 | 5 | ## Prerequisite 6 | Have the email address handy to send the attachment 7 | Get the files uploaded to dropbox SaaS application 8 | 9 | ## Setup 10 | 11 | 1. Go ahead and get started creating a blank workflow. If you need a refresher on how to get to this point, this [guide](https://docs.webmethods.io/workflow-building-blocks/creating-first-workflow) can be a great introduction. Your starting point should resemble ![CreateWorkFlow](https://github.com/maam1/webmethodsio-examples/blob/master/dropbox-sendemail/createworkflow.PNG) 12 | 13 | 2. Add the dropbox service in the canvas by drag and drop feature. This automatically connects with the start of the step![AddDropBox](https://github.com/maam1/webmethodsio-examples/blob/master/dropbox-sendemail/adddropbox.PNG) 14 | 15 | 3. Click on the small settings icon on the Dropbox service to add the action "Download File". ![DropboxAction](https://github.com/maam1/webmethodsio-examples/blob/master/dropbox-sendemail/dropboxaction.PNG) 16 | 17 | 4. Add the Dropbox connection details to create the connection to dropbox. We can use the automatic default feature to connect where the webmethods.io picks up the connection details from browser cookies. You just need to sign into dropbox on the browser and webmethods.io does everything behind the scene![dropboxconnection](https://github.com/maam1/webmethodsio-examples/blob/master/dropbox-sendemail/dropboxconnection.PNG) 18 | ![DropboxConnection_Success](https://github.com/maam1/webmethodsio-examples/blob/master/dropbox-sendemail/dropboxconnectionsuccess.PNG) 19 | 20 | 5. Now map the source file to download from dropbox.![SourcefileMapping](https://github.com/maam1/webmethodsio-examples/blob/master/dropbox-sendemail/sourcefilemapping.PNG) 21 | 22 | 6. We have a cool feature which is sending email where you can send the content to respective audience. Search for "send an email" and drag and drop the "Send an Email" service to canvas.![AddSendEmail](https://github.com/maam1/webmethodsio-examples/blob/master/dropbox-sendemail/addsendemail.PNG) 23 | 24 | 7. Map the required fields in the Send an Email service. In the below example we have mapped the to address, subject and attached the file from the dropbox.![SendEmailMapping](https://github.com/maam1/webmethodsio-examples/blob/master/dropbox-sendemail/sendemailmapping.PNG) 25 | 26 | 8. This completes the workflow and connects to stop step. We can test this from the UI to review the results in action tab. ![testingui](https://github.com/maam1/webmethodsio-examples/blob/master/dropbox-sendemail/testingui.PNG) 27 | 28 | 9. Check the email to review the results of the workflow![Testing](https://github.com/maam1/webmethodsio-examples/blob/master/dropbox-sendemail/testing.PNG) 29 | -------------------------------------------------------------------------------- /dropbox-sendemail/sendemailmapping.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/dropbox-sendemail/sendemailmapping.PNG -------------------------------------------------------------------------------- /dropbox-sendemail/sourcefilemapping.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/dropbox-sendemail/sourcefilemapping.PNG -------------------------------------------------------------------------------- /dropbox-sendemail/testing.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/dropbox-sendemail/testing.PNG -------------------------------------------------------------------------------- /dropbox-sendemail/testingui.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/dropbox-sendemail/testingui.PNG -------------------------------------------------------------------------------- /github-slack/canvas.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/github-slack/canvas.PNG -------------------------------------------------------------------------------- /github-slack/connectWorkflow.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/github-slack/connectWorkflow.PNG -------------------------------------------------------------------------------- /github-slack/github-slack.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/github-slack/github-slack.zip -------------------------------------------------------------------------------- /github-slack/githubAuthorization.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/github-slack/githubAuthorization.PNG -------------------------------------------------------------------------------- /github-slack/readme.md: -------------------------------------------------------------------------------- 1 | In this project we will create a workflow that will be triggered on a GitHub Pull request and push the status and additional information to a specified Slack Channel. 2 | 3 | ## Setup 4 | 5 | 1. Start a new blank workflow 6 | 7 | canvas 8 | 9 | 2. Click the start button and find GitHub, authorize access to GitHub and select "Push" as the Trigger and select the Repository name you would like to use. Test the trigger and save. 10 | 11 | githubAuthorization 12 | 13 | 3. Search for Slack on the right hand pannel and drag and drop the slack action icon onto the canvas. Connect Github to Slack and from Slack to the end icon. 14 | 15 | connectWorkflow 16 | 17 | 4. Open the Slack action icon, configure the action to "Post Message to Channel". Authorize Slack and click the "Next" button. 18 | 19 | slackAuth 20 | 21 | 5. On the mapping screen, select the slack channel you want GitHub data to be sent to. In the "Text*" field click from the GitHub drop down to personalize the information you want posted into the specified Slack Channel. Click "Next" 22 | 23 | salckMessage 24 | 25 | 6. It is recomended to "Test" the action and you should see a sample message posted to your slack channel with sample data. Click "Done" 26 | 27 | slackTest 28 | 29 | 7. It is important to remeber to save your workflow as you edit the canvas. 30 | 31 | save 32 | 33 | 8. Now it is time to test our workflow. Go to github and execute a Pull request, check your specified Slack channel to see your tailored data. You can also see the execution of the workflow in webMethods with a blue markup. 34 | 35 | successPull 36 | -------------------------------------------------------------------------------- /github-slack/save.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/github-slack/save.PNG -------------------------------------------------------------------------------- /github-slack/slackAuth.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/github-slack/slackAuth.PNG -------------------------------------------------------------------------------- /github-slack/slackMessage.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/github-slack/slackMessage.PNG -------------------------------------------------------------------------------- /github-slack/slackTest.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/github-slack/slackTest.PNG -------------------------------------------------------------------------------- /github-slack/successPull.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/github-slack/successPull.PNG -------------------------------------------------------------------------------- /hello-email/creating-first-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/hello-email/creating-first-workflow.png -------------------------------------------------------------------------------- /hello-email/emailtosubject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/hello-email/emailtosubject.png -------------------------------------------------------------------------------- /hello-email/optionalemail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/hello-email/optionalemail.png -------------------------------------------------------------------------------- /hello-email/postman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/hello-email/postman.png -------------------------------------------------------------------------------- /hello-email/readme.md: -------------------------------------------------------------------------------- 1 | # Hello Email 2 | 3 | This examples guides you on a simple webmethods hello world that uses no external SaaS services, but does assume you have access to an email client. The guide shows how to setup an rest api endpoint in webmethodsio (webhook) and output an email when the api is accessed, which can be easily accomplished with a simple GET request from Curl, Postman or even your internet browser. 4 | 5 | ## Setup 6 | 7 | 1. Go ahead and get started creating a blank workflow. If you need a refresher on how to get to this point, this [guide](https://docs.webmethods.io/workflow-building-blocks/creating-first-workflow) can be a great introduction. Your starting point should resemble ![this](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/hello-email/creating-first-workflow.png) 8 | 9 | 2. The Webhook is created by modifying the start icon, which is is the entrypoint to the new flow. Please select the gear on top of the start icon to access settings. Once settings is selected in the start icon, a 'trigger' dialog will appear that allows Webhook to be selected.![trigger](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/hello-email/trigger.png) 10 | 11 | 3. Leave Webhook Authentication and Webhook Payload unchecked for now and hit next. Feel free to modify these if desired, they are easy to return to and iterate as well. At the very least, Authentication should be added immedately after 'Hello world' is working. Note the webhook url and save this for later. ![webhook](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/hello-email/webhook.jpg) 12 | 13 | (Optional) You can curl the webhook url at this point as a type of preliminary test. The url will state that it exists but will return an error message as the entire flow has not been completed and saved yet. Alternatively, you can put the url in your internet browser for quick feedback if you prefer. 14 | 15 | ```bash 16 | curl https://.int-aws-us.webmethods.io/runflow/run/xxxxxxx 17 | ``` 18 | which will return this if the url is correct. 19 | 20 | ``` 21 | {"error":"Parameters missing. Please provide all required parameters in actions before running workflow","code":126} 22 | ``` 23 | 24 | And if the url is incorrect, you will receive: 25 | 26 | ``` 27 | {"message":"Workflow not found.","code":103} 28 | ``` 29 | 30 | 4. Select done once presented with the final dialog. You should now see the start arrow dialog replaced with a webhook icon. ![webhookconfigured](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/hello-email/webhookconfigured.png) 31 | 32 | 5. Now lets have the flow do something once the webhook receives a request. Search in the search dialog for 'email' and find the 'Send an Email' notification. ![sendemailrightdialog](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/hello-email/sendemailrightdialog.png) 33 | 34 | 6. Select the 'Send an Email' and drag it between the start and end icons. Connect the arrows from start to the email icon and then to the end icon. This inserts the 'Send an Email' step in the flow. (optional) If you are obsessive compulsive like me, spend an extra five minutes making sure the arrow lines between start, email and end are completely straight. ![straightemail](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/hello-email/straightemail.png) 35 | 36 | 7. Next, select the gear icon at the top of the email icon. You should land in a dialog that enables you to name the email step. Change the name if you like (or leave it the same) and select Next. ![sendemail](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/hello-email/sendemail.png) 37 | 38 | 8. Initially, you can fill in the 'To', 'Subject' and 'Body' required fills with any text you like. ![emailtosubject](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/hello-email/emailtosubject.png) 39 | (Optional) Fill the subject and body with information from the webhook to create a more interesting demo email. ![optionalemail](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/hello-email/optionalemail.png) 40 | 41 | 9. Select next and then you will be provided with a dialog that allows an overview of the email payload and the capability to test the connect. Go ahead and hit test, wait a minute and see if the email arrives in your inbox. If everything is satisfactory go ahead and select 'Done'. ![testinitialemail](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/hello-email/testinitialemail.png) 42 | 43 | 10. Assuming the steps so far are satisfactory, go ahead and select 'Test' in the top right to trigger a test of the entire workflow. This should deliver a dummy email to you inbox. Once this happens go ahead and press 'Save' to save and enable the workflow. ![testemail](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/hello-email/testemail.png) 44 | 45 | 11. Test workflow 46 | 47 | ### Curl command example 48 | 49 | ``` 50 | curl https://.int-aws-us.webmethods.io/runflow/run/xxxxxxx 51 | ``` 52 | 53 | If all goes well, you will see something similiar 54 | 55 | ``` 56 | {"message":"Workflow enqueued successfully.","code":123,"bill_uid":"123123123123123","flow_uid":"1231231234","tenant_uid":"123123123"} 57 | ``` 58 | 59 | ### Postman example 60 | 61 | Just put your url into the 'Get' dialog box and hit send. If all goes well you will see a 'Workflow enqueud successfully' response and receive an email shortly after. 62 | 63 | ![postman](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/hello-email/postman.png) 64 | 65 | ### Internet browser example 66 | 67 | Copy and paste the Web Methods trigger url, for example (https://.int-aws-us.webmethods.io/runflow/run/xxxxxxx), into your favorite internet browser will also work if Curl or Postman are not readily accessible to you. 68 | -------------------------------------------------------------------------------- /hello-email/sendemail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/hello-email/sendemail.png -------------------------------------------------------------------------------- /hello-email/sendemailrightdialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/hello-email/sendemailrightdialog.png -------------------------------------------------------------------------------- /hello-email/straightemail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/hello-email/straightemail.png -------------------------------------------------------------------------------- /hello-email/testemail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/hello-email/testemail.png -------------------------------------------------------------------------------- /hello-email/testinitialemail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/hello-email/testinitialemail.png -------------------------------------------------------------------------------- /hello-email/trigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/hello-email/trigger.png -------------------------------------------------------------------------------- /hello-email/webhook.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/hello-email/webhook.jpg -------------------------------------------------------------------------------- /hello-email/webhookconfigured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/hello-email/webhookconfigured.png -------------------------------------------------------------------------------- /httprequest-sendemail/AddHTML.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/httprequest-sendemail/AddHTML.png -------------------------------------------------------------------------------- /httprequest-sendemail/ConnectHTTPRequest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/httprequest-sendemail/ConnectHTTPRequest.png -------------------------------------------------------------------------------- /httprequest-sendemail/FinalWorkflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/httprequest-sendemail/FinalWorkflow.png -------------------------------------------------------------------------------- /httprequest-sendemail/HTTPRequest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/httprequest-sendemail/HTTPRequest.png -------------------------------------------------------------------------------- /httprequest-sendemail/Nodejs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/httprequest-sendemail/Nodejs.png -------------------------------------------------------------------------------- /httprequest-sendemail/PollingTriggerClock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/httprequest-sendemail/PollingTriggerClock.png -------------------------------------------------------------------------------- /httprequest-sendemail/readme.md: -------------------------------------------------------------------------------- 1 | 2 | # Use GET HTTP Method to request data from a specified resource and send an email with the content 3 | 4 | This example shows how to send an email to respective audience with requested data from a specified resource. 5 | 6 | We use this example to remind our moderators once a week for unanswered topics in [TECHforums](https://tech.forums.softwareag.com/). In Discourse platform such functionality is missing and using webmethods.io for creating it turned out to be much easier than creating a Discourse plugin. 7 | 8 | ## Setup 9 | 10 | 1. Go ahead and get started creating a blank workflow. If you need a refresher on how to get to this point, this [guide](https://docs.webmethods.io/integration/workflow_building_blocks/creating_first_workflow/#gsc.tab=0) can be a great introduction. 11 | 12 | 2. If you want the email to be sent periodically, you can do this by using polling triggers. In this example we will use Clock trigger and set an email to be send every week. Click on the small setting icon on start step and choose Clock trigger. Use the edit option to choose day and time and click Done.
![image](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/httprequest-sendemail/PollingTriggerClock.png) 13 | 14 | 3. Add the HTTP Request service in the canvas by drag and drop feature. This automatically connects with the Clock trigger.
![image](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/httprequest-sendemail/ConnectHTTPRequest.png) 15 | 16 | 4. Click on the small settings icon on the HTTP Request service to select HTTP Method and add an URL.
![image](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/httprequest-sendemail/HTTPRequest.png) 17 | 18 | 5. To create custom HTML email template use Node.js service and add it in the canvas by drag and drop feature. Connect it to HTTP Request service.
![image](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/httprequest-sendemail/Nodejs.png) ![image](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/httprequest-sendemail/AddHTML.png) 19 | 20 | 6. We have a cool feature which is sending email where you can send the content to respective audience. Search for "send an email" and drag and drop the "Send an Email" service to canvas. 21 | 22 | 7. Map the required fields in the Send an Email service. In this example we have mapped the address, subject and body. 23 | 24 | 8. This completes the workflow and connects to stop step.
![image](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/httprequest-sendemail/FinalWorkflow.png) 25 | 26 | 9. Check the email to review the results of the workflow. 27 | -------------------------------------------------------------------------------- /mysql-multi-insert/MySQL-ChunkAndInsert.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/MySQL-ChunkAndInsert.zip -------------------------------------------------------------------------------- /mysql-multi-insert/README.md: -------------------------------------------------------------------------------- 1 | # Multiple Insert in MySQL 2 | 3 | This workflow example shows how data formatted as CSV String (which is Base64 encoded) will be inserted into a MySQL database. To achieve this, it will be first decoded, then converted into JSON, and finally inserted into the DB inside a loop. 4 | One important detail is that the rows will not be inserted one by one into the DB, but they will be inserted in groups. For this, the initial array will be chunked into smaller arrays, transformed (using a custom NodeJS connector) and finally inserted into the database using the OOTB MySQL connector. 5 | 6 | ## Import Recipe 7 | To import the provided example as recipe into your system, follow the steps: 8 | 9 | ![Import recipe](./resources/import_recipe_1.png) 10 | 11 | In the opening popup, select the provided "MySQL-ChunkAndInsert.zip" and click on "Open". After this, you should be able to see the recipe like: 12 | 13 | ![My recipes](./resources/import_recipe_2.png) 14 | 15 | ## Create a custom NodeJS connector 16 | One of the steps in the workflow is done using a custom NodeJS connector. To create it in your environment, open a workflow, expand the connectors palette and select the "Custom" connectors. After that, click on the "+" icon to create it. 17 | 18 | ![My recipes](./resources/create_custom_nodejs_connector_1.png) 19 | 20 | In the opening window, paste the content of the provided file "[Prepare Multiple Insert MySQL](./custom_nodejs/prepare-multiple-insert-mysql.js)". Here's an snippet of what it does. 21 | 22 | ```javascript 23 | var request = require("request"); 24 | 25 | module.exports = function () { 26 | this.id = "prepare-multi-insert-mysql"; 27 | ... 28 | this.input = { 29 | ... 30 | }; 31 | 32 | this.output = { 33 | ... 34 | }; 35 | 36 | this.execute = function (input, output) { 37 | if (input.inputArray && Array.isArray(input.inputArray) && input.inColumns) { 38 | const varst = input.inColumns.split(","); 39 | if (varst && varst.length > 0) { 40 | var r4m = input.inputArray.map(function (item, idx) { 41 | var row = "(" 42 | for (let i = 0; i < varst.length; i++) { 43 | const key = varst[i].trim(); 44 | row += "'" + item[key] + "',"; 45 | } 46 | // replace the ',' at the end for a ')' 47 | row = row.replace(/,$/, ")"); 48 | return row; 49 | }) 50 | output(null, { 51 | insertValues: r4m.toString(), 52 | insertKeys: "(" + varst.toString() + ")" 53 | }); 54 | } 55 | } 56 | } 57 | } 58 | 59 | ``` 60 | Once you have created it, you will be able to use it in other workflows as well. 61 | 62 | ## Create workflow from recipe 63 | 64 | After you have imported your recipe and created the custom NodeJS connector, you can create a new workflow based on the recipe. Once you have done it, you will need to configure a connection to a MySQL database and, additionally, the webhook payload details as below: 65 | 66 | ![My recipes](./resources/step-0-webhook-configuration.png) 67 | 68 | ## Workflow overview 69 | The workflow looks like: 70 | 71 | ![Workflow overview](./resources/workflow_overview.png) 72 | 73 | The different logger steps contain as well some transformations inside them. 74 | 75 | ### Decode Input Base64 76 | 77 | This step is only a container for some of the needed transformations. When you expand the _"Transform"_ node on the left side of the image, you will be able to see the list of transformations that have been created in this node and the previous ones. You can only edit the transformations created in the current node, which you will recognize by the "edit/delete" icons that appear when you hover with the mouse over the name of the transformation. 78 | 79 | ![Decode Input](./resources/step-1-decode-input.png) 80 | 81 | Once you click on the edit icon, you can see and update its details. 82 | 83 | ![Decode Input Details](./resources/step-1-decode-input-details.png) 84 | 85 | ### CSV to JSON 86 | 87 | Once the CSV input string has been decoded, it can be transformed into JSON for further processing. 88 | 89 | ![CSV to JSON](./resources/step-2-csv-to-json.png) 90 | 91 | ### Chunk JSON 92 | 93 | The transformation to chunk the original JSON array into smaller ones is done inside a Log element. Same as before, once you expand the _"Transform"_ node, you can go into the details of the _"Chunk to Process"_ transformation. 94 | 95 | ![Chunk transform overview](./resources/step-3-chunk-json.png) 96 | 97 | The details of the chunk transformation can be seen below. 98 | 99 | ![Chunk transform details](./resources/step-3-chunk-json-details.png) 100 | 101 | ### Loop 102 | 103 | Now, instead of looping and inserting each single record from the input array, we'll loop through the created chunks. 104 | 105 | ![Loop overview](./resources/step-4-loop.png) 106 | 107 | Inside of the loop there are only two steps. 108 | 109 | ![Loop details](./resources/step-4-loop-details.png) 110 | 111 | #### Prepare input for insert statement 112 | 113 | The first step transforms the incoming JSON into the format needed by MySQL. The insert statement will look something like: 114 | 115 | ``` 116 | -- Adding multiple records with single INSERT command 117 | INSERT INTO TABLE 118 | (field1_name, field2_name, ...) 119 | VALUES 120 | (value11, value12, ...), -- row 1 121 | (value21, value22, ...), -- row 2 122 | ... 123 | (valueN1, valueN2, ...); -- row N 124 | ``` 125 | 126 | This step prepares both the comma-separated list of all its fields inside parentheses, like: 127 | `(id,created,ts,creator,clientnr)` 128 | 129 | as well as the list of comma delimited values to be inserted in parentheses, like: 130 | 131 | `('10000','2019-10-31','46206.3981','Mueller Bradford','5dbaf4f7ac5e23755efc5c85'),('10001','2019-10-31','95010.2385','Osborne Dillard','5dbaf4f7bcc42cfff90d6138')` 132 | 133 | ![Prepare insert](./resources/step-4-loop-prepare-insert.png) 134 | 135 | #### MySQL Insert 136 | 137 | What we only need to do now is mapping the output from the previous step into the insert statement (as specified before). 138 | 139 | ![Map insert statement](./resources/step-4-loop-mysql-insert.png) 140 | 141 | I hope that you find this example helpful and that it makes your experience with [webMethods.io Integration](https://webmethods.io) more comfortable. 142 | 143 | *** 144 | 145 | These tools are provided as-is and without warranty or support. They do not constitute part of the Software AG product suite. Users are free to use, fork and modify them, subject to the license agreement. While Software AG welcomes contributions, we cannot guarantee to include every contribution in the master project. 146 | 147 | Contact us at [TECHcommunity](mailto:technologycommunity@softwareag.com?subject=Github/SoftwareAG) if you have any questions. -------------------------------------------------------------------------------- /mysql-multi-insert/custom_nodejs/prepare-multiple-insert-mysql.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Software AG, Darmstadt, Germany and/or its licensors 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | var request = require("request"); 20 | 21 | module.exports = function () { 22 | this.id = "prepare-multi-insert-mysql"; 23 | this.label = "Prepare MySQL Multiple Insert"; 24 | this.help = "Converts a json array into a string that can be used in a MySQL insert (like, for example: ('1','2018-01-01','test string'),('2','2018-02-02','test string2 ')). The column names provided as input must match the property names in the object array."; 25 | this.input = { 26 | title: "MySQL Prep 4 Insert Input", 27 | type: "object", 28 | properties: { 29 | inColumns: { 30 | title: "Columns to prepare", 31 | type: "string", 32 | description: "CSV list of the columns that need to be prepared. Only these columns will be extracted from the array of objects passed as input. Currently, property name and column name must match.", 33 | minLength: 1 34 | }, 35 | inputArray: { 36 | title: "Object array to convert", 37 | type: "any", 38 | description: "Array of objects that need to be converted", 39 | minLength: 1 40 | }, 41 | } 42 | }; 43 | 44 | this.output = { 45 | title: "Output", 46 | type: "object", 47 | properties: { 48 | insertKeys: { 49 | title: "Columns", 50 | type: "string" 51 | }, 52 | insertValues: { 53 | title: "Values", 54 | type: "string" 55 | } 56 | } 57 | }; 58 | 59 | this.execute = function (input, output) { 60 | if (input.inputArray && Array.isArray(input.inputArray) && input.inColumns) { 61 | const varst = input.inColumns.split(","); 62 | if (varst && varst.length > 0) { 63 | var r4m = input.inputArray.map(function (item, idx) { 64 | var row = "(" 65 | for (let i = 0; i < varst.length; i++) { 66 | const key = varst[i].trim(); 67 | row += "'" + item[key] + "',"; 68 | } 69 | // replace the ',' at the end for a ')' 70 | row = row.replace(/,$/, ")"); 71 | return row; 72 | }) 73 | output(null, { 74 | insertValues: r4m.toString(), 75 | insertKeys: "(" + varst.toString() + ")" 76 | }); 77 | } 78 | } 79 | } 80 | 81 | } -------------------------------------------------------------------------------- /mysql-multi-insert/resources/create_custom_nodejs_connector_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/create_custom_nodejs_connector_1.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/create_custom_nodejs_connector_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/create_custom_nodejs_connector_2.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/import_recipe_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/import_recipe_1.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/import_recipe_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/import_recipe_2.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/step-0-webhook-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/step-0-webhook-configuration.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/step-1-decode-input-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/step-1-decode-input-details.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/step-1-decode-input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/step-1-decode-input.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/step-2-csv-to-json.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/step-2-csv-to-json.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/step-3-chunk-json-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/step-3-chunk-json-details.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/step-3-chunk-json.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/step-3-chunk-json.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/step-4-loop-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/step-4-loop-details.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/step-4-loop-mysql-insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/step-4-loop-mysql-insert.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/step-4-loop-prepare-insert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/step-4-loop-prepare-insert.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/step-4-loop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/step-4-loop.png -------------------------------------------------------------------------------- /mysql-multi-insert/resources/workflow_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/mysql-multi-insert/resources/workflow_overview.png -------------------------------------------------------------------------------- /netatmo-security-connector/.gitignore: -------------------------------------------------------------------------------- 1 | NetatmoSecurity/node_modules/ 2 | -------------------------------------------------------------------------------- /netatmo-security-connector/NetatmoSecurity/.flowapprc: -------------------------------------------------------------------------------- 1 | {"service_name":"NetatmoSecurity_fl91ccd279ad5dcd19d902bc"} -------------------------------------------------------------------------------- /netatmo-security-connector/NetatmoSecurity/action/v1/gethomedata.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | name: "gethomedata", 4 | 5 | title: "Gethomedata", 6 | 7 | description: "", 8 | version: "v1", 9 | 10 | input:{ 11 | title: "Gethomedata", 12 | type: "object", 13 | properties: { 14 | home_id :{ 15 | title: "home_id", 16 | displayTitle: "Home ID", 17 | type: "string" 18 | } 19 | } 20 | }, 21 | 22 | output: { 23 | title: "output", 24 | type: "object", 25 | displayTitle: "Output", 26 | properties: { 27 | 28 | } 29 | }, 30 | 31 | mock_input:{}, 32 | 33 | execute: function(input, output){ 34 | // to access auth info use input.auth , eg: input.auth.username 35 | // and to return output use output callback like this output(null, { 'notice' : 'successful'}) 36 | // your code here 37 | // output(null, { data : "OK"}); 38 | var request = require("request"); 39 | 40 | var options = { 41 | "method": "get", 42 | "url": "https://api.netatmo.com/api/gethomedata", 43 | "headers": { 44 | "Accept": "application/json", 45 | "Authorization": "Bearer " + input.auth.access_token 46 | } 47 | } 48 | request(options, function(err, response, body) { 49 | if (err) { 50 | return output(err); 51 | } 52 | try { 53 | if (body && typeof(body) === "string") { 54 | body = JSON.parse(body); 55 | } 56 | } catch (e) { 57 | return output(body); 58 | }; 59 | if (response.statusCode === 401) { 60 | return output("Invalid access token"); 61 | } 62 | if (response.statusCode !== 200) { 63 | return output("Error Details"); 64 | } 65 | if (response.statusCode === 200) { 66 | return output(null, body); 67 | } 68 | output(body); 69 | 70 | }) 71 | 72 | 73 | 74 | } 75 | 76 | } 77 | -------------------------------------------------------------------------------- /netatmo-security-connector/NetatmoSecurity/action/v1/gethomestatus.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | name: "gethomestatus", 4 | 5 | title: "Gethomestatus", 6 | 7 | description: "", 8 | version: "v1", 9 | 10 | input:{ 11 | title: "Gethomestatus", 12 | type: "object", 13 | properties: { 14 | home_id :{ 15 | title: "home_id", 16 | displayTitle: "Home ID", 17 | type: "string" 18 | } 19 | } 20 | }, 21 | 22 | output: { 23 | title: "output", 24 | type: "object", 25 | displayTitle: "Output", 26 | properties: { 27 | 28 | } 29 | }, 30 | 31 | mock_input:{}, 32 | 33 | execute: function(input, output){ 34 | // to access auth info use input.auth , eg: input.auth.username 35 | // and to return output use output callback like this output(null, { 'notice' : 'successful'}) 36 | // your code here 37 | // output(null, { data : "OK"}); 38 | 39 | 40 | var request = require("request"); 41 | 42 | var options = { 43 | "method": "get", 44 | "url": "https://api.netatmo.com/api/homestatus?home_id=" + input.home_id, 45 | "headers": { 46 | "Accept": "application/json", 47 | "Authorization": "Bearer " + input.auth.access_token 48 | } 49 | } 50 | request(options, function(err, response, body) { 51 | if (err) { 52 | return output(err); 53 | } 54 | try { 55 | if (body && typeof(body) === "string") { 56 | body = JSON.parse(body); 57 | } 58 | } catch (e) { 59 | return output(body); 60 | }; 61 | if (response.statusCode === 401) { 62 | return output("Invalid access token"); 63 | } 64 | if (response.statusCode !== 200) { 65 | return output(body); 66 | } 67 | if (response.statusCode === 200) { 68 | return output(null, body); 69 | } 70 | output(body); 71 | 72 | }) 73 | 74 | 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /netatmo-security-connector/NetatmoSecurity/action/v1/getnextevents.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | name: "getnextevents", 4 | 5 | title: "Getnextevents", 6 | 7 | description: "", 8 | version: "v1", 9 | 10 | input:{ 11 | title: "Getnextevents", 12 | type: "object", 13 | properties: { 14 | home_id :{ 15 | title: "home_id", 16 | displayTitle: "Home ID", 17 | type: "string" 18 | }, 19 | event_id :{ 20 | title: "event_id", 21 | displayTitle: "Before this event", 22 | type: "string" 23 | }, 24 | size: { 25 | title: "size", 26 | displayTitle: "Number of events (default 30)", 27 | type: "string" 28 | } 29 | } 30 | }, 31 | 32 | output: { 33 | title: "output", 34 | type: "object", 35 | displayTitle: "Output", 36 | properties: { 37 | } 38 | }, 39 | 40 | mock_input:{}, 41 | 42 | execute: function(input, output){ 43 | // to access auth info use input.auth , eg: input.auth.username 44 | // and to return output use output callback like this output(null, { 'notice' : 'successful'}) 45 | // your code here 46 | 47 | var request = require("request"); 48 | 49 | var options = { 50 | "method": "get", 51 | "url": "https://api.netatmo.com/api/getnextevents?home_id=" + input.home_id + "&event_id=" + input.event_id + "&size=" + input.size, 52 | "headers": { 53 | "Accept": "application/json", 54 | "Authorization": "Bearer " + input.auth.access_token 55 | } 56 | } 57 | request(options, function(err, response, body) { 58 | if (err) { 59 | return output(err); 60 | } 61 | try { 62 | if (body && typeof(body) === "string") { 63 | body = JSON.parse(body); 64 | } 65 | } catch (e) { 66 | return output(body); 67 | }; 68 | if (response.statusCode === 401) { 69 | return output("Invalid access token"); 70 | } 71 | if (response.statusCode !== 200) { 72 | return output(body); 73 | } 74 | if (response.statusCode === 200) { 75 | return output(null, body); 76 | } 77 | output(body); 78 | 79 | }) 80 | 81 | } 82 | 83 | } 84 | -------------------------------------------------------------------------------- /netatmo-security-connector/NetatmoSecurity/auth.conf: -------------------------------------------------------------------------------- 1 | { 2 | "username": "", 3 | "password": "" 4 | } 5 | -------------------------------------------------------------------------------- /netatmo-security-connector/NetatmoSecurity/authentication.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | label: "Connect to NetatmoSecurity", 3 | mock_input: { 4 | access_token: "" 5 | }, 6 | oauth: "netatmo_camera_4a4b969c20", 7 | validate: function (input, output) { 8 | // auth credentials will be available in input.auth.access_token 9 | // callback pattern 10 | // output(error, success) 11 | output(null, true) 12 | } 13 | } -------------------------------------------------------------------------------- /netatmo-security-connector/NetatmoSecurity/icon/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/netatmo-security-connector/NetatmoSecurity/icon/icon.png -------------------------------------------------------------------------------- /netatmo-security-connector/NetatmoSecurity/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NetatmoSecurity", 3 | "description": "Netatmo Security Camera connector", 4 | "triggers": [], 5 | "actions": [ 6 | "/v1/gethomedata", 7 | "/v1/gethomestatus", 8 | "/v1/getnextevents" 9 | ], 10 | "version": 1, 11 | "auth_type": "oauth", 12 | "docs_link": "http://docs.example.com", 13 | "oauth_provider": "netatmo_camera_4a4b969c20", 14 | "oauthStatus": "deployed", 15 | "appId": "44e90f51-9b6c-4651-a22a-bf756bf0adce", 16 | "guid": "8be1585c-a8c5-4d57-9b1d-fc3780d6cc69" 17 | } -------------------------------------------------------------------------------- /netatmo-security-connector/NetatmoSecurity/oauth.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "oauth2", 3 | "title": "netatmo_camera", 4 | "clientId": "", 5 | "clientSecret": "", 6 | "authURL": "https://api.netatmo.com/oauth2/authorize", 7 | "tokenURL": "https://api.netatmo.com/oauth2/token", 8 | "preAuthProcessing": { 9 | }, 10 | "authQueryParams": { 11 | "state": "ab82aff8dd2caf097e6", 12 | "scope": "read_camera" 13 | }, 14 | 15 | "preTokenProcessing": { 16 | }, 17 | 18 | "tokenParams": { 19 | "method": "", 20 | "headers": {}, 21 | "data": { 22 | "client_id": "{client_id}", 23 | "client_secret": "{client_secret}", 24 | "redirect_uri": "{redirect_uri}", 25 | "grant_type": "authorization_code" 26 | } 27 | }, 28 | "preRefreshProcessing": { 29 | }, 30 | "refreshParams": { 31 | "client_id": "{client_id}", 32 | "client_secret": "{client_secret}", 33 | "redirect_uri": "{redirect_uri}", 34 | "grant_type": "refresh_token" 35 | }, 36 | "requiredParams": [ 37 | ], 38 | "refreshURL": "{tokenURL}", 39 | "scope": { 40 | "Read Camera Scope": "read_camera" 41 | }, 42 | "validate": { 43 | "url": "ANY API URL TO VALIDATE TOKEN OF THIRD PARTY SERVICE", 44 | "headers": { 45 | "Authorization": "Bearer {access_token}" 46 | }, 47 | "query": { 48 | } 49 | }, 50 | "redirectURL": "https://auth-int.webmethods.io/auth/oauth/netatmo_camera_4a4b969c20/fl91ccd279ad5dcd19d902bc/return" 51 | } -------------------------------------------------------------------------------- /netatmo-security-connector/NetatmoSecurity/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "netatmosecurity", 3 | "version": "1.0.0", 4 | "description": "Netatmo Security Camera connector", 5 | "dependencies": { 6 | "request": "2.68.0", 7 | "@webmethodsio/cli-sdk": "*" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /netatmo-security-connector/README.md: -------------------------------------------------------------------------------- 1 | # Custom connector for Netatmo Security Camera 2 | 3 | This is a simple home automation example based on a Netatmo security camera (custom connector) as well as an integration to Philips Hue Lighting system. 4 | 5 | A simple workflow is triggered by the security camera detecting a person, and if the person is recognized, the Hue lights are controlled based on the individual's profile. 6 | 7 | The custom connector is based on the Netatmo camera (https://www.netatmo.com) and controlled by an app available on https://dev.netatmo.com. 8 | 9 | ## Prerequisites 10 | 11 | To set up this example you need the following hardware devices: 12 | - Netatmo Security Camera: https://www.netatmo.com/en-us/security/cam-indoor 13 | - PHilips Hue Bridge and attached lighting: https://www2.meethue.com/en-us/starter-kits 14 | 15 | The corresponding user accounts need to be created in the respective web applications: 16 | - Netatmo : [https://dev.netatmo.com] (dev.netatmo.com) 17 | - Philips Hue: [https://account.meethue.com/account] (www.meethue.com) 18 | 19 | Additionally, you need valid credentials for webMethods.io Integration - [https://www.softwareag.cloud/site/product/webmethods-io-integration.html#/](https://www.softwareag.cloud/site/product/webmethods-io-integration.html#/). 20 | 21 | 22 | ## Create a custom connector for Netatmo security 23 | 24 | Follow the instructions on [https://docs.webmethods.io/integration/developer_guide/connector_builder/#gsc.tab=0](https://docs.webmethods.io/integration/developer_guide/connector_builder/#gsc.tab=0) to set up the connector framework by first installing the correct node.js version and then testing it. 25 | 26 | To deploy the custom connector example in the directory you need to first create an app and customize the oauth.json.template file with the correct credentials. 27 | 28 | ### Create a new workflow with a Webhook triggered 29 | 30 | We need to first create a new workflow, triggered by a Webhook, so that we can tell Netatmo where to send event notifications. 31 | This workflow will get invoked by the Netatmo security camera on all relevant events, e.g. movement detection, person detection events and others. 32 | 33 | ![P1](./images/Image001.png) 34 | 35 | Copy the Webhook link created into the clipboard using the symbol at the right of the URL. 36 | 37 | ![P2](./images/Image002.png) 38 | 39 | To test the Webhook trigger, you can enter the following test data into the body of the next page: 40 | 41 | { 42 | "user_id": "5c810xxxxxxx45f4", 43 | "snapshot_id": "5d19bxxxxxx6380342", 44 | "snapshot_key": "f0134210ff83fxxxxxxxf770090a423d9a5", 45 | "snapshot_url": "https://netatmocameraimage.blob.core.windows.net/production/5d1xxxa5", 46 | "event_type": "movement", 47 | "camera_id": "70:exxxxxdd:a7", 48 | "device_id": "70:exxxxdd:a7", 49 | "home_id": "5c5d79xxxx08cd594", 50 | "home_name": "Boulogne Billan.", 51 | "event_id": "5d19baae369359e896380341", 52 | "message": "Boulogne Billan: Movement detected by Indoor Camera", 53 | "push_type": "NACamera-movement" 54 | } 55 | 56 | ![P3](./images/Image003.png) 57 | 58 | Connect the Trigger step to the end step and save the workflow for the moment. 59 | 60 | ### Create a Netatmo app 61 | 62 | Log in to the Netatmo developer homepage at [https://dev.netatmo.com](https://dev.netatmo.com) and navigate to the myApps area. 63 | Create a new app by providing name, description and email-id as required. 64 | 65 | ![P4](./images/Image004.png) 66 | 67 | Scrolling down to the section "App Technical Parameters", fill in the webhook URL that you have copied from your workflow trigger. 68 | 69 | Take a note of the client ID and client secret keys listed here. You will need these to configure the oauth file before deployment of the custom connector. 70 | Leave the redirect URL empty for now, we will come back to fill it out later. 71 | 72 | ### Customize the oauth Authentication 73 | 74 | Edit the file oauth.json in the custom connector directory ./NetatmoSecurity. 75 | 76 | Fill in the client ID and secret that you have copied from the Netatmo app area replacing the text in the fields marked with <> brackets. 77 | Save the oauth.json file and test the consistency of the custom connector by running: 78 | 79 | **_wmio test_** 80 | 81 | from the NetatmoSecurity directory. 82 | Deploy the oauth custom authentication module by running: 83 | 84 | **_wmio oauth deploy_** 85 | 86 | ![P5](./images/Image005.png) 87 | 88 | ### Deploy the custom connector 89 | 90 | Finish by deploying the custom connector to your webMethods.io instance. 91 | 92 | **_wmio deploy_** 93 | 94 | ![P6](./images/Image006.png) 95 | 96 | ### Finish the Netatmo app configuration 97 | 98 | As a last step, we need to configure the callback URL in the netatmo app for the oauth credential process. 99 | For this, you need to copy the URL at the end of the oauth.json file ("redirectURL") into the appropriate Netatmo app field ("redirect URI") that we had left blank before. 100 | Don't forget to save the modified Netatmo app. 101 | 102 | 103 | ## Configure the home automation workflow 104 | 105 | ### Netatmo custom connector steps 106 | 107 | You can now use the custom connector to view security camera information, for example by invoking the Gethomedata function to retrieve camera and other IDs: 108 | 109 | The first time you use the custom connector (called NetatmoSecurity) you will need to configure the credentials as usual by logging into the Netatmo callback link and providing the credentials: 110 | 111 | ![P7](./images/Image007.png) 112 | 113 | After that, you can use the connector as usual to retrieve data from the security camera: 114 | 115 | ![P8](./images/Image008.png) 116 | 117 | ### A small example worflow to demonstrate home automation. 118 | 119 | The following small example can be used to also demonstrate Webhooks triggered by the Security camera and subsequent control of lighting elements, for example to automate lighting based on the person detected. 120 | 121 | ![P9](./images/Image009.png) 122 | 123 | 124 | ## Summary 125 | 126 | A custom connector to integrate a Security camera (from Netatmo) has been used to demonstrate custom connector development for home automation purposes. 127 | A possible application to control home lighting based on events (e.g. motion or person detection) would be a possible application. 128 | Other possible applications would be triggering of alarms or notifications based on motion events. 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | -------------------------------------------------------------------------------- /netatmo-security-connector/images/Image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/netatmo-security-connector/images/Image001.png -------------------------------------------------------------------------------- /netatmo-security-connector/images/Image002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/netatmo-security-connector/images/Image002.png -------------------------------------------------------------------------------- /netatmo-security-connector/images/Image003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/netatmo-security-connector/images/Image003.png -------------------------------------------------------------------------------- /netatmo-security-connector/images/Image004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/netatmo-security-connector/images/Image004.png -------------------------------------------------------------------------------- /netatmo-security-connector/images/Image005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/netatmo-security-connector/images/Image005.png -------------------------------------------------------------------------------- /netatmo-security-connector/images/Image006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/netatmo-security-connector/images/Image006.png -------------------------------------------------------------------------------- /netatmo-security-connector/images/Image007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/netatmo-security-connector/images/Image007.png -------------------------------------------------------------------------------- /netatmo-security-connector/images/Image008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/netatmo-security-connector/images/Image008.png -------------------------------------------------------------------------------- /netatmo-security-connector/images/Image009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/netatmo-security-connector/images/Image009.png -------------------------------------------------------------------------------- /nodejs-blocks/Readme.md: -------------------------------------------------------------------------------- 1 | webMethods has a rich set of existing functionality. 2 | 3 | For example, if you would like to use oauth of particular service which already exist but the required actions doesnt exist then you can use the oauth with following schema 4 | 5 | ``` 6 | "accessToken": { 7 | "title": "Authorize Dropbox", 8 | "type": "string", 9 | "oauth": "dropboxv2", 10 | "minLength": 1, 11 | "propertyOrder": 1 12 | }, 13 | ``` 14 | 15 | You have to provide the oauth name in the oauth Key. you can contact webmethod team to get the oauth list(names). 16 | 17 | 18 | Similarly you can also use lookup just you have to get the service name and ID of the lookup. Sample schema for lookup 19 | 20 | ``` 21 | "path": { 22 | "type": "string", 23 | "title": " Folder Path", 24 | "description": "Select the path to the folder you wish to retrieve details of", 25 | "minLength": 1, 26 | "propertyOrder": 2, 27 | "lookup": { 28 | "service": "dropbox", 29 | "auth": "oauth", 30 | "id": "d6", 31 | "enabled": true, 32 | "searchable": false, 33 | "dependencies": [ 34 | "accessToken" 35 | ] 36 | } 37 | }, 38 | ``` -------------------------------------------------------------------------------- /nodejs-blocks/index.js: -------------------------------------------------------------------------------- 1 | var request = require('request'); 2 | 3 | module.exports = function(){ 4 | this.id = "dropbox-folders-get"; 5 | 6 | this.label = "Get Folders Details"; 7 | 8 | this.input ={ 9 | "title": "Get Folder Details", 10 | "type": "object", 11 | "properties": { 12 | "accessToken": { 13 | "title": "Authorize Dropbox", 14 | "type": "string", 15 | "oauth": "dropboxv2", 16 | "minLength": 1, 17 | "propertyOrder": 1 18 | }, 19 | "path": { 20 | "type": "string", 21 | "title": " Folder Path", 22 | "description": "Select the path to the folder you wish to retrieve details of", 23 | "minLength": 1, 24 | "propertyOrder": 2, 25 | "lookup": { 26 | "service": "dropbox", 27 | "auth": "oauth", 28 | "id": "d6", 29 | "enabled": true, 30 | "searchable": false, 31 | "dependencies": [ 32 | "accessToken" 33 | ] 34 | } 35 | }, 36 | "recursive": { 37 | "type": "string", 38 | "title": "Is Recursive", 39 | "description": "If set to true, the result will include contents of all the subfolders of a specific folder that you wish to retrieve", 40 | "propertyOrder": 3, 41 | "enum": [ 42 | "True", 43 | "False" 44 | ], 45 | "default": "False" 46 | }, 47 | "include_media_info": { 48 | "type": "string", 49 | "title": "Include File Metadata", 50 | "description": "Specify true if you wish to include video and photo in your result, else specify false", 51 | "propertyOrder": 4, 52 | "enum": [ 53 | "True", 54 | "False" 55 | ], 56 | "default": "False" 57 | }, 58 | "include_deleted": { 59 | "type": "string", 60 | "title": "Include Deleted", 61 | "description": "Specify true if you wish to include deleted files in the result, else specify false", 62 | "propertyOrder": 5, 63 | "enum": [ 64 | "True", 65 | "False" 66 | ], 67 | "default": "False" 68 | }, 69 | "include_has_explicit_shared_members": { 70 | "type": "string", 71 | "title": "Include Explicit Shared Members", 72 | "description": "Specify true if you wish to include explicit members in your result, else specify false", 73 | "propertyOrder": 6, 74 | "enum": [ 75 | "True", 76 | "False" 77 | ], 78 | "default": "False" 79 | } 80 | } 81 | }; 82 | 83 | this.help = "This activity get folder's files from dropbox account storage"; 84 | 85 | this.output ={ 86 | "title": "output", 87 | "type": "object", 88 | "properties": { 89 | "cursor": { 90 | "type": "string", 91 | "title": "cursor" 92 | }, 93 | "entries": { 94 | "type": "array", 95 | "title": "entries", 96 | "displayTitle": "Files in Folder", 97 | "items": { 98 | "title": "items", 99 | "type": "object", 100 | "properties": { 101 | "id": { 102 | "type": "string", 103 | "title": "id", 104 | "displayTitle": "Folder ID" 105 | }, 106 | "name": { 107 | "type": "string", 108 | "title": "name", 109 | "displayTitle": "Folder Name" 110 | }, 111 | "path_display": { 112 | "type": "string", 113 | "title": "path_display", 114 | "displayTitle": "Folder Path" 115 | }, 116 | "client_modified": { 117 | "type": "string", 118 | "title": "client_modified", 119 | "displayTitle": "Modified Date on Client" 120 | }, 121 | "server_modified": { 122 | "type": "string", 123 | "title": "server_modified", 124 | "displayTitle": "Modified date on Server" 125 | }, 126 | "path_lower": { 127 | "type": "string", 128 | "title": "path_lower" 129 | }, 130 | "size": { 131 | "type": "number", 132 | "title": "size", 133 | "displayTitle": "Folder Size" 134 | } 135 | } 136 | } 137 | }, 138 | "has_more": { 139 | "type": "string", 140 | "title": "has_more", 141 | "displayTitle": "Has More Entries" 142 | } 143 | } 144 | }; 145 | 146 | this.execute = function(input,output){ 147 | var obj ={"True": true, "False": false}; 148 | 149 | if(input.path === "/"){ 150 | input.path = ""; 151 | } 152 | 153 | var jsonData = { 154 | "path" : input.path, 155 | "recursive" : obj[input.recursive], 156 | "include_media_info" : obj[input.include_media_info], 157 | "include_deleted" : obj[input.include_deleted], 158 | "include_has_explicit_shared_members" : obj[input.include_has_explicit_shared_members] 159 | }; 160 | 161 | 162 | request({ 163 | method :'POST', 164 | headers :{ 165 | "Content-Type" : "application/json", 166 | "Accept" : "application/json", 167 | "authorization": "Bearer "+ input.accessToken 168 | }, 169 | url : 'https://api.dropboxapi.com/2/files/list_folder', 170 | json: jsonData 171 | }, 172 | function(err,res,body){ 173 | if(err){ 174 | throw(err) 175 | } 176 | if(res && res.statusCode && res.statusCode >= 200 && res.statusCode < 400) { 177 | if(typeof(body) == 'string'){ 178 | body = JSON.parse(body); 179 | } 180 | 181 | return output(null, body); 182 | } 183 | return output(body) 184 | }) 185 | }; 186 | }; -------------------------------------------------------------------------------- /pager-slack/pager1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/pager-slack/pager1.png -------------------------------------------------------------------------------- /pager-slack/pager2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/pager-slack/pager2.png -------------------------------------------------------------------------------- /pager-slack/pager3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/pager-slack/pager3.png -------------------------------------------------------------------------------- /pager-slack/readme.md: -------------------------------------------------------------------------------- 1 | # Pager Duty -> Slack 2 | 3 | This examples guides you to trigger Slack comments when Pagerduty issues are triggered. This is straightforward and you should be up and running in a good case about 15 minutes and in a bad case an hour or two to troubleshoot some credential issues. 4 | 5 | ## Setup 6 | 7 | 1. Starting from a blank workflow, select the gear at the top of the start icon and choose pagerduty. ![this](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/pager-slack/pager1.png) 8 | 9 | 2. Select the pencil icon and setup the connection to Pagerduty ![this](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/pager-slack/pager2.png) 10 | 11 | 3. Select the plus sign and enable the connection using the oauth dialog. Credentials to a live Pagerduty account will be required. ![this](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/pager-slack/pager3.png) 12 | 13 | 4. Once the Pagerduty trigger is completed (feel free to test it if you wish to feel certain before moving on), select Slack on the right hand dialog. ![this](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/pager-slack/slack1.png) 14 | 15 | 5. Drag Slack to the canvas and connect it from Pagerduty and to the end icon. ![this](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/pager-slack/slack2.png) 16 | 17 | 6. Now select the gear icon over Slack and configure which channel to post onto. This will require setting up or using an existing Slack connection. Again, this can be completed with OAuth. ![this](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/pager-slack/slack3.png) 18 | 19 | 7. After Slack is authorized, select next. Now you can configure what channel to place the message in and how that message is structured. Rich customization is offered at this step, but for now select a public channel and place some test text to get started. Once the connection is working we can circle back and improve the message to a useful description of the incident, etc. ![this](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/pager-slack/slack4.png) 20 | 21 | 8. When you choose a channel, you will see it confirmed in the Webmethods.io dialog. ![this](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/pager-slack/slack5.png) 22 | 23 | 9. Once the message is configured and you select next, you will be given the opportunity to review the message and potentially post it to the channel in a test configuration. ![this](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/pager-slack/slack6.png) 24 | 25 | 10. Finally, save the flow and test it. You can manually create incidents in Pagerduty and then if all goes well see the information regarding the incident posted in Slack. ![this](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/pager-slack/slack7.png) -------------------------------------------------------------------------------- /pager-slack/slack1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/pager-slack/slack1.png -------------------------------------------------------------------------------- /pager-slack/slack2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/pager-slack/slack2.png -------------------------------------------------------------------------------- /pager-slack/slack3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/pager-slack/slack3.png -------------------------------------------------------------------------------- /pager-slack/slack4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/pager-slack/slack4.png -------------------------------------------------------------------------------- /pager-slack/slack5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/pager-slack/slack5.png -------------------------------------------------------------------------------- /pager-slack/slack6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/pager-slack/slack6.png -------------------------------------------------------------------------------- /pager-slack/slack7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/pager-slack/slack7.png -------------------------------------------------------------------------------- /salesforceleads-slack/AddSlackService.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/AddSlackService.png -------------------------------------------------------------------------------- /salesforceleads-slack/AddingLogger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/AddingLogger.png -------------------------------------------------------------------------------- /salesforceleads-slack/CompleteWorkflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/CompleteWorkflow.png -------------------------------------------------------------------------------- /salesforceleads-slack/Creating_First_Workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/Creating_First_Workflow.png -------------------------------------------------------------------------------- /salesforceleads-slack/LoggingMapper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/LoggingMapper.png -------------------------------------------------------------------------------- /salesforceleads-slack/README.md: -------------------------------------------------------------------------------- 1 | ### **Broadcast the Salesforce Lead info in Slack Channel.** 2 | 3 | This example shows how to integrate Salesforce and Slack in webmethods.io. As soon as the Leads created in Salesforce an message is broadcast ed in slack about the lead information. 4 | 5 | ### **Prerequisite** 6 | You should have access to the salesforce and slack SaaS application. 7 | 8 | ### **Setup** 9 | 10 | 1. Go ahead and get started creating a blank workflow. If you need a refresher on how to get to this point, this guide can be a great introduction. Your starting point should resemble ![this](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/salesforceleads-slack/Creating_First_Workflow.png) 11 | 12 | 2. The trigger is being added by modifying the start button, which is the entry point to the new workflow. Select the gear on top of the start icon to access settings. Once settings is selected in the start icon, a 'trigger' dialog will appear that allows Salesforce trigger to be selected. ![trigger](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/salesforceleads-slack/SalesforcePollingTrigger.png) 13 | 14 | 3. Now login to Salesforce on the same browser so that the webmethods.io automatically creates the connection with salesforce. ![SalesforceLogin](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/salesforceleads-slack/SalesforceLogin.png) 15 | 16 | 4. Then try to create the new connection on the Salesforce new trigger which we added. Automatically the login details are picked up by salesforce and a connection is established to salesforce. If required you can edit the connection name created![PollingTrigger](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/salesforceleads-slack/SalesforcePollingTrigger.png) 17 | 18 | 5. Select done once presented with the final dialog. You should now see the start arrow dialog replaced with a salesforce new lead polling trigger. 19 | 20 | 6. Now the flow is ready to process, once the salesforce trigger receives the request. In the search dialog lookup "Slack" service and select "Slack" service, drag and drop it into the flow canvas.![SlackService](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/salesforceleads-slack/AddSlackService.png) 21 | 22 | Once you drag and drop any service, automatically it connects the salesforce trigger to slack service. 23 | 24 | 7. Mouse over the slack service and select the setting button then a window pop up asking for the action need to be selected and also the connection needs to be established to your slack channel.![SlackConnection](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/salesforceleads-slack/SlackConnectionAndAction.png) 25 | 26 | You can establish the connection in 2 ways 27 | 28 | a) You can login to slack on the same browser and select the default authorization so that webMethods.io generates the keys for you. 29 | b) You can manually enter the keys by selcting the other option. 30 | ![SlackAuthentication](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/salesforceleads-slack/SlackAuthentication.png) 31 | 32 | 8. After the connection click next to do the mapping. Map the relevant data required to send to slack channel. Once mapping is done then click on save.![SalesforceLeadToSlackMapping](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/salesforceleads-slack/SalesforceLeadToSlackMapping.png) 33 | 34 | 9. Now add the logger function to see the input and the output document to this service.![AddingLogger](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/salesforceleads-slack/AddingLogger.png) 35 | 36 | Under logger mapping we have logged both salesforce lead information and also the slack channel information.![LoggingMapper](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/salesforceleads-slack/LoggingMapper.png) 37 | 38 | 10. Now join the flow to end and this completes the complete workflow. This is ready for testing.![CompleteWorkflow](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/salesforceleads-slack/CompleteWorkflow.png) 39 | 40 | 11. Test the work flow by either creating a new lead in the salesforce or by just testing the individual step.![TestingWorkflow](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/salesforceleads-slack/TestingWorkflow.png) 41 | 42 | 12. review the slack channel whether the lead information has been posted.![SlackChannelOutput](https://github.com/SoftwareAG/webmethodsio-examples/blob/master/salesforceleads-slack/SlackChannelOutput.png) 43 | -------------------------------------------------------------------------------- /salesforceleads-slack/SalesforceConnection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/SalesforceConnection.png -------------------------------------------------------------------------------- /salesforceleads-slack/SalesforceLeadToSlackMapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/SalesforceLeadToSlackMapping.png -------------------------------------------------------------------------------- /salesforceleads-slack/SalesforceLeadsToSlackChannel.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/SalesforceLeadsToSlackChannel.zip -------------------------------------------------------------------------------- /salesforceleads-slack/SalesforceLogin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/SalesforceLogin.png -------------------------------------------------------------------------------- /salesforceleads-slack/SalesforcePollingTrigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/SalesforcePollingTrigger.png -------------------------------------------------------------------------------- /salesforceleads-slack/SlackAuthentication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/SlackAuthentication.png -------------------------------------------------------------------------------- /salesforceleads-slack/SlackChannelOutput.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/SlackChannelOutput.png -------------------------------------------------------------------------------- /salesforceleads-slack/SlackConnectionAndAction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/SlackConnectionAndAction.png -------------------------------------------------------------------------------- /salesforceleads-slack/TestingWorkflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/salesforceleads-slack/TestingWorkflow.png -------------------------------------------------------------------------------- /slack-twitter-linkedin/canvas.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/slack-twitter-linkedin/canvas.PNG -------------------------------------------------------------------------------- /slack-twitter-linkedin/linkedaccess.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/slack-twitter-linkedin/linkedaccess.PNG -------------------------------------------------------------------------------- /slack-twitter-linkedin/linkeddata.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/slack-twitter-linkedin/linkeddata.PNG -------------------------------------------------------------------------------- /slack-twitter-linkedin/posttweet.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/slack-twitter-linkedin/posttweet.PNG -------------------------------------------------------------------------------- /slack-twitter-linkedin/readme.md: -------------------------------------------------------------------------------- 1 | # Slack-Twitter-LinkedIn 2 | In this example we will post a message and youtube link into a Slack channel and webMethods will post to Twitter and LinkedIn 3 | 4 | ## Prerequisites 5 | I. Slack account 6 | 7 | II. Twitter account 8 | 9 | III. LinkedIn account 10 | 11 | ## Set Up 12 | 13 | 1. Lets start by creating a new workflow from scartch, you should now see a workflow canvas shown below. 14 | 15 | canvas 16 | 17 | 2. Double click the start icon, scroll down the list of triggers and select Slack. You will now be able to set a label name for your Trigger. We will select the Trigger to be "New Message in Public Channel". If this is your first time connecting Slack, you will have to click the "+" button and authorize webMethods access to your Slack account. Last you will have to enter your Slack Channel ID you wish to use. Click "Save", "Test", and "Done" once the test is complete. 18 | 19 | slack-auth 20 | 21 | 3. Click and drop the Twitter icon from the list of application on the right panel onto the canvas. Connect the start icon to the Twitter icon and also connect the Twitter icon to the end icon. Repeat the same steps for the LinkedIn icon. Your canvas should now look like the below example. 22 | 23 | canvas 24 | 25 | 4. Double click the Twitter icon and from the list of Actions select "Post Tweet". You will now have to click the "+" sign and enter your account credentials to allow access, when finished click "Next". 26 | 27 | posttweet 28 | 29 | 5. From the mapping screen we will now enter the Trigger Text into the Tweet Action field. Click the "Next" button and Test your configured Data. When test has passed click the "Done" button. 30 | 31 | tweetdata 32 | 33 | 6. Double click the LinkedIn icon and from the list of Actions select "Share On LinkedIn". You will now have to click the "+" sign and enter your account credentials to allow access, when finished click "Next". 34 | 35 | linkedaccess 36 | 37 | 7. From the mapping screen we will now enter the Trigger Text into the Comment Action field. We will also select the Trigger from_url under the attachments dropdown into the URL Action field. Click the "Next" button and Test your configured Data. When test has passed click the "Done" button. 38 | 39 | linkeddata 40 | 41 | 8. It is very important to remeber to save your workflow in order to start executing the workflow! 42 | 43 | save 44 | 45 | 9. To test the workflow now, post a message and a youtube url into your specified Slack channel, you will see the workflow execute, posting the message and youtube video to your Twitter and LinkedIn accounts. 46 | -------------------------------------------------------------------------------- /slack-twitter-linkedin/save.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/slack-twitter-linkedin/save.PNG -------------------------------------------------------------------------------- /slack-twitter-linkedin/slack-auth.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/slack-twitter-linkedin/slack-auth.PNG -------------------------------------------------------------------------------- /slack-twitter-linkedin/slack-twitter-linkedin.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/slack-twitter-linkedin/slack-twitter-linkedin.zip -------------------------------------------------------------------------------- /slack-twitter-linkedin/tweetdata.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/slack-twitter-linkedin/tweetdata.PNG -------------------------------------------------------------------------------- /sms-my-tesla/sms-my-tesla-test-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/sms-my-tesla-test-1.png -------------------------------------------------------------------------------- /sms-my-tesla/sms-my-tesla.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/sms-my-tesla.zip -------------------------------------------------------------------------------- /sms-my-tesla/sms-tesla-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/sms-tesla-flow.png -------------------------------------------------------------------------------- /sms-my-tesla/sms-tesla-sequence-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/sms-tesla-sequence-1.png -------------------------------------------------------------------------------- /sms-my-tesla/sms-tesla-test-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/sms-tesla-test-1.png -------------------------------------------------------------------------------- /sms-my-tesla/twilio-post.txt: -------------------------------------------------------------------------------- 1 | { 2 | "ToCountry": "US", 3 | "ToState": "IL", 4 | "SmsMessageSid": "", 5 | "NumMedia": "0", 6 | "ToCity": "", 7 | "FromZip": "60061", 8 | "SmsSid": "", 9 | "FromState": "IL", 10 | "SmsStatus": "received", 11 | "FromCity": "MUNDELEIN", 12 | "Body": "Menu", 13 | "FromCountry": "US", 14 | "To": "", 15 | "ToZip": "", 16 | "NumSegments": "1", 17 | "MessageSid": "", 18 | "AccountSid": "", 19 | "From": "", 20 | "ApiVersion": "2010-04-01" 21 | } -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-project-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-project-dashboard.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-switch-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-switch-1.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-switch-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-switch-2.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-switch-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-switch-3.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-switch-case-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-switch-case-1.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-switch-case-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-switch-case-2.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-switch-case-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-switch-case-3.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-switch-case-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-switch-case-4.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-switch-case-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-switch-case-5.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-tesla-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-tesla-1.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-tesla-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-tesla-10.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-tesla-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-tesla-11.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-tesla-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-tesla-12.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-tesla-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-tesla-2.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-tesla-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-tesla-3.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-tesla-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-tesla-4.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-tesla-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-tesla-5.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-tesla-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-tesla-6.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-tesla-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-tesla-7.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-tesla-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-tesla-8.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-tesla-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-tesla-9.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-tesla-get-state-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-tesla-get-state-flow.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-config-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-config-1.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-config-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-config-2.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-response-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-response-1.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-response-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-response-10.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-response-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-response-11.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-response-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-response-12.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-response-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-response-2.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-response-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-response-3.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-response-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-response-4.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-response-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-response-5.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-response-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-response-6.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-response-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-response-7.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-response-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-response-8.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-twilio-response-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-twilio-response-9.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-webhook-trigger-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-webhook-trigger-2.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-webhook-trigger-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-webhook-trigger-3.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-webhook-trigger-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-webhook-trigger-4.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-webhook-trigger-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-webhook-trigger-5.png -------------------------------------------------------------------------------- /sms-my-tesla/wm-io-webhook-trigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/sms-my-tesla/wm-io-webhook-trigger.png -------------------------------------------------------------------------------- /twilio-receive-sms/Complete-Integration.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-receive-sms/Complete-Integration.PNG -------------------------------------------------------------------------------- /twilio-receive-sms/Creating_First_Workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-receive-sms/Creating_First_Workflow.png -------------------------------------------------------------------------------- /twilio-receive-sms/ReceiveMessageFromTwilio.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-receive-sms/ReceiveMessageFromTwilio.zip -------------------------------------------------------------------------------- /twilio-receive-sms/email-canvas.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-receive-sms/email-canvas.PNG -------------------------------------------------------------------------------- /twilio-receive-sms/email-map.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-receive-sms/email-map.PNG -------------------------------------------------------------------------------- /twilio-receive-sms/email-received.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-receive-sms/email-received.PNG -------------------------------------------------------------------------------- /twilio-receive-sms/readme.md: -------------------------------------------------------------------------------- 1 | # Receive Message From Twilio 2 | 3 | This example shows how easy it is, to receive SMS from Twilio using webMethods.io and send it as email to other interested parties. This functionality can be used for receiving alerts, status via SMS and updating other IT systems. It can be used for Lead generation, creating tickets in ServiceNow etc. 4 | 5 | ## Prerequisite 6 | 7 | Twilio account with at least one phone number to receive and send SMS. Account SID and Auth Token from Twilio Account Dashboard. 8 | 9 | 10 | ## Setup 11 | 12 | 1. Go ahead and get started creating a blank workflow. If you need a refresher on how to get to this point, this [guide](https://docs.webmethods.io/workflow-building-blocks/creating-first-workflow) can be a great introduction. Your starting point should resemble ![this](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-receive-sms/Creating_First_Workflow.png) 13 | 14 | 2. Trigger is created by modifying the start icon, which is is the entrypoint to the new flow. Please select the gear on top of the start icon to access settings. Once settings is selected in the start icon, a 'trigger' dialog will appear that allows Twilio to be selected as Trigger.![trigger](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-receive-sms/trigger.png) 15 | 16 | 3. Leave Trigger Label Unchanged. Choose "New Message Delivered" Option in Select Trigger Dropdown. 17 | ![Trigger](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-receive-sms/twilio.png) 18 | 19 | Twilio Trigger offers two different options for Messsage and Calls. Different option can be selected depending on integration requirement. 20 | ![Twilio Trigger Option](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-receive-sms/twilio-diff-options.png) 21 | 22 | In Connect To Twilio, Select if there is any existing Twilio Account available or click on + button to add a new one. ![Twilio Authorization](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-receive-sms/twilio-auth.png) 23 | 24 | 4. Select done once presented with the final dialog. You should now see the start arrow dialog replaced with the Twilio icon. 25 | 26 | 27 | 5. Now the flow is ready to process, once the Trigger receives the request. In the search dialog lookup "Email" service and select "Send an Email" service under Notification, drag and drop it into the flow canvas. ![Email Step](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-receive-sms/email-canvas.PNG) 28 | 29 | 6. Connect the arrows from Twilio Trigger to the email icon and then to the end icon. This inserts the 'Send an Email' step in the flow. 30 | 31 | 7. Configure the "Send an Email" step by clicking the gear icon in the step. Fill in To\CC for email, Drag an drop fields needed from Twilio trigger (left hand side) to email fields on right hand side. ![Email Mapping](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-receive-sms/email-map.PNG). 32 | 33 | 34 | 8. Click Next and complete the form. The resulting flow will look like as below. ![finalflow](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-receive-sms/Complete-Integration.PNG)The flow is now ready for testng in the webMethods.io UI 35 | 36 | 9. The flow is now ready to test. Send an SMS from your twilio phone number or Click Test in webMethods.io workflow UI. an email resembling below will be received. ![Email Received](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-receive-sms/email-received.PNG) 37 | -------------------------------------------------------------------------------- /twilio-receive-sms/trigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-receive-sms/trigger.png -------------------------------------------------------------------------------- /twilio-receive-sms/twilio-auth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-receive-sms/twilio-auth.png -------------------------------------------------------------------------------- /twilio-receive-sms/twilio-diff-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-receive-sms/twilio-diff-options.png -------------------------------------------------------------------------------- /twilio-receive-sms/twilio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-receive-sms/twilio.png -------------------------------------------------------------------------------- /twilio-send-sms/add-return-hook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/add-return-hook.png -------------------------------------------------------------------------------- /twilio-send-sms/creating-first-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/creating-first-workflow.png -------------------------------------------------------------------------------- /twilio-send-sms/final-integration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/final-integration.png -------------------------------------------------------------------------------- /twilio-send-sms/postman-execution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/postman-execution.png -------------------------------------------------------------------------------- /twilio-send-sms/readme.md: -------------------------------------------------------------------------------- 1 | # Send SMS Using Twilio 2 | 3 | This example shows how easy it is, to Send SMS from Twilio using webMethods.io. This functionality can be used for sending alerts, status, marketing offers etc via SMS. 4 | 5 | ## Prerequisite 6 | 7 | Twilio account with at least one phone number to receive and send SMS. Account SID and Auth Token from Twilio Account Dashboard. 8 | 9 | 10 | ## Setup 11 | 12 | 1. Go ahead and get started creating a blank workflow. If you need a refresher on how to get to this point, this [guide](https://docs.webmethods.io/workflow-building-blocks/creating-first-workflow) can be a great introduction. Your starting point should resemble ![this](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/creating-first-workflow.png) 13 | 14 | 2. The Webhook is created by modifying the start icon, which is is the entrypoint to the new flow. Please select the gear on top of the start icon to access settings. Once settings is selected in the start icon, a 'trigger' dialog will appear that allows Webhook to be selected.![trigger](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/trigger.png) 15 | 16 | 3. Leave Webhook Authentication unchecked. Check/Enable Webhook Payload, add the structure of the input payload into the "Body" text area and click next. Note the webhook url and save this for later. As a best practice, Authentication should be added immedately after flow ("SendSMSUsingTwilio") is working ![webhook](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/webhook.png) 17 | 18 | ![webhookpayload](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/webhook-payload.png) 19 | 20 | 4. Select done once presented with the final dialog. You should now see the start arrow dialog replaced with a webhook icon. ![webhookconfigured](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/webhook-canvas.png) 21 | 22 | 23 | 5. Now the flow is ready to process, once the webhook receives the request. In the search dialog lookup "Twilio" service and select "Twilio" service. 24 | ![TwilioSearch](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/twilio-search.png) 25 | 26 | 6. Drag and drop it into the flow canvas. ![TwilioService](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/twilio-canvas.png) Connect the arrows from webhook to the twilio icon and then to the end icon. This inserts the 'Twilio' step in the flow. 27 | 28 | 7. Configure the "Twilio" step by clicking the gear icon in the step. Select action as "Send and SMS". Give it a name (ie the step name) as "Send an SMS". Click + icon next to "Connect to Twilio" drop down and configure the account credentials to connect to Twilio instance. ![TwilioAction](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/twilio-action-configure.png). Note - if you had already configured the Twilio credentials, just reuse it by selecting from "Connect to Twilio" drop down. 29 | 30 | 8. Configure the Twilio credentials. You will use Twilio Account SID and AUTH Token to connect to Twilio in this screen. 31 | 32 | ![TwilioAuth](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/twilio-auth.png) 33 | 34 | Click Add to close the window and go back to configure "Twilio "Send an SMS" window. Click "Next" 35 | 36 | 9. In the Mapping screen, add the to, from, body from webhook json input. ![TwilioMap](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/twilio-map.png) Click Next and complete the form. The resulting flow will look like as below. ![Twiliofinal](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/twilio-final-complete.png)The flow is now ready for testng in the webMethods.io UI 37 | 38 | 10. To make this a flow a useful Rest API, you need to return a response. This can be performed by adding a "Return Data on Sync Webhook" service step. In order to do this, in the search dialog lookup "Return" service and select "Return Data on Sync Webhook" service, drag and drop into the flow canvas. 39 | The resulting flow will look like as below ![returnresponselinked](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/add-return-hook.png) 40 | 41 | 11.Configure the "Return Data on Sync Webhook" service by clicking on the gear icon on the service step, give it a name and click next 42 | 43 | 12. In this page map the response status code from Twilio function to Response data of the "Return Data on Sync Webhook" service. ![returnwebhookmapped](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/return-hook-map.png). Click Next and Done. 44 | 45 | 13. The flow is now ready to test as a Rest API from an external tool like Postman. Please make sure to grab the exposed Rest URL from the Webhook URL field in the first flow step(webhook) and use it as the Rest API URL. ![restcall](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/postman-execution.png). On Succesful execution a SMS will be delivered to the number provided in To field. ![sms](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/sms-screenshot.jpg) 46 | 47 | ## Complete Solution 48 | Zip file and json file of complete solution can be downloaded from below links. 49 | * [Zip](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/send-sms-using-twilio.zip) 50 | * [JSON](https://github.com/mangatrai/webmethodsio-examples/blob/master/twilio-send-sms/send-sms-using-twilio.json) 51 | -------------------------------------------------------------------------------- /twilio-send-sms/return-hook-map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/return-hook-map.png -------------------------------------------------------------------------------- /twilio-send-sms/send-sms-using-twilio.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/send-sms-using-twilio.zip -------------------------------------------------------------------------------- /twilio-send-sms/sms-screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/sms-screenshot.jpg -------------------------------------------------------------------------------- /twilio-send-sms/trigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/trigger.png -------------------------------------------------------------------------------- /twilio-send-sms/twilio-action-configure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/twilio-action-configure.png -------------------------------------------------------------------------------- /twilio-send-sms/twilio-auth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/twilio-auth.png -------------------------------------------------------------------------------- /twilio-send-sms/twilio-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/twilio-canvas.png -------------------------------------------------------------------------------- /twilio-send-sms/twilio-final-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/twilio-final-complete.png -------------------------------------------------------------------------------- /twilio-send-sms/twilio-map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/twilio-map.png -------------------------------------------------------------------------------- /twilio-send-sms/twilio-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/twilio-search.png -------------------------------------------------------------------------------- /twilio-send-sms/webhook-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/webhook-canvas.png -------------------------------------------------------------------------------- /twilio-send-sms/webhook-payload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/webhook-payload.png -------------------------------------------------------------------------------- /twilio-send-sms/webhook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/twilio-send-sms/webhook.png -------------------------------------------------------------------------------- /wmio-connector-hafas/README.md: -------------------------------------------------------------------------------- 1 | # wmio-connector-hafas 2 | 3 | 4 | ## Overview 5 | 6 | 7 | This sample demonstrates how to build a custom connector to an external (REST) API for further usage in webmethods.io Integration. 8 | 9 | 10 | 11 | 12 | REST API used for this purpose is the HAFAS ReST API. 13 | 14 | HAFAS is used by many international railway companies like e.g Deutsche Bahn, ÖBB, NS Nederlande Spoorwegen or SBB. 15 | Also by many public transport networks like e.g. RMV, HVV or BVG. 16 | 17 | Developed by HaCon Ingenieurgesellschaft mbH, Hannover, Germany (https://www.hacon.de/en), the HAFAS ReST API access is usually established via registration at one of the HAFAS using providers. 18 | 19 | This sample connector was developed with an API token/key provided by Rhein-Main-Verkehrsverbund (RMV). 20 | Registration can be done at https://opendata.rmv.de/site/start.html or finally at https://opendata.rmv.de/site/anmeldeseite.html 21 | 22 | Base URL for all API calls is https://www.rmv.de/hapi/. 23 | You can find there all Web Application Description Language (WADL) service descriptions. 24 | 25 | The connector contains the follwing actions 26 | 27 | | Connector Action | HAFAS Service | 28 | |---|---| 29 | | getLocationName | location.name | 30 | | getLocationNearbyStops | location.nearbystops | 31 | | getStationboard | departureboard | 32 | 33 | 34 | 35 | ## Short Action Description 36 | 37 | ### getLocationName 38 | 39 | getLocationName provides a free text search for Locations of different types, like e.g. (street) address or stop. 40 | 41 | ### getLocationNearbyStops 42 | 43 | getLocationNearbyStops provides Longitude/Latitude coordinates based search mainly for stops. 44 | 45 | 46 | ### getStationboard 47 | 48 | getStationboard provides a search for the next departures of a given stop. Schedule based data, plus realtime data. 49 | 50 | 51 | 52 | ## Potential Use Cases, sample webmethods.io Integration flows. 53 | 54 | ### Search for a public transport stop, nearby a given address 55 | 56 | "HAFAS-only" example. 57 | 58 | 1. Create HAFAS action getLocationName 59 | 2. Create Connector Account, when using for the first time in webmethods.io project 60 | 3. For an example, enter a desired value for "Search Input" 61 | 4. Test the action, to get a valid output 62 | 5. Create a second HAFAS action getNearestStop 63 | 6. Map longitude and latitude between the two HAFAS actions 64 | 7. Test the action, to get a valid output 65 | 8. Create a third HAFAS action getStationBoard 66 | 9. Map StopLocation's "extId" (not long "Id") to "Location Id" 67 | 10. Test the action, to get a valid output 68 | 69 | 70 | ### Search for nearest public transport stop, for a given loction of a "Connected Car" 71 | 72 | This connector could also easily be used for addtional processing of the "Connected Car" sample connector found here: https://github.com/SoftwareAG/wmio-connector-connectedcar 73 | 74 | 1. Follow all steps in "Connected Car" README to get this connector deployed. 75 | 2. Create a new workflow with a first action "getVehicles", no input needed. 76 | 3. Test the action, to get a valid output 77 | 4. Create a second action "getVehicleById" 78 | 5. Map desired vehicle id between the two actions 79 | 6. Test the action, to get a valid output 80 | 7. Create third action "getLocation" (for vehicle) 81 | 8. Map desired vehicle id between the two actions 82 | 83 | These are the actions needed from "Connected Car", now let's find nearest stop of current vehicle's position: 84 | 85 | 9. Create HAFAS action getNearestStop 86 | 10. Map longitude and latitude between vehicle's "getLocation" and HAFAS "getNearestStop" 87 | 11. Test the action, to get a valid output 88 | 89 | optional, for illustration: 90 | 91 | 12. Create a second HAFAS action getStationBoard 92 | 13. Map StopLocation's "extId" (not long "Id") to "Location Id" 93 | 14. Test the action, to get a valid output 94 | 95 | 96 | 97 | # General information about webmethods.io Integration Connector Builder 98 | 99 | Register for a free trial webMethods.io integration account: https://www.softwareag.cloud 100 | 101 | TechCommunity Information could be found here: http://techcommunity.softwareag.com/pwiki/-/wiki/Main/webMethods.io%20Connector%20Builder%20guide 102 | 103 | Product Documentation could be found here: https://docs.webmethods.io/integration/developer_guide/connector_builder/#gsc.tab=0 104 | 105 | * Follow the official documentation until chapter "Quick Setup Guide", step 2 "Login to webMethods.io Integration". 106 | * No need for "wmio init", as we start with this sample, cloned/checked out from Git. 107 | ``` 108 | # cd into cloned from Git directory "wmio-connector-hafas/src". 109 | ``` 110 | 111 | * As you need to use your own API Key, replace all occurrences of "\" with your own key. 112 | 113 | * Test your connector 114 | 115 | ``` 116 | wmio test 117 | ``` 118 | 119 | * Deploy your connector to webmethods.io Integration 120 | 121 | ``` 122 | wmio deploy 123 | ``` 124 | 125 | ______________________ 126 | These tools are provided as-is and without warranty or support. They do not constitute part of the Software AG product suite. Users are free to use, fork and modify them, subject to the license agreement. While Software AG welcomes contributions, we cannot guarantee to include every contribution in the master project. 127 | 128 | Contact us at [TECHcommunity](mailto:technologycommunity@softwareag.com?subject=Github/SoftwareAG) if you have any questions. 129 | 130 | -------------------------------------------------------------------------------- /wmio-connector-hafas/resources/wmio-connector-hafas-combined-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-connector-hafas/resources/wmio-connector-hafas-combined-workflow.png -------------------------------------------------------------------------------- /wmio-connector-hafas/resources/wmio-connector-hafas-getneareststop_coord_mapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-connector-hafas/resources/wmio-connector-hafas-getneareststop_coord_mapping.png -------------------------------------------------------------------------------- /wmio-connector-hafas/resources/wmio-connector-hafas-getneareststop_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-connector-hafas/resources/wmio-connector-hafas-getneareststop_output.png -------------------------------------------------------------------------------- /wmio-connector-hafas/resources/wmio-connector-hafas-getstationboard_mapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-connector-hafas/resources/wmio-connector-hafas-getstationboard_mapping.png -------------------------------------------------------------------------------- /wmio-connector-hafas/resources/wmio-connector-hafas-getstationboard_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-connector-hafas/resources/wmio-connector-hafas-getstationboard_output.png -------------------------------------------------------------------------------- /wmio-connector-hafas/resources/wmio-connector-hafas-searchaddress_input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-connector-hafas/resources/wmio-connector-hafas-searchaddress_input.png -------------------------------------------------------------------------------- /wmio-connector-hafas/resources/wmio-connector-hafas-searchaddress_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-connector-hafas/resources/wmio-connector-hafas-searchaddress_output.png -------------------------------------------------------------------------------- /wmio-connector-hafas/resources/wmio-connector-hafas-standalone-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-connector-hafas/resources/wmio-connector-hafas-standalone-workflow.png -------------------------------------------------------------------------------- /wmio-connector-hafas/src/action/v1/getlocationname.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | name: "getlocationname", 4 | 5 | title: "getLocationName", 6 | 7 | description: "", 8 | version: "v1", 9 | 10 | input: { 11 | title: "Location Name", 12 | type: "object", 13 | properties: { 14 | search: { 15 | title: 'Search Parameters', 16 | type: 'object', 17 | properties: { 18 | input: { 19 | title: "Search Input", 20 | description: 'Free search text', 21 | type: "string", 22 | minLength: 1, 23 | }, 24 | type: { 25 | title: 'Location Type', 26 | type: 'string', 27 | description: 'Select a search type, (ALL), (S)tation, (A)ddress, (P)OI, (SA) Station and Address, (SP), (AP)', 28 | enum: ['ALL', 'S', 'A', 'P', 'SA', 'SP', 'AP'], 29 | }, 30 | /* coordLong: { 31 | title: 'Search coordinate, longitude', 32 | description: 'Select a longitude, between -180-180 (WGS84)', 33 | type: 'string', 34 | }, 35 | coordLat: { 36 | title: 'Search coordinate, latitude', 37 | description: 'Select a latitute, between -90-90 (WGS84)', 38 | type: 'string', 39 | }, */ 40 | r: { 41 | title: 'Search radius', 42 | description: 'Select a search radius, between 1-10000 (meter)', 43 | type: 'integer', 44 | minimum: 1, 45 | maximum: 10000, 46 | }, 47 | maxNo: { 48 | title: 'Maximum returned results', 49 | description: 'Select a maximum of returned results, between 1 and 1000', 50 | type: 'integer', 51 | minimum: 1, 52 | maximum: 1000, 53 | }, 54 | format: { 55 | title: 'Format of output', 56 | type: 'string', 57 | enum: ['json', 'xml'], 58 | }, 59 | }, 60 | required: ['input'], 61 | } 62 | } 63 | }, 64 | 65 | output: { 66 | title: "output", 67 | type: "object", 68 | properties: { 69 | 70 | } 71 | }, 72 | 73 | mock_input: {}, 74 | 75 | execute: function (input, output) { 76 | // to access auth info use input.auth , eg: input.auth.username 77 | // and to return output use output callback like this output(null, { 'notice' : 'successful'}) 78 | // your code here 79 | const path = require('path'); 80 | const url = require('url'); 81 | const querystring = require('querystring'); 82 | 83 | let settings = require('../../settings.json'); 84 | let myActionService = 'location.name'; 85 | 86 | 87 | 88 | let queryString = querystring.stringify({ ...{ 'accessId': input.auth.api_key }, ...input.search }); 89 | //console.log("input.auth.api_key: ", input.auth.api_key); 90 | //console.log("queryString: ", queryString); 91 | 92 | //const myURL = url.parse('https://example.org:8080/a/b/c?a=5'); 93 | const myURL = url.format({ 94 | protocol: settings.protocol, 95 | hostname: settings.baseUrl, 96 | pathname: path.posix.join(settings.path, myActionService), 97 | search: queryString, 98 | }); 99 | 100 | let options = { 101 | "method": "GET", 102 | "url": myURL, 103 | } 104 | 105 | let request = require("request"); 106 | 107 | 108 | request(options, function (error, response, body) { 109 | if (error) throw new Error(error); 110 | output(null, body); 111 | }); 112 | 113 | } 114 | } -------------------------------------------------------------------------------- /wmio-connector-hafas/src/action/v1/getlocationnearbystops.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | name: "getlocationnearbystops", 4 | 5 | title: "getLocationNearbyStops", 6 | 7 | description: "", 8 | version: "v1", 9 | 10 | input: { 11 | title: "Location Name", 12 | type: "object", 13 | properties: { 14 | search: { 15 | title: 'Search Parameters', 16 | type: 'object', 17 | properties: { 18 | type: { 19 | title: 'Location Type', 20 | type: 'string', 21 | description: 'Select a search type, (S)tation, (P)OI, (SP) Station and POI', 22 | enum: ['S', 'P', 'SP'], 23 | }, 24 | originCoordLong: { 25 | title: 'Search coordinate, longitude', 26 | description: 'Select a longitude, between -180-180 (WGS84)', 27 | type: 'string', 28 | }, 29 | originCoordLat: { 30 | title: 'Search coordinate, latitude', 31 | description: 'Select a latitute, between -90-90 (WGS84)', 32 | type: 'string', 33 | }, 34 | r: { 35 | title: 'Search radius', 36 | description: 'Select a search radius, between 1-10000 (meter)', 37 | type: 'integer', 38 | minimum: 1, 39 | maximum: 10000, 40 | }, 41 | maxNo: { 42 | title: 'Maximum returned results', 43 | description: 'Select a maximum of returned results, between 1 and 1000', 44 | type: 'integer', 45 | minimum: 1, 46 | maximum: 1000, 47 | }, 48 | format: { 49 | title: 'Format of output', 50 | type: 'string', 51 | enum: ['json', 'xml'], 52 | }, 53 | }, 54 | required: ['originCoordLat', 'originCoordLong'], 55 | } 56 | } 57 | }, 58 | 59 | 60 | output: { 61 | title: "output", 62 | type: "object", 63 | properties: { 64 | 65 | } 66 | }, 67 | 68 | mock_input: {}, 69 | 70 | execute: function (input, output) { 71 | // to access auth info use input.auth , eg: input.auth.username 72 | // and to return output use output callback like this output(null, { 'notice' : 'successful'}) 73 | // your code here 74 | const path = require('path'); 75 | const url = require('url'); 76 | const querystring = require('querystring'); 77 | 78 | let settings = require('../../settings.json'); 79 | let myActionService = 'location.nearbystops'; 80 | 81 | 82 | 83 | let queryString = querystring.stringify({ ...{ 'accessId': input.auth.api_key }, ...input.search }); 84 | //console.log("input.auth.api_key: ", input.auth.api_key); 85 | //console.log("queryString: ", queryString); 86 | 87 | //const myURL = url.parse('https://example.org:8080/a/b/c?a=5'); 88 | const myURL = url.format({ 89 | protocol: settings.protocol, 90 | hostname: settings.baseUrl, 91 | pathname: path.posix.join(settings.path, myActionService), 92 | search: queryString, 93 | }); 94 | 95 | let options = { 96 | "method": "GET", 97 | "url": myURL, 98 | } 99 | 100 | let request = require("request"); 101 | 102 | 103 | request(options, function (error, response, body) { 104 | if (error) throw new Error(error); 105 | output(null, body); 106 | }); 107 | 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /wmio-connector-hafas/src/action/v1/getstationboard.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | name: "getstationboard", 4 | 5 | title: "getStationboard", 6 | 7 | description: "", 8 | version: "v1", 9 | 10 | input: { 11 | title: "Staionboard", 12 | type: "object", 13 | properties: { 14 | search: { 15 | title: 'Search Parameters', 16 | type: 'object', 17 | properties: { 18 | extId: { 19 | title: 'Location Id', 20 | type: 'string', 21 | description: 'Select a Station by Id for departure Stationboard', 22 | }, 23 | rtMode: { 24 | title: 'Realtime mode', 25 | type: 'string', 26 | description: 'Select a mode to get realtime information', 27 | enum: ['FULL', 'OFF', 'INFOS', 'REALTIME', 'SERVER_DEFAULT'], 28 | }, 29 | maxJourneys: { 30 | title: 'Maximum returned results', 31 | description: 'Select a maximum of returned results', 32 | type: 'integer', 33 | }, 34 | format: { 35 | title: 'Format of output', 36 | type: 'string', 37 | enum: ['json', 'xml'], 38 | }, 39 | }, 40 | required: ['extId'], 41 | } 42 | } 43 | }, 44 | 45 | 46 | output: { 47 | title: "output", 48 | type: "object", 49 | properties: { 50 | 51 | } 52 | }, 53 | 54 | mock_input: {}, 55 | 56 | execute: function (input, output) { 57 | // to access auth info use input.auth , eg: input.auth.username 58 | // and to return output use output callback like this output(null, { 'notice' : 'successful'}) 59 | // your code here 60 | const path = require('path'); 61 | const url = require('url'); 62 | const querystring = require('querystring'); 63 | 64 | let settings = require('../../settings.json'); 65 | let myActionService = 'departureboard'; 66 | 67 | 68 | 69 | let queryString = querystring.stringify({ ...{ 'accessId': input.auth.api_key }, ...input.search }); 70 | //console.log("input.auth.api_key: ", input.auth.api_key); 71 | //console.log("queryString: ", queryString); 72 | 73 | //const myURL = url.parse('https://example.org:8080/a/b/c?a=5'); 74 | const myURL = url.format({ 75 | protocol: settings.protocol, 76 | hostname: settings.baseUrl, 77 | pathname: path.posix.join(settings.path, myActionService), 78 | search: queryString, 79 | }); 80 | 81 | let options = { 82 | "method": "GET", 83 | "url": myURL, 84 | } 85 | 86 | let request = require("request"); 87 | 88 | 89 | request(options, function (error, response, body) { 90 | if (error) throw new Error(error); 91 | output(null, body); 92 | }); 93 | 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /wmio-connector-hafas/src/auth.conf: -------------------------------------------------------------------------------- 1 | { 2 | "username": "TOM", 3 | "password": "JERRY", 4 | "api_key": "" 5 | } -------------------------------------------------------------------------------- /wmio-connector-hafas/src/authentication.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | label: "Connect to Hafas", 3 | mock_input: { 4 | api_key: "" 5 | }, 6 | validate: function (input, output) { 7 | // validate function will used for validating user input while adding connection for this connector 8 | // credential will be available in input.auth object 9 | // var apikey = input.auth.api_key; 10 | // callback pattern 11 | // output(error, success) 12 | output(null, true); 13 | } 14 | } -------------------------------------------------------------------------------- /wmio-connector-hafas/src/icon/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-connector-hafas/src/icon/icon.png -------------------------------------------------------------------------------- /wmio-connector-hafas/src/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wmio-connector-hafas", 3 | "description": "Access to HAFAS journey planner systems via HAFAS API, example for regional carrier 'Rhein-Main-Verkersverbund (RMV)'", 4 | "triggers": [], 5 | "actions": [ 6 | "/v1/getlocationname", 7 | "/v1/getlocationnearbystops", 8 | "/v1/getstationboard" 9 | ], 10 | "version": 1, 11 | "auth_type": "apikey", 12 | "docs_link": "http://docs.example.com", 13 | "lookup": true, 14 | "appId": "ecad0169-2e67-4999-91b7-558da6644dd3", 15 | "guid": "66575294-eafa-4800-8d7a-ff57cc196732", 16 | "connectionUid": "hafas_1576764747866" 17 | } -------------------------------------------------------------------------------- /wmio-connector-hafas/src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wmio-connector-hafas", 3 | "version": "1.0.0", 4 | "description": "Access to HAFAS journey planner systems", 5 | "dependencies": { 6 | "request": "2.68.0", 7 | "@webmethodsio/cli-sdk": "*" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /wmio-connector-hafas/src/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "protocol": "https", 3 | "baseUrl": "www.rmv.de", 4 | "path": "hapi" 5 | } -------------------------------------------------------------------------------- /wmio-connector-hafas/src/webhook_sampleinput.json: -------------------------------------------------------------------------------- 1 | { 2 | "searchString": "Hamburg Altona", 3 | "searchradius": "1000", 4 | "maxRows": "10" 5 | } -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 001.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 025.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 025.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 030.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 030.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 037.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 037.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 038.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 038.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 039.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 039.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 043.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 043.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 050.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 050.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 051.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 051.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 052.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 052.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 053.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 053.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 054.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 054.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 055.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 055.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 056.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 056.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 1.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image 2.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image002.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image003.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image004.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image005.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image006.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image007.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image008.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image009.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image010.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image011.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image012.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image013.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image014.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image014.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image015.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image015.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image016.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image017.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image018.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image018.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image019.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image020.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image021.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image021.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image022.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image023.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image023.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image024.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image026.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image026.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image027.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image027.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image028.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image028.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image029.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image029.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image031.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image031.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image032.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image032.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image033.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image033.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image034.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image034.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image035.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image035.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image036.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image036.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image040.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image040.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image041.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image041.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image042.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image042.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image044.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image044.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image045.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image045.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image046.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image046.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image047.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image047.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image048.png -------------------------------------------------------------------------------- /wmio-tasksynch/images/Image049.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SoftwareAG/webMethods-io-examples/3cdd84e3905dd529edab6c91eb13a92376cc5177/wmio-tasksynch/images/Image049.png --------------------------------------------------------------------------------