LogoLogo
WEM ModelerWEM ReferenceTutorialsMyWEM
  • WEM Platform Documentation
  • Getting Started
    • Introducing WEM
    • Create WEM Account
    • WEM Login
    • MyWEM Portal
      • MyWEM Features
      • MyWEM Support
      • Allow Support Access
    • Partner Portal
  • WEM Modeler
    • Introducing the WEM Modeler
    • Modeler Start Page
    • Manage Projects & Workspaces
    • User Roles Scheme
    • Create a new Project
    • Modeler Application Overview
    • Project Settings
      • Project Configuration
      • Security Settings
      • Portal Settings
      • SMTP Settings
      • Mobile App Settings
    • Expression Editor
    • Flowcharts
      • User Interaction
      • End Node
      • Sub-flowchart
      • Navigation
      • Clear session
      • Decision
      • Assignment
      • List Action
      • Loop
      • Copy Data
      • Save and Discard
      • Import Data
      • Export Data
      • Invoke Webservice
      • HTTP Request
      • Execute Process
        • Different processes explained
        • Send Email
        • Change settings
        • Changing files
        • Generate File
      • Ping server
      • Authenticate
      • Comet Messages
      • OpenAI
      • Async Tasks
      • Note Node
    • Data Model
      • WEM Session Folder
    • Services and Integration
      • Webservices
      • Remote Data Sources
      • Authentication Providers
        • SAML 2.0
          • SAML App Registration in EntraID
        • OAuth 2.0
      • Comet - Real Time Messages
      • Certificates
    • Concepts and Concept Queries
      • Concepts
      • Concept Queries
      • Concept Relations
    • Navigation
      • HTTP Endpoints
      • Tasks
    • Files and Assets
      • Widget Libraries
      • Template Fragments
      • Files
      • Hyperlinks
    • Multilanguage Dictionary
    • Agentic AI
      • WEM AI Agent
      • AI Flowchart Nodes
      • AI User Interaction
    • WEM Preview
    • WEM Runtime
      • Publishing Process
      • Staging
      • Live
    • Debugging
  • Template Editor
    • Interaction Template Editor
      • Interaction Template Hotkeys
    • General and preview
    • Style
      • Heading Type
      • Paragraph Style
      • Text Styling
      • Alignment
      • Hyperlink
      • Tooltip
    • Layout
      • Adaptive columns
      • Div
      • Panel
      • Alert
      • Table
      • Image
      • Icon
      • Label
    • Interaction
      • Form
      • Validation
      • Required field
      • Button
      • Dropdown
      • Free form item
    • Miscellaneous
      • Tabbar
      • Google maps
      • Nested template
      • Script
      • Reference
      • Conditional
      • Data grid
      • Repeater
      • Rich text
      • Custom
    • WMT Tool
  • WEM Reference
    • WEM Expressions Reference
    • Functions
      • Aggregation
        • Average
        • Count
        • First
        • Last
        • Max
        • Min
        • Sum
      • Concepts
        • ConceptId
        • Description
        • FindConcepts
        • GetAncestors
        • GetChildren
        • GetDescendants
        • GetParent
        • Intersection
        • LocalName
        • Synonyms
        • ToConcept
        • Union
      • Date
        • Date
        • DateDiff
        • DateOnly
        • DatePart
        • DayOfWeek
        • FromUnixTimestamp
        • MoveDate
        • Now
        • TimeOfDay
        • Today
        • ToDuration
        • ToLocal
        • ToUnixTimestamp
        • ToUTC
        • UTCNow
        • UTCToday
      • Environment
        • ApplicationId
        • CountryCode
        • CountryName
        • Hostname
        • IpAddress
        • IsFirstRequest
        • IsHttps
        • IsPreview
        • IsStaging
        • IsLive
        • NodeTrail
        • PortalId
        • PortalName
        • ProjectId
        • ProjectName
        • ProjectVersion
        • Setting
        • UrlPath
      • Files
        • FileName
        • FileSize
        • FileUrl
        • MimeType
      • Lists
        • Distinct
        • IsNewRow
        • IsOnRow
        • List
        • NameOf
        • RowId
      • Math
        • Abs
        • Ceiling
        • Cos
        • Distance
        • Exp
        • Floor
        • Log
        • Log10
        • Pi
        • Pow
        • Random
        • Round
        • Sin
        • Sqrt
        • ToNumber
      • Security
        • AesDecrypt
        • AesEncrypt
        • AesIv
        • AesKey
        • CreateJsonWebTokenH256
        • HmacSha256
        • Md5
        • Password
        • PasswordStrength
        • Pbkdf2
        • Sha1
        • Sha256
        • Totp
      • Text
        • AsText
        • Base32ToText
        • Base64ToText
        • CompareFuzzy
        • Concat
        • Contains
        • FormatDate
        • FormatDuration
        • FormatNumber
        • Guid
        • HexToText
        • HtmlAttributeEncode
        • HtmlEncode
        • IndexOf
        • JavascriptEncode
        • JsonEncode
        • Length
        • Padl
        • Padr
        • RegExIsMatch
        • RegExMatches
        • RegExReplace
        • Replace
        • Split
        • StringPart
        • SubString
        • ToBase32
        • ToBase64
        • ToBase64Url
        • ToHex
        • ToLower
        • ToRichText
        • ToString
        • ToTitleCase
        • ToUpper
        • Trim
        • UrlDecode
        • UrlEncode
        • XmlAttributeEncode
        • XmlEncode
        • XPath
        • XPathList
        • XPathNumber
      • Validation
        • HasValue
        • IsEmpty
        • IsKnown
        • IsUnknown
        • IsValidBankaccount
        • IsValidBSN
        • IsValidBTW
        • IsValidEmailAddress
        • IsValidIBAN
        • IsValidPhonenumber
        • IsValidURL
      • Localization
        • AvailableLanguages
        • CurrentLanguage
        • CurrentTimezone
        • LanguageStrategy
        • Languages in WEM
    • Keywords
      • Contains
      • Concepts
        • Ancestor of
        • Child of
        • Concept
        • Descendant of
        • Overlaps
        • Range of
        • Parent of
        • Contains
      • Environment
        • ApplicationRoot
        • Platform
      • Lists
        • In
        • Of
        • Where
        • Contains
        • All
      • Logic
        • And
        • Not
        • Or
        • Choose
        • If Then Else
      • Mobile
        • BatteryLife
        • BuildVersion
        • ConnectivityTypes
        • DeviceId
        • DeviceName
        • IsDevelopmentBuild
        • IsDistributionBuild
      • Text
        • Contains
        • Ends with
        • NewLine
        • Starts with
    • Operators
      • Addition +
      • Division /
      • Equality =
      • Equality-strong ==
      • Greater-than >
      • Greater-than-or-equal >=
      • If-unknown ?
      • Inversion -
      • Less-than <
      • Less-than-or-equal <=
      • Logical-and &, and
      • Logical-not !, not
      • Logical-or |, or
      • Modulo %
      • Multiplication *
      • Power ^
      • Subtraction -
      • Unequality <>
    • Data Types
      • Text
      • Number
      • Yes / No (Boolean)
      • Date Time
      • Duration
      • File
      • Rich Text
      • Concept
      • Conceptset
      • Reference
    • SQL Compatibility
      • Functions
      • Keywords
      • Operators
    • Content Security Policy
    • WEMScript for Custom HTML
    • WEM Widgets
      • WEM Widget Structure
      • WEMScript for Widgets
      • Widget Editor
      • Content Placeholder
    • WMT
      • File Structure
      • Basic Functional Template
      • Styling
      • Font Icons
      • Reference
        • Breadcrumb
        • Button Bar Buttons
        • Common Scripts
        • Common Styles
        • Conditional
        • Content
        • CSP
        • CSP Nonce
        • Expression
        • Hidden Fields
        • Language Select
        • Navigation
        • Node ID
        • Node Name
        • Placeholder
        • Placeholder Conditional
        • Startup Scripts
        • Template Fragment
        • Uses
    • Regression Test Framework
      • WEM Test Script
  • Tutorials
    • Tutorials
      • Making a Change Log
      • Placeholders for end-users
    • First Application
      • Expand First Application
    • Video Tutorials
      • By Partners
      • Security
    • Building Widgets
      • Basics
        • 1. Introduction
        • 2. Hello, World!
        • 3. General
        • 4. Properties
        • 5. Events
        • 6. Styling
        • 7. View State
        • 8. Resources
        • 9. Placeholders
        • 10. Template Editor Script
        • 11. Global Scope
        • 12. Risks and Responsibilities
        • 13. Conclusion
      • In-depth
        • 1. Introduction
        • 2. Platform Availability
        • 3. Development Workflow
        • 4. Properties
        • 5. View state
          • 1. Runtime.viewState
          • 2. sessionStorage
          • 3. Summary
        • 6. Styling
        • 7. Events
          • 1. Navigation
          • 2. Row position
      • WEMscript
        • 1. Introduction
        • 2. Variables
        • 3. Properties
        • 4. OutputId()
        • 5. Register Input - Required
        • 6. Encoding
        • 7. Script Block - Introduction
        • 8. Types
          • 1. Boolean
          • 2. Concept
          • 3. ConceptSet
          • 4. Datetime
          • 5. Duration
          • 6. File
          • 7. Number
          • 8. Richtext
          • 9. Text
        • 9. Script Block - Global Scope
        • 10. Script Block - ES Modules
        • 11. CSS - attachShadow
      • Examples
  • Tips and Tricks
    • Tips and Tricks
      • Keyboard Shortcuts
      • Video's in WEM
      • Extracting text from File
    • Custom Hostnames
    • FAQ
    • Expressions
      • Order of Operators
    • Processes
      • Email Process
      • Tips for creating PDF's
      • ZIP Archive Process Node
    • Concepts
      • Concepts and Runtime
    • Working with data
      • The Power of the Calculated Field
      • Consuming your OData source with Excel 2016
      • Expose your data via OData
      • Using OData to transfer data between runtimes
      • WEM Storage Options
    • Integration
      • Integrating external systems
      • Json
      • Single Sign-on
      • Office365 Integration
    • Performance
      • Performance Tips
      • Performance Profiler
      • Template Performance Profiler
      • The Split Loop
    • Security
      • 2FA with TOTP
      • Blacklist or whitelist IP addresses
    • Widgets
      • Advanced Charts
        • Boxplot Chart
        • Brush Chart
        • Bubble Chart
        • Candlestick Chart
        • Card with Chart
        • Effect Scatter Chart
        • Heat Map
        • Line, Area and Bar Chart
        • Map-Bar Morph
        • Mix Time Line Chart
        • Nested Pie Chart
        • Polar Area Chart
        • Polar Bar Chart
        • Profit Chart
        • Radial Bar Chart
        • Radial Bar Gauge
        • Range Bar Chart
        • Rosetype Pie Chart
        • Sankey Energy Chart
        • Scatter Chart
        • Scatter-Aggregate-Bar Chart
        • Stacked Columns Chart
        • Stepline Chart
        • Treemap
      • Advanced Input
        • Color Picker
        • Conceptset Image Selector
        • Google maps locator
        • Multi select input button
        • MultiFile Upload
        • On/Off switch
        • Process Arrow Steps
        • Rate
        • Rating view
        • Single select input button
        • Slider
        • Tree
      • Template Actions
        • Follow exit
      • Global widgets
        • Agenda
        • Audio Player
        • Calendar
        • Draw Signature
        • Grid Widget
        • Image capture
        • Kanban Board
        • Path
        • Progress Bar
        • reCAPTCHA
        • Timeline
      • Document widgets
        • Json Viewer
        • PDF Viewer
    • Various
    • Go to MyWEM
Powered by GitBook
On this page
  • SOAP
  • Consuming webservices
  • Changing endpoint configurations
  • Details in the Project Resource pane
  • Using
  • Exposing webservices
  • Creating a webservice
  • Specify input, output & fault details
  • Create operation flowcharts
  • Document webservice and operations
  • Webservice configuration
  • Definition changed? Update consumer!

Was this helpful?

Export as PDF
  1. WEM Modeler
  2. Services and Integration

Webservices

PreviousServices and IntegrationNextRemote Data Sources

Last updated 3 months ago

Was this helpful?

You can find the situation in the images in the Quick Starters found in the app store. There we provide example project for a Consumer and a Provider webservice that can be added to your workspace. Looking for Custom HTTP Endpoints? This feature is provided in the Navigation Tab.

You can find .

This page is about setting up a webservice in your project, to use the webservice you need to implement it in your flowcharts. You can find more about using the webservice nodes here: , , & Data.

SOAP

WEM applications can use SOAP to integrate with external systems. SOAP “Simple Object Access Protocol” is a highly standardized and self-documenting messaging framework, where everything you can do is strictly defined in a WSDL “Web Service Description/Definition Language” document. SOAP is a very rigid integration standard, which makes it especially easy to use for novice or non-technical users, because both systems integrating with each other have a pre-defined way of communicating. When using SOAP, the data exchanged is always in the XML format, but you’ll never know, as WEM does all the translation from and to XML into the familiar WEM datamodels. WEM can both expose from (let others integrate with your WEM Project) and consume (integrate with other systems) SOAP web services with a minimum of technical skills.Before you can use SOAP services in your flowcharts, you need to configure the webservices that you want to be available. The same is true if you want to expose your application to external systems: you need to define the service that external systems can access.

Consuming webservices

In order to consume external SOAP services you need to specify those services in the WEM Modeler. To do this, you need to take the following steps:

In the project resources, click on Web services and comet to get the following screen where you manage the webservices:

Click on the three dots next to Add web service or use a right-click. When you select import webservice a window opens where you can give it a Service name and choose to import From web or From file. Select what applies. You pick From web if you have a URL from which you can load the service's WSDL (Web Services Description Language) file. This file contains the description of the web service you want to use. If the URL points towards a .asmx or .svc file, WEM will assume this refers to a .Net webservice and WEM then knows how to access the wsdl file. If you pick From file you either have to specify a wsdl file to upload or a zipfile in case you need multiple wsdl files (plus the xsd file) to specify the webservice.

When the webservice has been successfully defined, you can see the service being added to the resource pane on the left hand side.

The webservice is now ready to be used in the workflows of the application.

Changing endpoint configurations

In order to use the webservice, WEM needs to know the web service URL. By defaults this URL is the same for preview, staging and live environments. But if you want, you can change that. In the webservice overview simply open the context menu of the webservice, select service configuration and change the URL that needs to be changed. Changes in the configuration screen are automatically saved.

External webservices might require some kind of authentication in order to access them. These authentication requirements have to be defined in the WSDL. WEM supports Basic Authentication (username/password) and Client Certificate authentication. When consuming the WSDL in WEM, it should automatically recognize these requirements. In the service configuration window you can enter the required information (client certificate or username/password).

***If WEM does not seem to recognize the requirements (this can happen because of custom non-standard definitions that WEM does not yet recognize), you won't see the authentication fields in tab endpoint configuration. If you are sure there should be authentication, create a ticket and provide the WSDL as URL or file attachment so we can investigate how WEM should interpret this specific definition.

Details in the Project Resource pane

In the Project resource pane, the newly added webservice is visible:

Here you can also find the service operation, but you can drill down into the details. For every service operation you find:

  • Input: if you click on this/open the node, you can see which fields are needed as input for the service operation to be executed successfully

  • Output: these are the fields that contain the result of the webservice operation

  • Faults: The fields that are available in case there are any errors

Using the webservice is done in flowcharts, where the same information is available, since that is where you work with the actual data.

Using

Exposing webservices

When you want your application to expose data to other systems, you can set up a webservice that other systems can access. To expose your application, you need to take the following steps:

  1. Create the webservice that other systems can use to access your application by opening the context menu (three dots, right click) and select new webservice.

  2. Create the operation(s) that other systems can use to access data and/or functionality that you want to expose to the outside world with the context menu and add new operation;

  3. For every operation you need to specify the input and output fields that are needed. When you added a operation, you can find a input and output where you can add a field with the context menu;

  4. For every operation you create a flowchart that takes care of processing input data as well as generating the output data is created. In this flowchart you add a bit of logic to handle the requests.

  5. Document the webservice and operations, to provide all necessary information to the people that use your webservice. This option is available for the webservice and the different operations by using the context menu.

All these steps are explained in a bit more detail in the next sections

The exposed webservice is not available for testing in preview. Testing of exposed webservices should be done in the staging environment.

Creating a webservice

When you want your application to expose data to other systems, you can set up a webservice that other systems can access. To do this, you go to Web services and comet in the project resource pane and select Webservice (expose). You are now able to create a web service, by opening the context menu and clicking on New web service. You are then presented with the following form:

You only need to enter a name (<a-z>, <0-9>, <-> and <_>) to create a expose webservice. This will create the webservice under the chosen name and a default URL (http(s)://{portal-hostname}/webservices/expose) with portal-hostname as placeholder. The form also has a lot of other options to customize the webservice. You can change the following settings:

  • Enable WEM 2.7 compatibility mode Legacy option to make it make the service compatible with WEM 2.7. Only use this for this compatibility issues with old projects.

  • Enable JSON fields renaming

  • Publishing specific settings(covered in later sections):

    • Metadata exposure

    • Authentication method

You have can now find the created webservice in the resource pane under Web service (expose). With the context lets you can add operations, change the settings or edit the documentation and get the service working.

  • Operations Now that you have created a webservice, you can start to create one or more operations. These operations define what data or functionality is being shared with external systems. To create a new operation, simply click on New Operation in the context menu. You have to specify the operation name (<a-z>, <0-9>, <-> and <_>). and you can add documentation.

  • Edit Settings When you click on this button the edit Web Service Window opens giving you the options to change the same settings as when you created the webservice.

  • Edit Documentation Allows you to add specific documentation that is shown when the public URL of the web service is entered in a browser.

A operation shown in the project tree:

The next step to take is to define which information is needed as input for the webservice, and which information will be returned to the external system using the webservice.

Specify input, output & fault details

Every operation can define which input is needed, which output will be returned and what fault information is available. The input detail is input information that the operation needs in order to successfully execute the operation. All output that is returned is stored in the output details. And in case something goes wrong during the execution of the operation, fault information is available through the fault details. In order to define all the necessary information, every new operation creates an action flowchart and three empty folders in the operation tree:

When all data is specified, the final step is needed: create the flowchart that processes the request and make sure the correct data is returned.

Create operation flowcharts

To process the input for the exposed webservice and return the correct data, you need to create a flowchart for every operation that is available in the webservice. First you have to define the input and output (and fault) fields, as explained above. Next you create the logic for the processing in the created action flowchart. This flowchart was already created when the new operation was defined, so you can immediately start to work with this flowchart.

  • Click on the operation in the Project tree. You are now in the webservice details overview where you will find all defined operations.

  • Double-click on the operation to open the flowchart. When the flowchart is opened it initially only shows two nodes: a Start and a End: Succes node.

  • Complete the flowchart where you use the input fields in your flowchart. The flowchart also assigns values to the output fields, to make sure the webservice can return the requested data. In case you run into an error situation, the flowchart can also assign data to the defined fault fields.

Document webservice and operations

The exposed webservice will be used by developers (or WEM Modelers) that want their systems to communicate/integrate with your application. In order to make that as easy as possible you can document your webservice and every individual operation. This documentation can be used to describe the webservice in general, to explain what an operation does, what input is needed, what output can be expected, etc. You can document whatever you want.

Documenting your webservice is done using the Edit documentation button that is in the context menu of your webservice and on every operation you defined. When you click on this option, you will get a documentation form:

Just hit the Save button to save the documentation.

To document an operation, simply click on the Edit documentation button in the operation overview screen. You get a similar documentation window as the service documentation:​

This documentation is available from the Edit webservice menu when you opened from the context menu of a webservice. When you open this window, and the Metadata exposure has been set to Public URL there is a link called Open public URL in new window link, next to the Metadata exposure field. This is the URL to the webservice documentation page, which will look like this:​

You will find the following information here:

  • At the top is the service documentation, as you have specified it;

  • A Resources section with links to information that is valuable for developers:

    • a link to the Full WEM WSDL best for WEM consumers (so developers can use that WSDL file to set up communication from their system to your WEM application);

    • a link to the Basic WSDL for non-WEM consumers

    • a link to a JavaScript file that can be used as the client JavaScript proxy;

    • a link to a Typescript definition file for a client proxy;

  • An Operations section with a link to:

    • a page that contains Request and Response examples for

      • SOAP 1.1 & SOAP 1.2

      • JavaScript

      • JSON

      • These example show how based on one of the mentioned protocols your webservice can be used

    • At the bottom is the specific Operation documentation, as you have specified it.

You are now ready to expose this webservice to external systems: publish and share the endpoint links.

Webservice configuration

When you are ready building your webservice, you need to publish the project to make it available for consumers. Your webservice will be available at 3 different endpoints for preview, staging and live:

http(s)://{portal-hostname}/webservice/[webservicename]

You can find the correct links in the Edit Webservice window for each separate environment. There are two ways to find the links: Double selecting the webservice you want to see the details of or with the context menu and selecting edit settings. You will get de webservice details, including links to the correct endpoint URLs.​

The second way to exposing a webservice is through the Metadata exposure setting. You can change this by selecting the Public URL link. This setting offers two options to deal with the webservice metadata:

  • Public URL: This will expose all metadata information that is available through the Go to documentation page link that will appear next to the dropdown box. This links to a page that is described in the previous section.

  • By WSDL file: Only WSDL metadata is exposed. When this is selected, the user can click on the link on WSDL link that appears beneath the dropdown box. This will open an new browser window with a link to the webservice WSDL file;

Encryption

It is possible to specify how the communication with the webservice is encrypted. There are three possible methods:

  • None: there will be no encryption;

  • Transport: the communication will be encrypted. When this option is selected, you need to specify the authentication method:

    • None No authentication

    • Client certificate The SOAP procotol validates certificates

    • Username/password (build-in) The SOAP protocol validates client credentials

    • Username/password (flowchart) Check the client credentials in the flowchart of a web service operation

  • Message: use this when the actual message itself (the content) needs to be encrypted. When this option is selected, you must:

    • Choose /upload a client certificate;

    • Specify the authentication method:

      • None No authentication

      • Client certificate The SOAP procotol validates certificates

      • Username/password (build-in) The SOAP protocol validates client credentials

      • Username/password (flowchart) Check the client credentials in the flowchart of a web service operation

You can specify the encryption method for each of the three environments: preview, staging and live. And each environment can have a different encryption approach.

Definition changed? Update consumer!

If you change your exposed webservice and publish it to staging/live environments, the consumers need to be updated. If your consumer is another WEM-project, just go to the webservices (consume) in the resource pane, open the webservice context menu and hit Update web service. This is necessary when:

  • Input fields change;

  • Output fields change;

  • Faults change;

  • Security settings changed;

  • Operations change;

  • Concepts in the Ontology change, which are used in any of the input/output single/multi-select fields (ontology-concepts are made part of the webservice definition)

Any of these changes results in a change of the contract, the definition of the webservice.

Action flowchart

Input folder

Output folder

Faults folder

The Input and Output folders are greyed to clearly show that this information type has not been specified. Maybe this information is not needed, or maybe the details still have to be specified. Once details are specified, the the greyed out folder will change to a Input and Output icon. For each of these folders you need to define which data is needed: you need to add the fields and/or lists that should be given as input for the webservice. You also need to add the fields and/or lists where the results you want to return are stored. And the same applies to fault information. All this information will be part of the service definition that is used by the external systems. To define the data that is needed: click on the folder (e.g. Input) and now you do the same you would do when you create a data model: select the folder and open the context menu and select New field. When you use single-select or multi-select fields, the concepts that are referred to in these fields will be part of the service definition as well, so external systems have the correct and complete data.

Encryption method
MyWEM
more information there
Invoke Webservice
HTTP Request
Import
Export
Webservice in Project tree
Configuration & Authentication
Create expose webservice
Webservice in Project tree
A coplete
New Webservice
Webservice with documentation