NexJ Logo

Platform - MODL

NexJ's products, modules and services are typically written in and powered by MODL and this is how some of the design-time customization of your solutions are enabled. 

MODL is an enterprise application development platform. It has been running at scale since 2006 in high volume, highly complex, and highly integrated environments. Written in Java and JavaScript, it reduces the time and effort required to design, configure, deploy, and maintain scalable, flexible applications in the enterprise. Application Service designs are expressed and modeled in NexJ Studio with the Model Description Language and are published directly to MODL Server without code generation. The model (aka design) IS the application, so you always know exactly what is in production.

The following diagram shows some of the moving parts used in building application services.

This image shows the design environment - NexJ Studio, the design language - Model Description Language, and the execution environment - MODL Server. NexJ Studio is where application services are expressed in a model using the Model Description Language. The model is deployed to the MODL Server. Here we run the business logic, connect to existing data and applications through persistence and integration and deliver end-user functionality on any of the supported client platforms.

Model Description Language - Application layers and the Model Description Language

Designs are declared in Models with the Model Description Language. It is conceptually similar to how WSDL (Web Services Description Language) describes web services, but instead it describes designs for entire enterprise applications. It works well with source code control and large teams since it is just XML. It includes concepts for business logic, integration, persistence, presentation, security, testing, and deployment designs. The language is declarative - accelerating development by describing what the application will do, rather than how - and it fully documents the system design while reflecting exactly what is in production.

<Class description="Agents are best described as NLU (Natural Language Understanding) modules determining intent and entities.">
   <Attributes>
      <Attribute name="name" type="string"/>
      <Attribute name="description" type="string"/>
      <Attribute name="type" type="string"/>
      <Attribute name="icon" type="string"/>
      <Attribute collection="true" name="intents" reverse="agent" type="bot:Intent"/>
      <Attribute name="clientToken" type="string" value="(@ nlpStrategy clientToken)"/>
      <Attribute name="devToken" type="string" value="(@ nlpStrategy developerToken)&#10;"/>
      <Attribute collection="true" name="conversations" reverse="agent" type="bot:Conversation"/>
      <Attribute name="nlpStrategy" reverse="agent" type="bot:NLP"/>
      <Attribute collection="true" name="sources" reverse="agent" type="bot:Source"/>
   </Attributes>
</Class>

A sample declaration of a Class element


Design Environment - NexJ Studio

NexJ Studio is simply the editor for your applications along with tools to design, build, and run application services.

Execution Environment - Model Server

NexJ Model Server encapsulates NexJ Systems software development best practices based on an extensive set of enterprise application architecture patterns and services. Written in Java and JavaScript, it runs the applications (models) built in NexJ Studio directly either on-premise or through cloud deployment with K8 support. Model Server has proven performance at scale for highly integrated applications. It provides a modern, responsive user experience with HTML5, CSS3, Material Design, and excellent interoperability. With it, applications support extensive APIs including REST, Swagger, JSON, XML, and versioned web services. Model Server fully supports industry operational monitoring and control as well as flexible persistence through services such as MSSQL, Oracle, and DB2. Being Java-based, it supports big data integration with services such as Hadoop, Spark, and acumulo.