The Warewolf Studio is used for designing Warewolf services and microservices, and administering local and remote Warewolf servers. It has been developed using the MVVM design pattern using a loosely coupled messaging architecture. The primary touch points in the studio can be found in the Dev2.Studio project as well as the Dev2.Studio.Core projects. Caliburn micro is used for messaging in addition to an internal messaging platform. The screenshot below outlines the various components that make up the studio. Each number on the screenshot corresponds to a sub topic below.
Responsibility: Connect to, maintain communication, add new servers and edit existing connections.
The connect control is defined in the Dev2.Studio project and using the MVVM design pattern. The connect control view model manages the UI interactions and also updates the UI based on server events. The business logic is handled by ConnectControlSingleton class defined in the Dev2.Studio.Core project. The singleton is also used by the Deploy view, the Security view and the Scheduler view.
The explorer is responsible for displaying the available resources to a user as a tree view. The main UI class is the ExplorerView which contains the XAML. The corresponding view model is called ExplorerViewModel and this handles user interaction, events and messages that are dispatched from the server or other UI components. The actual Tree view that is displayed by the explorer is found inside the NavigationViewModel class. Business logic and communication is handled, primarily, via the StudioResourceRepository, the NavigationViewModel and the EnvironmentRepository. The ExplorerItemModel class is responsible for individual resources and is a recursive data structure.
Work Surface – 3
The studio work surface hosts the various views that can be used to edit Warewolf services and administer Warewolf servers. Users can open management views and swap between the various opened views. The Work surface can host classes that inherit from BaseViewModel and IWorkSurfaceViewModel. The MainViewModel class is responsible for managing the various views.
The designer leverages Microsoft’s Workflow foundation to allow users to define Warewolf services. The main entry point is the WorkflowDesignerViewModel located in the Dev2.Studio project. It is responsible for
Tool Box – 4
The tool box is a WPF user control and displays all the connectors and tools available to a user. It is defined in the ToolboxUserControl class located in Dev2.Studio
Variable List – 5
The variable list displays all the variables that are defined in the currently opened service. It is used to administer whether Service inputs and outputs and remove unused variables. The variable list for a given service is a visual representation of the DataList shape for that service. The variable list is defined in the DataListView and the DatalistViewModel classes in the Dev2.Studio project. The variable list is automatically updated and refreshed using messages from the design surface so that it is always in sync with Activities in the designer
Debug Output Window – 6
The debug window is used to validate the correctness of workflows by displaying the debug output from the server. The studio debug output window listens to messages from the server and displays them in a WPF tree view. It is defined in the DebugOutputView and the DebugOutput Viewmodel classes in the Dev2.Studio project.