IoTP Adaptor Developer Guide¶
OSLC Watson IoT Platform Integration
iotp-adaptor is an OSLC server that exposes IBM Watson IoT Platform resources as OSLC resources. This guide explains how the server was developed and integrated with IBM jazz.net applications.
Overview¶
The iotp-adaptor provides a comprehensive example of building an OSLC adaptor using Eclipse Lyo Designer and integrating it with IBM Continuous Engineering (CE) tools.
Key Resources: - User Guide: Installation, configuration, and usage - Source Code: Complete implementation on GitHub - Lyo Designer: Model-based development tool used
Development Approach¶
The adaptor was created using model-based development techniques:
- Eclipse Lyo Designer: Graphical modeling tool
- Code Generation: M2T templates generate OSLC server implementation
- Base Templates: Derived from OSLC4J Bugzilla sample application
OSLC Compliance and Integration Challenges¶
Generated Foundation¶
Lyo Designer creates an OSLC Core 2.0 compliant server with:
- ✅ OSLC resource capabilities
- ✅ Minimal Web UI for debugging
- ✅ Basic CRUD operations
Additional Integration Requirements¶
To integrate with IBM jazz.net applications, additional components are required:
Beyond Basic OSLC Compliance
The generated OSLC server needs significant enhancement for jazz.net integration:
Component | Purpose | Complexity |
---|---|---|
Root Services Document | Server discovery capabilities | Medium |
OAuth Consumer/Friend | Server-to-server authentication | High |
Artifact Container Associations | Project area linking | High |
Link Type Configuration | Application-specific linking | Medium |
Application-Specific Requirements | RDNG, RTC, RQM integration details | High |
TRS Provider | RELM and LQE contribution | High |
Developer Guide Sections¶
Environment and Setup¶
Section | Description | Complexity |
---|---|---|
Environment Setup | Eclipse development environment configuration | Beginner |
Toolchain Model | Watson IoT Platform OSLC domain model design | Intermediate |
Code Generation | Server implementation generation with Lyo Designer | Intermediate |
Core Implementation¶
Section | Description | Complexity |
---|---|---|
Exploring Generated Code | Project structure and key files overview | Beginner |
Implementing Domain Classes | Custom domain class implementation example | Intermediate |
JUnit Testing | OSLC CRUD operation testing | Intermediate |
Security and Authentication¶
Section | Description | Complexity |
---|---|---|
HTTPS and SSL Support | Secure connections and certificate management | Advanced |
Authentication | End-user login and server-to-server OAuth | Advanced |
Jazz.net Integration¶
Section | Description | Complexity |
---|---|---|
Root Services Document | Discovery capability implementation | Intermediate |
Consumer/Friend Connections | OAuth server relationships | Advanced |
Artifact Container Associations | Project area configuration | Advanced |
Delegated Dialogs | UI customization and embedding | Intermediate |
Advanced Features¶
Section | Description | Complexity |
---|---|---|
TRS Provider Implementation | Tracked Resource Set for data federation | Advanced |
Architecture Overview¶
graph TD
A[Watson IoT Platform] --> B[iotp-adaptor OSLC Server]
B --> C[RDNG - Requirements]
B --> D[RTC - Change Management]
B --> E[RQM - Quality Management]
B --> F[LQE - Lifecycle Query Engine]
B --> G[RELM - Lifecycle Management]
H[Lyo Designer Model] --> I[Code Generator]
I --> B
J[OAuth] --> B
K[TRS Provider] --> B
L[Root Services] --> B
Quick Start Path¶
For Beginners¶
- Environment Setup - Configure development environment
- Exploring Generated Code - Understand project structure
- Implementing Domain Classes - Add custom logic
For Integration Focus¶
- Authentication - Understand security model
- Consumer/Friend Connections - Establish server relationships
- Artifact Container Associations - Configure project linking
For Advanced Development¶
- Toolchain Model - Design domain models
- Code Generation - Generate server implementations
- TRS Provider Implementation - Implement data federation
Development Workflow¶
graph LR
A[Design Model] --> B[Generate Code]
B --> C[Implement Logic]
C --> D[Configure Security]
D --> E[Test Integration]
E --> F[Deploy Server]
G[Debug Issues] --> H[Update Model]
H --> B
E --> G
Key Technologies¶
Core Technologies¶
- Eclipse Lyo: OSLC development framework
- OSLC4J: Java-based OSLC implementation
- JAX-RS: RESTful web services
- Jersey: JAX-RS implementation
- Jena: RDF processing
Integration Technologies¶
- OAuth 1.0a: Authentication and authorization
- TRS (Tracked Resource Sets): Data federation
- Root Services: Service discovery
- LDAP: User authentication
IBM CE Applications¶
- Jazz Team Server (JTS): Central authentication and project management
- DOORS Next Generation (RDNG): Requirements management
- Rational Team Concert (RTC): Change and configuration management
- Rational Quality Manager (RQM): Test and quality management
- Lifecycle Query Engine (LQE): Cross-tool reporting and analytics
Learning Path Recommendations¶
Prerequisites¶
Required Knowledge
- Java development experience
- Understanding of REST APIs and HTTP
- Basic knowledge of RDF and linked data
- Familiarity with Eclipse IDE
Suggested Reading Order¶
- Foundation: Technical Foundations
- OSLC Basics: Services and Design Patterns
- Lyo Framework: Eclipse Lyo Overview
- This Guide: Follow sections based on your role and needs
Resources and References¶
OSLC Community¶
- OSLC Website: Official specifications and community
- OSLC Developer Guide: Comprehensive development guide
- OSLC Primer: Introduction to OSLC concepts
Eclipse Lyo¶
- Eclipse Lyo Project: Official project page
- Lyo Designer Wiki: Designer documentation
- Lyo Forums: Community support
Development Tools¶
- OSLC API Documentation: Swagger.io API specifications
- OSLC GitHub Organization: Source code and examples
- iotp-adaptor Project: Complete implementation example
Contributing to Documentation¶
Continuous Improvement
This documentation is under continuous development as we discover more about OSLC and jazz.net integration.
How to Contribute: - Email suggestions: Jim Amsden - GitHub Issues: Report problems or suggestions - Community Forums: Share experiences and ask questions
Areas needing contributions: - Additional integration examples - Error handling best practices - Performance optimization techniques - Alternative authentication methods
Next Steps¶
Choose your path based on your immediate needs:
Quick Exploration¶
Exploring Generated Code - Understand the codebase structure
Setup Development Environment¶
Environment Setup - Configure your development tools
Understand the Model¶
Toolchain Model - Learn about the domain design
Focus on Integration¶
Authentication - Start with security fundamentals
Ready to dive deeper? Choose a section from the developer guide based on your current needs and experience level.