diff --git a/docs/en/tutorials/modular-crm/images/abp-studio-graph-build.png b/docs/en/tutorials/modular-crm/images/abp-studio-graph-build.png new file mode 100644 index 0000000000..0baa8a8c89 Binary files /dev/null and b/docs/en/tutorials/modular-crm/images/abp-studio-graph-build.png differ diff --git a/docs/en/tutorials/modular-crm/images/abp-studio-solution-runner-initial-product-page.png b/docs/en/tutorials/modular-crm/images/abp-studio-solution-runner-initial-product-page.png new file mode 100644 index 0000000000..2aedf45295 Binary files /dev/null and b/docs/en/tutorials/modular-crm/images/abp-studio-solution-runner-initial-product-page.png differ diff --git a/docs/en/tutorials/modular-crm/index.md b/docs/en/tutorials/modular-crm/index.md index e6a0bb42ec..8cc6a210c6 100644 --- a/docs/en/tutorials/modular-crm/index.md +++ b/docs/en/tutorials/modular-crm/index.md @@ -7,7 +7,8 @@ ABP provides a great infrastructure and tooling to build modular software soluti This tutorial is organized as the following parts: * [Part 01: Creating the initial solution](part-01.md) -* [Part 02: Building the products module](part-02.md) +* [Part 02: Creating the initial products module](part-02.md) +* [Part 03: Building the products module](part-03.md) * ... ## Download the Source Code diff --git a/docs/en/tutorials/modular-crm/part-01.md b/docs/en/tutorials/modular-crm/part-01.md index 8304abbaa1..74116fd8f4 100644 --- a/docs/en/tutorials/modular-crm/part-01.md +++ b/docs/en/tutorials/modular-crm/part-01.md @@ -22,4 +22,6 @@ Initially, you see a `ModularCrm` solution and a `ModularCrm` module under that ![solution-explorer-modular-crm-expanded](images/solution-explorer-modular-crm-expanded.png) -We've created the initial layered monolith solution. In the next part, we will learn how to create an application module, build functionality inside it and install it to the main application. \ No newline at end of file +## Summary + +We've created the initial layered monolith solution. In the next part, we will learn how to create a new application module and install it to the main application. \ No newline at end of file diff --git a/docs/en/tutorials/modular-crm/part-02.md b/docs/en/tutorials/modular-crm/part-02.md index 930c2a149a..2d64ee0c2e 100644 --- a/docs/en/tutorials/modular-crm/part-02.md +++ b/docs/en/tutorials/modular-crm/part-02.md @@ -1,4 +1,4 @@ -# Building the Products Module +# Creating the Initial Products Module In this part, you will build a new module for product management and install it to the main CRM application. @@ -16,7 +16,7 @@ Create `main` and `modules` folder using the *New Folder* command, then move the ![abp-studio-solution-explorer-with-folders](images/abp-studio-solution-explorer-with-folders.png) -## Creating the Products Module +## Creating The Module There are two module templates provided by ABP Studio: @@ -81,6 +81,8 @@ As seen in the preceding figure, the `ModularCrm.Product` solution consists of s A module does not contain an executable application inside. The `Modular.Products.Web` project is just a class library project, not an executable web application. A module should be installed to an executable application in order to run it. +> **Ensure that the web application is not running in [Solution Runner](../../studio/running-applications.md) or in your IDE. Installing a module to a running application will produce errors.** + The product module has no relation to the main application yet. Right-click to the `ModularCrm` module (inside the `main` folder) and select the *Import Module* command: ![abp-studio-import-module](images/abp-studio-import-module.png) @@ -91,8 +93,32 @@ The *Import Module* command opens a dialog as shown below: Select the `ModularCrm.Products` module and check the *Install this module* option. If you don't check that option, it only imports the module but doesn't setup project dependencies. Importing a module without installation can be used to manually setup your project dependencies. Here, we want to make it automatically, so checking the *Install this module* option. -When you click the OK button, ABP Studio opens the *Install Module* dialog: +When you click the *OK* button, ABP Studio opens the *Install Module* dialog: ![abp-studio-module-installation-dialog](images/abp-studio-module-installation-dialog.png) -This dialog simplifies installing a multi-layer module to a multi-layer application. \ No newline at end of file +This dialog simplifies installing a multi-layer module to a multi-layer application. It automatically determines which package of the `ModularCrm.Products` module should be installed to which package of the main application. For example, the `ModularCrm.Products.Domain` package is installed to the `ModularCrm.Domain` package. In that way, you can use domain objects ([entities](../../framework/architecture/domain-driven-design/entities.md), [repositories](../../framework/architecture/domain-driven-design/repositories.md), ...) of the products module from the domain layer of your main application. + +The default package match is good for this tutorial, so you can click the *OK* button to proceed. + +### Building the Main Application + +After the installation, build the entire solution by right-clicking to the `ModularCrm` module (under the `main` folder) and select the *Dotnet CLI* -> *Graph Build* command: + +![abp-studio-graph-build](images/abp-studio-graph-build.png) + +Graph Build is a dotnet CLI command that recursively build all the referenced dotnet projects even if they are not a part of the root solution. + +> While developing multi-module solutions with ABP Studio, you may need to perform *Graph Build* on the root/main module if you made changes in the depending modules. + +### Run the Main Application + +Open the *Solution Runner* panel, click the *Play* button (near to the solution root), right-click the `ModularCrm.Web` application and select the *Browse* command. It will open the web application in the built-in browser. Then you can navigate to the *Products* page on the main menu of the application to see the Products page that is coming from the `ModularCrm.Products` module: + +![abp-studio-solution-runner-initial-product-page](images/abp-studio-solution-runner-initial-product-page.png) + +## Summary + +In this part, we've created a new module to manage products in our modular application. Then we installed the new module to the main application and run the solution to test if it has successfully installed. + +In the next part, you will learn how to create entities, services and a basic user interface for the products module. \ No newline at end of file diff --git a/docs/en/tutorials/modular-crm/part-03.md b/docs/en/tutorials/modular-crm/part-03.md new file mode 100644 index 0000000000..6875c49330 --- /dev/null +++ b/docs/en/tutorials/modular-crm/part-03.md @@ -0,0 +1,3 @@ +# Building the Products Module + +TODO \ No newline at end of file