Skip to content

Extendable Controllers Best Practices#

This section provides guidelines and recommendations for designing, implementing, and managing extendable controllers effectively.

Controller Design#

When designing extendable controllers, use inheritance for common functionality by creating base controllers with shared drivers and workflows that can be reused across multiple implementations. Keep hierarchies manageable by avoiding overly deep inheritance chains, as complex hierarchies can become difficult to maintain and troubleshoot. Ensure all new elements have unique names to avoid conflicts within the controller hierarchy.

Workflow Management#

Override inherited workflows sparingly, creating local copies only when truly necessary to maintain the benefits of inheritance. When you do override workflows, document your changes clearly to explain why the workflows were overridden and what modifications were made. Test thoroughly to verify that workflow modifications work correctly with inherited elements and don't break the inheritance chain functionality.

Export Strategy#

Choose your export strategy based on the target environment and deployment requirements. Use Single Export for deployment when deploying to systems with existing parent controllers, as this maintains dependency links and reduces file size. Use Full Tree Export for distribution when sharing complete solutions that need to be self-contained, including all parent controllers in the inheritance chain. Use Merged Export for standalone systems when inheritance relationships are not needed, creating a single controller with all functionality merged together.

Import Planning#

Proper planning is essential for successful import operations. Verify dependencies by ensuring all required parent controllers exist before importing single controllers, as missing dependencies will cause import failures. Plan version management carefully by considering how new versions will affect existing deployments and potential conflicts with current system configurations. Always test imports in a staging environment first to identify and resolve any issues before deploying to production systems.

Naming Conventions#

Establish clear naming conventions for your extendable controller hierarchy:

  • Parent Controllers: Use descriptive names that indicate their purpose (e.g., "BaseEquipmentController", "StandardPLCController")
  • Child Controllers: Include references to both the parent and specific functionality (e.g., "BaseEquipmentController_SECS", "StandardPLCController_Modbus")
  • Workflows: Ensure workflow names are unique across the entire inheritance chain
  • Drivers: Use descriptive names that don't conflict with parent driver names

Version Management#

Maintain version compatibility across inheritance chains to ensure all controllers in the hierarchy work together seamlessly. Document version dependencies clearly so that teams understand which versions are required for proper functionality. Test version upgrades in development environments before applying them to production systems to identify potential compatibility issues. Plan rollback strategies for failed upgrades to minimize system downtime and ensure quick recovery. Communicate version changes to dependent controller owners so they can plan and prepare for necessary updates.

Documentation Standards#

Document inheritance relationships clearly to help teams understand the controller hierarchy and dependencies. Maintain change logs for overridden workflows to track modifications and provide context for future maintenance. Provide clear rationale for design decisions to help future developers understand the reasoning behind specific implementations. Keep architecture diagrams updated to reflect current system structure and inheritance relationships. Document testing procedures for inheritance chains to ensure consistent validation approaches across all levels of the hierarchy.