Difference between revisions of "Best Practice for Designing a Rifidi APP"

From RifidiWiki

Jump to: navigation, search
(Design)
 
(15 intermediate revisions by the same user not shown)
Line 9: Line 9:
 
==Problems to be solved==
 
==Problems to be solved==
 
Once you have a clearer understanding of the Goal then ask your self what problems are you looking to solve such as Asset Tracking, Inventory Control, Inventory Management, Automation of a business process through sensors/RFID, Work in Progress (WIP). Defnitions of these can be found in the business solutions offered by Transcends using the Rifidi Platform [http://www.transcends.co/solutions/business-solutions Transcends Sensor Business Solutions]
 
Once you have a clearer understanding of the Goal then ask your self what problems are you looking to solve such as Asset Tracking, Inventory Control, Inventory Management, Automation of a business process through sensors/RFID, Work in Progress (WIP). Defnitions of these can be found in the business solutions offered by Transcends using the Rifidi Platform [http://www.transcends.co/solutions/business-solutions Transcends Sensor Business Solutions]
 +
 +
==Setup==
 +
* Ensure you have setup your Rifidi development environment  - [[Edge_Server_Development_Environment | Edge_Server_Development_Environment]]
  
 
==Design==
 
==Design==
 +
 +
 +
*Design Framework Overview
 +
 +
**Application properties are used to set Global (for a application group) and Application specific prioperties such as timeouts, database connection strings etc..
 +
**Applications use reader zones - Defined in readzone - proeprties file
 +
**Read zone properties map to one to many readers in rifidi.xml
 +
**Readers in defined rifidi.xml (or using workbench UI) map to the physical reader/sensor(s)
  
 
*What Hardware (readers and sensors) are you looking to use?
 
*What Hardware (readers and sensors) are you looking to use?
 
**Do these sensors come out of the box with Rifidi? (LLRP, Motorola, Impinj, Alien, ThingMagic, CSL, Thinkify, any handheld vis Generic Reader Adapter, Opticon Bar Code)
 
**Do these sensors come out of the box with Rifidi? (LLRP, Motorola, Impinj, Alien, ThingMagic, CSL, Thinkify, any handheld vis Generic Reader Adapter, Opticon Bar Code)
***Yes - Following the user's guide [[User%27s_Guide]] and/or [http://www.transcends.co/www/docs/Rifidi_Edge_Server_Quick_Start_Guide_2.1.pdf quick start guide ] the sensor/reader adapter can be configured to start reading
+
***Yes - Follow the user's guide [[User%27s_Guide]] and/or [http://www.transcends.co/www/docs/Rifidi_Edge_Server_Quick_Start_Guide_2.1.pdf quick start guide ] the sensor/reader adapter can be configured to start reading
***No - One can be developed using the Sensor API  - [[How_to_create_a_sensor_plugin | How_to_create_a_sensor_plugin ]]
+
***No - One can be developed using the Sensor API  - [[How_to_create_a_sensor_plugin | How_to_create_a_sensor_plugin ]] - Also refer to existing sensor adapter source code as examples
 
*The Application Design - Basically a Rifidi APP has access to any configured sensor/reader
 
*The Application Design - Basically a Rifidi APP has access to any configured sensor/reader
 
**1 What are you integrating with? (Such as MySQL database, Messaging Queue, ERP/CRM system via WebServices, Cloud/AWS)
 
**1 What are you integrating with? (Such as MySQL database, Messaging Queue, ERP/CRM system via WebServices, Cloud/AWS)
 
***Example Jumpstart Rifidi Applications for those integrations mentioned can be found here [[Development_Jumpstarts | Rifidi APP Jumpstarts]]
 
***Example Jumpstart Rifidi Applications for those integrations mentioned can be found here [[Development_Jumpstarts | Rifidi APP Jumpstarts]]
 
**2 Are there any library's being used NOT included by default in Rifidi? (such as database drivers (MYSQL is provided by default), cloud drivers etc..) [[Adding_Third_Party_Libraries | How to Add Third_Party_Libraries]]
 
**2 Are there any library's being used NOT included by default in Rifidi? (such as database drivers (MYSQL is provided by default), cloud drivers etc..) [[Adding_Third_Party_Libraries | How to Add Third_Party_Libraries]]
**
+
**3 What are the sensor business rules such as asset have arrived/departed, a group of tags have been identified, which asset is seen based on signal (RSSI) strength  - An example application for capturing which a asset arrived can be found in the [[HelloWorld_App_Jumpstart | HelloWorld Application]].
**3 What are the sensor business rules such as asset have arrived/departed, a group of tags have been identified, which asset is seen based on signal (RSSI) strength  - An example application for capturing has a asset arrived can be found in the [[HelloWorld_App_Jumpstart | HelloWorld Application]].
+
 
***Are the business rules out of the box via Rifidi Services?
 
***Are the business rules out of the box via Rifidi Services?
 
***Yes - A list of out of the box Rifidi Services addressing these design challenges can be found in the [[Developer%27s_Guide | Developer's guide] or [[Rifidi_Services_Jumpstart]]
 
***Yes - A list of out of the box Rifidi Services addressing these design challenges can be found in the [[Developer%27s_Guide | Developer's guide] or [[Rifidi_Services_Jumpstart]]
 
***No - A custom business rule can be developed using Esper (Esper is a trademark of EsperTech Inc) An example of custom Esper to create a work in progress business rule can be found in the [[Northwind_Example_Application_-_Advanced_Development_Topic | Northwind Example Application]] - Note: A more advanced topic once familiar with developing a basic application such as [[HelloWorld_App_Jumpstart | HelloWorld Application]].
 
***No - A custom business rule can be developed using Esper (Esper is a trademark of EsperTech Inc) An example of custom Esper to create a work in progress business rule can be found in the [[Northwind_Example_Application_-_Advanced_Development_Topic | Northwind Example Application]] - Note: A more advanced topic once familiar with developing a basic application such as [[HelloWorld_App_Jumpstart | HelloWorld Application]].
**2 Define the read zones required - This defines the relations the readers/sensors have to each other within the application such as 1 to 1 relationship, 1 to many, many to 1 (Note The readzone configurations also support regular expressions in the event you use a naming convention when defining read adapters to potentially represent relationships - How to define readzones can be found in the [[Developer%27s_Guide | Developer's guide]
+
**4 Define the read zones required   - This defines the relations the readers/sensors have to each other within the application such as 1 to 1 relationship, 1 to many, many to 1 (Note The readzone configurations also support regular expressions in the event you use a naming convention when defining read adapters to potentially represent relationships - How to define readzones can be found in the [[Developer%27s_Guide | Developer's guide]] Note: The serviceid for a given reader factory adapter instance in the rifidi.xml is used to map to a readerID in teh readzone property files
**3 Are there any application properties required? Such as database parameters, Queue Names, Webservice Endpoints/URL, Rifidi services parameters (timeouts, thresholds) -Note: All teh Rifidi Jumpstart Applications provide examples on how these are defined and used within an application
+
 
*Other Topics (Monitoring/Logging/Management)
+
**5 Are there any application properties required? Such as database parameters, Queue Names, Webservice Endpoints/URL, Rifidi services parameters (timeouts, thresholds) -Note: All teh Rifidi Jumpstart Applications provide examples on how these are defined and used within an application
** Is there a need to Dynamically/Remotely manage the Edge Server such as stopping/starting sessions, configuring sensors, managing applications etc.. A list of how to use these Edge management services can be found [[Edge_Management | Edge Management]]
+
 
** Is there a need to Monitor the Edge Server such as JVM, Configured Readers/Sensors, OSGI, Applications (anything exposed via JMX). A list of how to use these Edge management services can be found [[Edge_Monitoring | Edge Monitoring]]
+
==Other Topics (Monitoring/Logging/Management/Deployment)==
** Any additional logging needs can be configured here [[Use_org.rifidi.logging | Rifidi Logging Configuration]]
+
* Is there a need to Dynamically/Remotely manage the Edge Server such as stopping/starting sessions, configuring sensors, managing applications etc.. A list of how to use these Edge management services can be found [[Edge_Management | Edge Management]]
** Are there any OSGI Bundles you need to add to Edge Server required by your application?  such as the Oracle database driver [[How_to_add_OSGI_Bundles| How_to_add_OSGI_Bundles]]
+
* Is there a need to Monitor the Edge Server such as JVM, Configured Readers/Sensors, OSGI, Applications (anything exposed via JMX). A list of how to use these Edge management services can be found [[Edge_Monitoring | Edge Monitoring]]
 +
* Any additional logging needs can be configured here [[Use_org.rifidi.logging | Rifidi Logging Configuration]]
 +
* Any changes to Edger Server configuration such as changing default port, RMI, production mode [[Edge_Server_Configuration | Edge_Server_Configuration]]
 +
* Are there any OSGI Bundles you need to add to Edge Server required by your application?  such as the Oracle database driver [[How_to_add_OSGI_Bundles| How_to_add_OSGI_Bundles]]
 +
* Performance Tuning Tips [[Performance_Tuning_Tips |Performance_Tuning_Tips]]
 +
* Complete steps to export and deploy a app you designed/developed [[How_to_export_your_custom_Rifidi_application| How_to_export_your_custom_Rifidi_application]]

Latest revision as of 18:45, 5 September 2014

Here is an overview on the best practices for How to Approach designing a Rifidi Application

The Goal

First ask your self what is the goal of the application such as automation of a business process, increased productivity/efficiency, tracability of an asset, security, visibility into the supply chain etc..


Problems to be solved

Once you have a clearer understanding of the Goal then ask your self what problems are you looking to solve such as Asset Tracking, Inventory Control, Inventory Management, Automation of a business process through sensors/RFID, Work in Progress (WIP). Defnitions of these can be found in the business solutions offered by Transcends using the Rifidi Platform Transcends Sensor Business Solutions

Setup

Design

  • Design Framework Overview
    • Application properties are used to set Global (for a application group) and Application specific prioperties such as timeouts, database connection strings etc..
    • Applications use reader zones - Defined in readzone - proeprties file
    • Read zone properties map to one to many readers in rifidi.xml
    • Readers in defined rifidi.xml (or using workbench UI) map to the physical reader/sensor(s)
  • What Hardware (readers and sensors) are you looking to use?
    • Do these sensors come out of the box with Rifidi? (LLRP, Motorola, Impinj, Alien, ThingMagic, CSL, Thinkify, any handheld vis Generic Reader Adapter, Opticon Bar Code)
  • The Application Design - Basically a Rifidi APP has access to any configured sensor/reader
    • 1 What are you integrating with? (Such as MySQL database, Messaging Queue, ERP/CRM system via WebServices, Cloud/AWS)
      • Example Jumpstart Rifidi Applications for those integrations mentioned can be found here Rifidi APP Jumpstarts
    • 2 Are there any library's being used NOT included by default in Rifidi? (such as database drivers (MYSQL is provided by default), cloud drivers etc..) How to Add Third_Party_Libraries
    • 3 What are the sensor business rules such as asset have arrived/departed, a group of tags have been identified, which asset is seen based on signal (RSSI) strength - An example application for capturing which a asset arrived can be found in the HelloWorld Application.
      • Are the business rules out of the box via Rifidi Services?
      • Yes - A list of out of the box Rifidi Services addressing these design challenges can be found in the [[Developer's_Guide | Developer's guide] or Rifidi_Services_Jumpstart
      • No - A custom business rule can be developed using Esper (Esper is a trademark of EsperTech Inc) An example of custom Esper to create a work in progress business rule can be found in the Northwind Example Application - Note: A more advanced topic once familiar with developing a basic application such as HelloWorld Application.
    • 4 Define the read zones required - This defines the relations the readers/sensors have to each other within the application such as 1 to 1 relationship, 1 to many, many to 1 (Note The readzone configurations also support regular expressions in the event you use a naming convention when defining read adapters to potentially represent relationships - How to define readzones can be found in the Developer's guide Note: The serviceid for a given reader factory adapter instance in the rifidi.xml is used to map to a readerID in teh readzone property files
    • 5 Are there any application properties required? Such as database parameters, Queue Names, Webservice Endpoints/URL, Rifidi services parameters (timeouts, thresholds) -Note: All teh Rifidi Jumpstart Applications provide examples on how these are defined and used within an application

Other Topics (Monitoring/Logging/Management/Deployment)

  • Is there a need to Dynamically/Remotely manage the Edge Server such as stopping/starting sessions, configuring sensors, managing applications etc.. A list of how to use these Edge management services can be found Edge Management
  • Is there a need to Monitor the Edge Server such as JVM, Configured Readers/Sensors, OSGI, Applications (anything exposed via JMX). A list of how to use these Edge management services can be found Edge Monitoring
  • Any additional logging needs can be configured here Rifidi Logging Configuration
  • Any changes to Edger Server configuration such as changing default port, RMI, production mode Edge_Server_Configuration
  • Are there any OSGI Bundles you need to add to Edge Server required by your application? such as the Oracle database driver How_to_add_OSGI_Bundles
  • Performance Tuning Tips Performance_Tuning_Tips
  • Complete steps to export and deploy a app you designed/developed How_to_export_your_custom_Rifidi_application
Personal tools