Search for answers or browse our knowledge base.
App Components
0 out of 5 stars
5 Stars | 0% | |
4 Stars | 0% | |
3 Stars | 0% | |
2 Stars | 0% | |
1 Stars | 0% |
Overview
In this tutorial, you will learn how to create App Components as reusable technical solutions. You will gain experience using and composing Components to quickly create and improve Visual Event Handlers, reducing duplicative tasks.
Part 1: Creating a Component
1: Import the Introductory Tutorial
Use the Project menu to select Import. Select Tutorials as the Import Type. Select the Introductory Tutorial and click Import.
Click Refresh once the import is completed.
Click the com.vantiq.engines.EngineMonitor Source from the Project Contents tree or use the Add menu to select Service and open the com.vantiq.engines.EngineMonitor Service. For more details or information on how the com.vantiq.engines.EngineMonitor Service works, refer to the Introductory Tutorial.
Navigate to the Implement tab in the Service and click on the Inbound section header to view the inbound Event Type handlers. Select the TemperatureEvent event handler. Recall that this event handler receives temperature events, retrieves the current speed value if necessary, then generates an alert message for the event. Notice that there are three similar patterns in this Event Type handler: a Filter task (i.e., NoAlert, NonSpeedOverheat, SpeedOverheat) each followed by a Transformation task (i.e., ClearAlert, AddNonSpeedOverheat, AddSpeedOverheat).
Duplicative tasks are tedious to configure and cumbersome to maintain. To solve this, create a reusable component for filtering and transforming using differing temperature and speed values. The TemperatureEvent Event Handler will use this Component to produce the proper engine alert message based on the sensor data it receives.
2: Create a Component From an Existing Handler
App Components may either be created from scratch or copied from an existing event handler. Use the existing definition of the TemperatureEvent Event Handler to copy the duplicated tasks and create a new App Component.
Hold the shift key and drag your mouse to select the NoAlert and ClearAlert tasks. Notice that the tasks show a green border when they are selected.
Click Create Component in the upper left-hand corner of the pane. Enter FilterAndDiagnose as the App Component name and click OK.
A new App Component has been created with an exact copy of the tasks you selected from the Event Handler.
3: Rename Component Tasks
Notice that an oval bubble called Downstream has been added beneath the Filter task. As the creator of the Component, you may decide how users of the Component will attach tasks beneath the Component. When a Component is used, it appears as a single black box for all the functionality and tasks contained within. For a user to connect another task as a child of the Component, the Component creator must expose downstream connection points to one or more tasks within the Component.
Click on the Downstream bubble and rename it Diagnosis. When this Component is used, if a task is added as a child of the Component using this connection point, it is effectively a child of the Diagnosis task. Rename the NoAlert task to Diagnose and the ClearAlert task to AddDiagnosis.
Save the Component.
4: Expose Component Parameters
Components are sections of Visual Event Handlers that are configurable and reusable to solve a wide range of problems. Components serve as a black box and are represented as a single Task. The user of a Component may treat it like any other Task, configuring a small set of properties to achieve the desired functionality.
The FilterAndDiagnose Component contains two tasks, the Diagnose Filter task and the AddDiagnosis Transformation task. Event Handlers that use FilterAndDiagnose will need to specify the filtering condition and the transformation properties for those tasks. The Expose Parameter feature of the component editor allows task parameters to be designated as “exposed”.
Click the Diagnose task then click the Click to Edit link. Click the Expose Parameter + button to the right of the condition property.
Leave the name of the configuration property as the default condition, then click OK. Click OK again to save the single configuration parameter for the Diagnose task.
Click the AddDiagnosis task then click the Click to Edit link. Click the Expose Parameter + button to the right of the transformation property. Leave the name of the configuration property as the default transformation, then click OK. Click OK again to save the single configuration parameter for the AddDiagnosis task.
Click OK and then Save the Component.
Part 2: Use the FilterAndDiagnose Component
Now that you have created the FilterAndDiagnose Component, it is time to plug it into the Event Handler.
1: Replace Repeated Tasks
Open the Service by using the Add button, click Services and then select com.vantiq.engines.EngineMonitor from the list.
Click on the Implement tab and open the TemperatureEvent Event Handler in the Inbound section.
Expand the Components section of the Task palette in the Event Handler. Notice that the FilterAndDiagnose Component is in the palette. Your component is now available to be used in your Visual Event Handlers.
Delete the NoAlert and ClearAlert tasks by clicking on each task and then clicking the Delete button in the pane’s toolbar.
Drag in the FilterAndDiagnose Component and drop it on the SensorReading Task.
Notice that the Component appears as a single task called FilterAndDiagnose. Also notice a downstream Diagnosis task appears as a triangular node beneath the Component representing a connection point for the component.
Rename the FilterAndDiagnose task to NoAlert then right-click the Diagnosis downstream task connected to the NoAlert task and select Link Existing Task. Select PublishStatus from the Task Name menu, then click OK.
Delete the NonSpeedOverheat and AddNonSpeedOverheat tasks by clicking on the task and then clicking the Delete button in the pane’s toolbar.
Drag in the FilterAndDiagnose Component and drop it on the RetrieveSpeed Task.
Rename the FilterAndDiagnose task to NonSpeedOverheat then right-click the NonSpeedOverheat task and select Link Existing Task. Select PublishStatus from the Task Name menu, then click OK.
Delete the SpeedOverheat and AddSpeedOverheat tasks by clicking on each task and then clicking the Delete button in the pane’s toolbar.
Drag in the FilterAndDiagnose Component and drop it on the RetrieveSpeed Task.
Rename the FilterAndDiagnose task to SpeedOverheat then right-click the SpeedOverheat task and select Link Existing Task. Select PublishStatus from the Task Name menu, then click OK.
Click Save to save the com.vantiq.engines.EngineMonitor Service.
You have now replaced your duplicated tasks with your reusable component. Please note there will be errors displayed after saving the Service. These are expected and will be corrected in subsequent steps.
2: Configure the New Component Tasks
Now that three instances of the FilterAndDiagnose component have replaced six tasks in the TemperatureEvent Event Handler, it’s time to configure each of those component properties.
- Click the NoAlert task then click the Click to Edit link. Click on the link next to the condition property. Choose Visual Filter as the condition Type then click the Add Visual Condition + button. Enter the following Visual Condition parameters:Property Name: temperatureComparator: <
Filter Expression: 210
Click OK. As for the original NoAlert task, this Visual Filter determines if the engine is not overheating by checking if the temperature sensor reading is less than 210 degrees.
Now click on the link next to the transformation property. Choose Visual Transformation as the transformation Type then click the Add a Transformation + button. Enter the following Visual Transformation parameters:
Outbound Property: alertMsg
Transformation Expression: “”
Click OK. As for the original NoAlert task, this Visual Transformation sets a new event property, alertMsg, to have a string value of “” which effectively means there is no alert to be displayed in the engine dashboard. This is because the NoAlert Filter task has determined that the engine is not overheating. Click OK to save the configuration.
- Click the NonSpeedOverheat task then click the Click to Edit link. Click on the link next to the condition property. Choose Visual Filter as the condition Type then add the following two Visual Condition parameters, in this order:Property Name: speedComparator: !=
Filter Expression: null
and
Property Name: speed
Comparator: <
Filter Expression: 45
Click OK. As for the original NonSpeedOverheat task, this Visual Filter determines if the engine is overheating and the speed is not null and less than 45. The speed can be null if a speed reading has not yet appeared.
Now click on the link next to the transformation property. Choose Visual Transformation as the transformation Type then click the Add a Transformation + button. Enter the following Visual Transformation parameters:
Outbound Property: alertMsg
Transformation Expression: “Your engine is overheating: check for a malfunctioning fan or a coolant leak.”
Click OK. Click OK again to save the configuration.
- Click the SpeedOverheat task then click the Click to Edit link. Click on the link next to the condition property. Choose Visual Filter as the condition Type then add the following two Visual Condition parameters, in this order:Property Name: speedComparator: !=
Filter Expression: null
and
Property Name: speed
Comparator: >=
Filter Expression: 45
Click OK. As for the original SpeedOverheat task, this Visual Filter determines if the engine is overheating and the speed is not null and greater than or equal to 45.
Now click on the link next to the transformation property. Choose Visual Transformation as the transformation Type then click the Add a Transformation + button. Enter the following Visual Transformation parameters:
Outbound Property: alertMsg
Transformation Expression: “Your engine is overheating: please reduce your speed.”
Click OK. Click OK again to save the configuration.
Click Save to save the com.vantiq.engines.EngineMonitor Service.
3: Run Events through the Component
Now it is time to test that the Component works as expected.
If you’ve imported the Introductory Tutorial or the App Components completed tutorial, you will need to enable the two Sources, com.vantiq.engines.SpeedSensor and com.vantiq.engines.TemperatureSensor in order to begin the flow of simulated sensor events.
Click the Active Resource Control Center (lightning bolt) icon in the IDE Navigation Bar to display the Active Resource Control Center pane:
Activate the SpeedSensor and TemperatureSensor Sources by clicking their Active Slider.
Click the com.vantiq.engines.EngineMonitor Client from the Project Contents tree or use the Add menu to select Clients and open the com.vantiq.engines.EngineMonitor Client.
Notice that even though the implementation of the com.vantiq.engines.EngineMonitor Service changed, the Client did not need to be updated because the Data Streams in the Client use the Outbound Service Event Types and the Interface remained unchanged.
Conclusion
Congratulations, you have just created your first App Component!
In this Tutorial you have:
- Created a Component from an existing Event Handler
- Added Configurable Properties to the Component
- Replaced duplicated code by using the same App Component in an Event Handler
In the next tutorial, you will update this App Component to use Stateful Services to store and persist engine data while maintaining scalability and performance.
0 out of 5 stars
5 Stars | 0% | |
4 Stars | 0% | |
3 Stars | 0% | |
2 Stars | 0% | |
1 Stars | 0% |
-
Getting Started
-
- Advanced Collaborations
- Analytics
- App Components
- Assemblies
- Catalogs Tutorial
- Client Builder
- Client Components
- Deployment Tutorial
- Floor Plan
- Introduction to Collaboration
- Natural Language Tutorial
- Sources
- Stateful Services
- System Modeler
- Testing the Debugging Tutorial
- Testing the Introductory Tutorial
- Testing the Source Tutorial
- User and Namespace Administration
- Show Remaining Articles ( 3 ) Collapse Articles
-
Product Documentation
-
-
-
- Accessing Documents
- Automatic Document Caching
- Client Resources
- Client Startup
- Control Widgets in the "Views" Portion of Client Builder
- Controllers
- Creating A Client
- Data Objects
- Data Stream Widgets in the “Views” Portion of Client Builder
- Data Streams
- Debugging
- Field Validation
- Introduction
- Launching Clients from a browser
- Layout Widgets in the “Views” Portion of Client Builder
- Localizing Clients
- Navigation Between Pages
- Offline Operation
- On Start Events
- Public Clients
- Server Requests
- Terminating The Client
- The Client Builder Concepts
- The Client Builder's Canvas Section
- The Client Builder's Control Dock
- The Client Builder's Palette Area
- The Client Builder's Slideout Section
- Uploading data to the Server
- Show Remaining Articles ( 13 ) Collapse Articles
-
- ‘On Assets Loaded’ Event
- ‘On Change’ Event
- ‘On Click’ Event
- ‘On Client Start’ Event
- ‘On Context Menu’
- ‘On Data Arrived’ Event
- ‘On End’ Event
- ‘On End’ Event
- ‘On Network Status Changed’ Event
- ‘On Start’ Event
- ‘On Start’ Event
- ‘On Swipe’
- ‘On Validation’ Event
- abort()
- AccordionLayout
- addAPIRequestFor(responseObjectProperty:string):boolean
- addEventHandler()
- addRequestFor(widgetName:string):boolean
- addRequestForDataURL():void
- addRequestsForClient():boolean
- addRequestsForCurrentPage():boolean
- addRequestsForPage(pageName:string):boolean
- adjustPopupSizeAndPosition()
- AudioRecorder
- Basic Information
- cancelSpeaking()
- children
- clearInterval()
- clearTimeout()
- clearUpload()
- clearValidationErrors()
- clone()
- closeIcon:string
- closeIcon:string
- closePopup()
- confirmCustom()
- confirmCustomEx()
- copyMatchingData(obj:any):void
- createClientEventDataStream()
- createDataChangedDataStream()
- createOutboundServiceEventDataStream()
- createPagedQueryDataStream()
- createPublishEventDataStream()
- createResourceEventDataStream()
- createResponseObject()
- createSourceEventDataStream()
- createTimedQueryDataStream()
- data
- data
- DataObject
- DataStream
- defaultSubmit()
- deleteAll()
- deleteOne()
- deleteOne()
- documentGroupName:string
- documentName:string
- errorDialog()
- execute()
- execute()
- executePublic()
- executePublic()
- executeStreamed()
- executeStreamed()
- executeStreamedPublic()
- executeStreamedPublic()
- fontColor:string
- fontFace:string
- fontSize:number
- fontStyle:string
- fontWeight:string
- formatMsg()
- generateUUID()
- getCollaborationContext()
- getCurrentPage()
- getCurrentPopup()
- getDataStreamByName()
- getDataStreamByUUID()
- getDeviceId()
- getDeviceName()
- getDocumentAssetLabelList()
- getDocumentAssetList()
- getDocumentUrl()
- getGroupNames()
- getLocation()
- getName()
- getProfileNames()
- getRequestParameters()
- getStateObject()
- getUsername()
- getUserRecord()
- getWidget()
- goToPage()
- hideCancelButton()
- Http
- infoDialog()
- initializePropertyToDefaultValue(propertyName:string):void
- initializeToDefaultValues():void
- insert()
- insert()
- instance
- isExpanded:Boolean
- isNetworkActive
- isPaused:boolean
- isPublic
- localeCountryCode
- localeLanguageCode
- localeVariantCode
- logout()
- markupImage()
- maxDurationInSeconds:number
- maxSizeInK:number
- modifyClientEvent()
- modifyDataChanged()
- modifyPagedQuery()
- modifyPublishEvent()
- modifyResourceEvent()
- modifyServiceEvent()
- modifySourceEvent()
- modifyTimedQuery()
- name:string
- navBarBackgroundColor
- navBarForegroundColor
- navBarIcon
- navBarIconHeight
- navBarIconWidth
- navBarShowControls
- navBarTitle
- navBarTitleFontFamily
- navBarTitleFontSize
- navBarTitleFontWeight
- openIcon:string
- optional:boolean
- overrideLocale
- Page
- patch()
- placeholder:string
- playAudio()
- playVideo()
- popupPage()
- publish()
- publish()
- publishToServiceEvent()
- query()
- recordAudio()
- recordVideo()
- remove():void
- responseObject:any
- restart():void
- returnToCallingPage()
- scanBarcode()
- select()
- select()
- selectOne()
- selectOne()
- sendClientEvent()
- sendLocation()
- setInterval()
- setResponseObject(responseObject:any=null, responseResource:string=null, responseResourceId:string=null):void
- setResponseObjectValues(submitValue:number, responseObjectValues:any, responseResource:string=null, responseResourceId:string=null):void
- setTimeout()
- setVantiqHeaders()
- setVantiqUrlForResource()
- setVantiqUrlForSystemResource()
- showDocument()
- showHttpErrors()
- showMap()
- speakText()
- start(completedFunction:Function):boolean
- startBLEScan()
- stopGeofencing()
- takePhoto()
- terminate()
- terminateWithDialog()
- title:string
- titleForegroundColor:string
- update()
- update()
- uploadDataURL()
- uploadDocument()
- Uploader
- upsert()
- upsert()
- uuid:string
- validate()
- validate()
- Widget Hierarchy
- Show Remaining Articles ( 172 ) Collapse Articles
-
-
-
- Accessing Namespaces in the Organization
- Active Resource Control Center
- Adding a New User to an Organization
- Adding a New User to the Application Namespace
- Administrators' Concepts and Terminology
- Authorizing Users to Access the Application
- Creating a Developer Namespace for the Organization Administrator
- Creating a New Application Namespace
- Creating Resources for New Namespaces
- Custom User Invites
- Deploying the GenAI Flow Service Connector
- Developer Tasks
- Handling Administrators Leaving
- Related Configuration
- Removing Namespace Administrators
- Self-Administration Tasks
- System Administration Tasks
- Viewing Lists of Users
- Show Remaining Articles ( 3 ) Collapse Articles
-
- Deploy Results Tab
- Deploying the same application to different environments
- Deployment
- Deployment Tool - Introduction
- Environment
- Environment Tab
- Node
- Project Partitions
- Redeploy On A Failed Node
- Reliable Deployment
- Settings Tab
- The Graph View
- The Tree View
- Undeploy
- Update Partitions
- Verify Application After Deployment
- Show Remaining Articles ( 1 ) Collapse Articles
-
- CheckedInsert/CheckedUpsert Command
- Command Line Options
- Delete Command
- Execute Command
- Export Command
- Find Command
- Help Command
- Import Command
- Insert Command
- Installation - Prerequisites
- Installation - Profile
- List Command
- Load Command
- Recommend Command
- Run Command
- Select Command
- Stop Command
- The Vantiq Command Line Interface (CLI) - Overview
- Upsert Command
- Show Remaining Articles ( 4 ) Collapse Articles
-
- App Execution Dashboard
- App With Split Dashboard
- Dashboard Navigation Bar
- Deprecated Dashboards
- Event Processing Dashboard
- General Dashboard Behavior
- Getting Started with Grafana
- Grafana Usage
- Monitoring Namespaces with Grafana
- Most Commonly Used Dashboards
- Namespace Monitoring Dashboards
- Organization Level Behavior
- Procedure and Rule Execution Dashboards
- Profiling Dashboards
- Reliable Event Dashboard
- Resource Usage Dashboard
- Service Execution Dashboard
- Service Handler Dashboard
- Source Activity Dashboard
- Storage Manager Dashboard
- Tensorflow Model Dashboard
- Type Storage Dashboard
- Show Remaining Articles ( 7 ) Collapse Articles
-
- Access to a Kubernetes Cluster
- Creating a K8s Cluster
- Delayed Processing
- Deploying K8s Installations to a Kubernetes Cluster
- Deploying the K8s Worker
- External Lifecycle Management Guide - Overview
- K8s Worker
- Kubernetes Components of a K8s Installation
- Kubernetes Namespaces
- Loading Images into a Kubernetes Cluster
- Managing K8s Installations
- Other Configuration Options
- System View
- Use of the self Cluster
- Using a Kubernetes Cluster
- Using Templates to Deploy the K8s Worker
- Vantiq Namespaces
- Verify Installation
- Show Remaining Articles ( 3 ) Collapse Articles
-
- Changing the System Password
- Creating a GenAIFlowService Service Connector
- Creating a New Organization and Namespace
- Deployment Methods
- Docker Deployment
- Edge Installation Management
- Edge Vision Server
- Executable JAR Deployment
- MongoDB
- Requirements
- Running the Vantiq Executable
- Setting the default LLMs API key
- Setting Up Vantiq Edge
- Vantiq Edge Reference Guide - Overview
- Vantiq Edge Self Node
- Windows bat file
- Show Remaining Articles ( 1 ) Collapse Articles
-
- Additional Buffer Semantics
- Applicability
- auditFrequency Quota
- Background
- Default Quotas
- Detailed Credit Quotas
- errorBreaker Quota
- errorReportingFrequency Quota
- Execution Credit Quota
- Execution Credit Quota - Diagnostics
- Execution Credit Quota - Mitigation
- Execution Rate Quota
- Execution Rate Quota - Diagnostics
- Execution Rate Quota - Mitigations
- executionTime Quota
- k8sResources Quota
- Quota Interactions
- receiveMessage Quota
- receiveMessage Quota - Diagnostics
- receiveMessage Quota - Mitigation
- reservedGroups Quota
- stackDepth Quota
- Stream Quota
- Terminology
- Workload Management
- Workload Management Conceptual Model
- Show Remaining Articles ( 11 ) Collapse Articles
-
-
-
-
- Accumulate State
- Analytics
- Answer Question
- App Activity Tasks
- App Builder Guide - Introduction
- App Builder Overview
- Assign
- Build and Predict Path
- Cached Enrich
- Chat
- Close Collaboration
- Collaborations in Apps
- Compute Statistics
- Convert Coordinates
- Creating an App
- DBScan
- Delay
- Dependency Management
- Dwell
- Enrich
- Error Handling
- Escalate
- EscalateState
- Establish Collaboration
- Event Redelivery
- Event Stream
- Filter
- GenAI Flow
- Get Collaboration
- Interpret Conversational Language
- Join
- K-Means Cluster
- Limit
- Linear Regression
- Log Stream
- Loop While
- Merge
- Notify
- Optional Imports
- Polynomial Fitter
- Predict Paths By Age
- Procedure
- Process Intent
- PublishToService
- PublishToSource
- PublishToTopic
- Rate
- Recommend
- RecordEvent
- Reliable Apps
- Run TensorFlow Model On Document
- Run TensorFlow Model On Image
- Run TensorFlow Model On Tensors
- Sample
- SaveToType
- Split By Group
- Submit Prompt
- Threshold
- Time Difference
- Track
- Track Motion
- Tracking Progress
- Transformation
- Unwind
- VAIL
- VisionScript
- Window
- Within Tracking Region
- YOLO From Images
- Show Remaining Articles ( 54 ) Collapse Articles
-
-
-
- Broker Service
- Catalog Operations
- Catalog Procedures
- Connect to Catalog
- Create Entry
- Create Entry
- Custom Operations
- Disconnect from Catalog
- Host Catalog
- Integrating Applications With the Catalog
- Managing Catalog
- Managing Event Types
- Publisher Service
- Register
- Remove Entry
- Repair Catalog
- Resolve
- Subscriber Service
- Unhost Catalog
- Unregister
- Utilities
- Show Remaining Articles ( 6 ) Collapse Articles
-
-
-
- Advanced Use Cases
- Data Manipulation
- Defining Types
- Discovery from External Data Store
- Error Handling
- Installation and Use
- Native Language Implementation
- Restricting Capabilities
- Service Connectors
- Storage Manager Assembly Contents
- Storage Manager Service API
- Storage Manager Transactions
- Storage Managers - Introduction
- Transaction Support
-
-
-
- App Pane
- Autopsies
- Defining a Run Policy
- Defining a Test Suite - Properties
- Defining an Input
- Defining an Output
- Error Pane
- Integration Tests
- Populate Testing Namespace With Data
- Procedure Pane
- Rule Pane
- Running a Test in the IDE
- Running a Test through the REST Interface
- Source Mocking For Tests
- Unit Tests
- Vantiq Testing Reference Guide - Introduction
- Show Remaining Articles ( 1 ) Collapse Articles
-
-
-
- Assign
- Branch
- Categorize
- CodeBlock
- Consensus
- Content Ingestion Flows
- Conversation
- GenAI Builder Guide Introduction
- GenAI Builder Layout
- GenAI Components
- GenAI Flow Properties
- GenAI Flow Tracing and Auditing
- Launching the GenAI Builder
- LLM
- Memory and Conversations
- Merging Task Outputs
- NativeLCEL
- Optional
- PromptFromTemplate
- RAG
- Repeat
- Runtime Configuration
- Semantic Index
- Sub-Flows
- Supported VAIL Language Features
- Using GenAI Components
- Vantiq Provided GenAI Components
- Show Remaining Articles ( 12 ) Collapse Articles
-
- AWS
- Azure OpenAI
- Bedrock
- Configuration
- Function Authorizer
- Gemini
- LLM Playground
- Main Chatting Area
- Navigation Panel
- NVIDIA NIM
- OpenAI
- SageMaker
- Settings Panel
- Testing Semantic Index
- Tool Authorizer
- Tools
- Show Remaining Articles ( 1 ) Collapse Articles
-
-
-
-
- Assembly Configs
- Audits
- Catalog Members
- Catalogs
- Debug Configs
- Delegated Requests
- Documents
- Event Generators
- Groups
- Images
- K8s Clusters
- K8s Installations
- K8s Workitems
- LLMs
- Logs
- Namespaces
- Nodes
- Organizations
- Procedures
- Profiles
- Projects
- Resource Definition
- Resource Events
- Resource Relationship Model
- Resource Security Model
- Rules
- Scheduled Events
- Secrets
- Semantic Indexes
- Service Connectors
- Services
- Sources
- StorageManagers
- TensorFlowModels
- Test Reports
- Test Suites
- Tests
- Tokens
- Topics
- TrackingRegions
- Types
- Users
- Vantiq Resources
- Videos
- Show Remaining Articles ( 29 ) Collapse Articles
-
- Before Rules
- Built-In Services
- Data Manipulation
- Data Model Declarations
- Declaring Packages
- Defining Remote Connections
- Distributed Processing
- Error Handling
- Event Sending
- External State
- Flow Control
- General Use Procedures
- In-Memory State Management
- Iteration
- Logging
- Operators
- Package Scoping and Name Resolution
- Packages
- Packages
- Persistent State
- Procedure Execution
- Procedures
- PROCESSED BY Clause
- Resource Definition
- RETURN
- Rules
- Services
- Syntax
- Type Specific Procedures
- VAIL Declarations
- VAIL Types
- Variables
- Show Remaining Articles ( 17 ) Collapse Articles
-
-
-
Articles
-
- How To Video Shorts: Client Layouts
- How To Video Shorts: AI Functions
- How To Video Shorts: Analytics and ComputeStatistics
- How To Video Shorts: Calling Procedures by Properties
- How To Video Shorts: Client CSS
- How To Video Shorts: Invite Other Users to Your Namespace
- How To Video Shorts: SplitByGroup
- How To Video Shorts: The Vantiq API
- How To Video Shorts: The Vantiq IDE
- How To Video Shorts: The Vantiq Version Control System
- How To Video Shorts: Using Generative AI in Applications
- How-To Video Shorts: Managing AI Conversations
- How-To Videos: AI Design Model Assistant
- How-To Videos: AI Documentation Search
- Production Applications Best Practices