SyteLine .NET Software Developer Kit (SDK)
The contents of SyteLine 10’s SDK consists of a Visual Studio solution file that contains many .NET projects having classes and references to core Mongoose and SyteLine functionality. As code is migrated from SyteLine application databases from stored procedures, functions, and triggers, these classes and references represent SyteLine application logic. Most will have source code available for extensibility purposes while others will be referenced as read-only.
SyteLine’s SDK is organized into solution folders and .NET projects whose names indicate their purpose or functional area. C# is the preferred .NET language and will be the target of current and future code migration efforts. Some VB.NET projects will remain from previous versions and are planned to be eventually converted to C#.
Developers are likely to discover it is possible to change and compile SyteLine code within each project giving the impression personalizations may co-exist with SyteLine code within these projects. However, this practice is discouraged for extensibility and is enforced using Mongoose Access As control of SyteLine and Mongoose assemblies (also known as dynamic link libraries, dlls). Instead, it is the responsibility of developers to compile code using the dedicated Custom, or other projects. The resulting assemblies can be imported into the Mongoose framework with the IDO Custom Assemblies form having an Access As value of ue_ or NULL (no value) distinguishing these from Infor’s.
SyteLine intends to publish a list of database objects targeted for C# conversion during each development cycle or General Availability (GA) build. The targeted cadence for new GA builds is monthly but could differ based on need or complexity. In addition to the list of converted objects, SyteLine intends to publish a pre-GA SDK to serve as a beta-release of the next GA build. As such, its contents are subject to change and should not be considered released. Its purpose is to provide visibility of code changes to assist customer extensibility efforts.
See KB 2146483 for details associated with pre-GA process.
Common throughout SyteLine’s SDK contents are .NET classes. To establish a baseline of terms, consider these definitions:
Application Class: term used to represent C# application class code containing SyteLine logic. Also referred to as app class. This class aligns very closely with T-SQL stored procedures. When stored procedures are converted, their logic typically resides in app classes.
Interface: term used to represent a C# application class interface responsible to define class signatures.
Extension Class: C# Mongoose entry point of IDO Methods.
Composition Root class: Composition Root Class is a class where base product registers its classes as "services". This class is used by a service provider for composing and returning an instance of an object along with all of its dependencies injected into it.
Folder Structure for SyteLine 10 Solution SDK
- Mongoose.submod\Setup\WinStudio (This folder contains dependent Mongoose binaries)
- nuget_pkgs (This folder contains dependent files for writing metrics to a file via the Mongoose logging tools)
- Utilities\Delivery (This folder contains dependent binaries for SyteLine's integration with CPQ)
- ObjectStudio\SyteLineDev\ExtensionClasses (This folder contains SyteLine 10 solution file: ExtensionClasses.sln, nuget.config: configuration file describing NuGet repositories with which NuGet should be augmented for its package searching, and SyteLine 10 .NET source code)
Usage steps
- Create local working directory, C:\<local working directory>. Example: C:\Development\SyteLine10SolutionSDK
- Unzip the SyteLine10SolutionSDK into that folder. It is recommended that extensibility developers implement a version control system to manage local development. There are many commercially-available packages for this purpose. As a result, Infor cannot support local version control implementations related to SyteLine SDK distribution.
- Open C:\<local working directory>\ObjectStudio\SyteLineDev\ExtensionClasses\ExtensionClasses.sln within Visual Studio 2019
- Build solution.