Skip to content

Commit

Permalink
Added Application Modelling Category. Added groupings to the Integrat…
Browse files Browse the repository at this point in the history
…ion Guides
  • Loading branch information
KindsonTheGenius committed May 2, 2023
1 parent b327cb0 commit cc3ee3b
Show file tree
Hide file tree
Showing 27 changed files with 274 additions and 55 deletions.
2 changes: 1 addition & 1 deletion docs/code-of-conduct.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: code-of-conduct
title: Contributor Covenant Code of Conduct
title: Code of Conduct
---

# Contributor Covenant Code of Conduct
Expand Down
2 changes: 1 addition & 1 deletion docs/codec-docs.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: codec-docs
title: JSON serialization for Scala
title: Scala JSON Serialization
---

# JSON serialization support for generated Scala classes
Expand Down
2 changes: 1 addition & 1 deletion docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
id: contribution-and-governance-policies
---

# Morphir Contribution and Governance Policies
# Governance Policies

This document describes the contribution process and governance policies of the FINOS Morphir project. The project is also governed by the Linux Foundation Antitrust Policy, and the FINOS IP Policy, Code of Conduct, Collaborative Principles, and Meeting Procedures.

Expand Down
1 change: 1 addition & 0 deletions docs/contribution-guide-index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
id: contributing-to-morphir
title: Contributing to Morphir
---

#Contributing to the Morphir Ecosystem
Expand Down
9 changes: 9 additions & 0 deletions docs/faqs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
id: faqs
title: FAQs
---

# Frequently Asked Questions

### How Do I Generate the Scala Codecs?
Run the the `morphir gen` command with the -s flag
2 changes: 1 addition & 1 deletion docs/insight-readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
id: insight-api-guide
---

#Insight API Guide
# Insight API Guide
The purpose of this document is how we can use Insight API into any UI.

## Prerequisites
Expand Down
2 changes: 1 addition & 1 deletion docs/installation-and-usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
id: installation-and-usage
---

#Morphir Tools Installation and Usage
#Morphir Tools

Morphir is provided as a set of command-line tools that are distribution through the NPM packaging system.
The current version is:
Expand Down
120 changes: 120 additions & 0 deletions docs/introduction-to-morphir.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
---
id: introduction-to-morphir
title: Introducing Morphir
---

[![FINOS - Incubating](https://cdn.jsdelivr.net/gh/finos/contrib-toolbox@master/images/badge-incubating.svg)](https://finosfoundation.atlassian.net/wiki/display/FINOS/Incubating)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6526/badge)](https://bestpractices.coreinfrastructure.org/projects/6526)
<!-- [<img src="https://img.shields.io/badge/slack-@finos/morphir-green.svg?logo=slack">](https://finos-lf.slack.com/messages/morphir/) -->

# Morphir

Morphir is a library of tools that works to capture business logic as data.

For the first time, business logic can be shared, stored, translated and visualised, all with the reliability of standardisation ensured in the Morphir framework.

## What is it?

A set of tools for integrating technologies. Morphir is composed of a library of tools that facilitate the digitisation of business logic into multiple different languages & platforms. The Morphir framework is unique too in that facilities elements of automation and conversion that were previously unavailable in the field of finance-tech.

## Why is it important?

Makes business logic portable. Business logic digitised provides distinct advantages: capacity for movement across departments and fields & the ability to be converted to new languages and applications.

## How does it work?

Defines a standard format for storing and sharing business logic. A clear set of standards and format is in-place from the input/output, allowing for coherent structure.

## What are the benefits?

### ✔️ Eliminates technical debt risk

> _Refactoring code libraries is often a harmful and time-sensitive issue for businesses, Morphir ensure the standards introduced from input eliminate delays at deployment._
### ✔️ Increases agility

> _Adaptability and usability are key concepts of the Morphir framework, business logic can now move with the code, be easily understood and adopted, in an ever-developing eco-system._
### ✔️ Ensures correctness

> _Certifying that specified functions behave as intended from input to output is assured through the Morphir library / tool chain._
### ✔️ Disseminates information through automation

> _Morphir’s automated processing helps disseminate information which otherwise may not be understood or shared at all, a useful tool when brining elements of business logic to conversation outside of its immediate audience (i.e developers)._

## Documentation
If you want to start using Morphir, start with the [Documentation](docs/).

## The Morphir Projects
Morphir consists of a few projects based on the features they provide.

### Core Morphir Projects
- **[morphir (this project)](https://github.com/finos/morphir/)** - The umbrella project
- **[morphir-elm](https://github.com/finos/morphir-elm)** - Contains most of the core morphir functionality, including:
- The definition of the IR
- The Elm compiler for authoring morphir applications in Elm
- The morphir visualization components and developer tools
- The Scala, JSON Schema, TypeScript, TypeSpec (Cadl), cypher, semantic, and more backend processors.
- **[morphir-jvm](https://github.com/finos/morphir)** - Supporting SDK and packaging for running morphir on the JVM.
- **[morphir-examples](https://github.com/finos/morphir-examples)** - A whole lot of examples.

### Incubator Morphir Projects
- **[morphir-scala](https://github.com/finos/morphir-scala)** - Tight integration with Scala for authoring, execution, and writing tools.
- **[morphir-bosque](https://github.com/finos/morphir-bosque)** - Integration with the Bosque language.
- **[morphir-dotnet](https://github.com/finos/morphir-dotnet)** - Integration with .NET via F#.


## Other Resources
[List of media](./media.md)


### Further reading

| Introduction & Background | Using Morphir | Applicability |
|:----------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------|
| [Resource Centre](https://resources.finos.org/morphir/) | [What Makes a Good Model](./what-makes-a-good-domain-model.md) | [Sharing Business Logic Across Application Boundaries](./shared_logic_modeling.md) |
| [Background](./background.md) | [Development Automation (Dev Bots)](./dev-bots.md) | [Regulatory Technology](./regtech-modeling.md) |
| [Community](./morphir-community.md) | [Modeling an Application](./application-modeling.md) | |
| [What's it all about?](./whats-it-about.md) | [Modeling Decision Tables](https://github.com/finos/morphir-examples/tree/master/src/Morphir/Sample/Rules) | |
| [Why we use Functional Programming?](./why-functional-programming.md) | [Modeling for database developers](./modeling-for-database-developers.md) |

## Roadmap

List the roadmap steps; alternatively link the Confluence Wiki page where the project roadmap is published.

1. Enhanced Scala support
2. Further enhancements for Application modeling with Dapr and Spring Boot.
3. Support for Microsoft's Bosque language for defining models.
4. Modeling queries and aggregations across databases and event processing.

## Contributing

1. Fork it (<https://github.com/finos/morphir/fork>)
2. Create your feature branch (`git checkout -b feature/fooBar`)
3. Read our [contribution guidelines](.github/CONTRIBUTING.md) and [Community Code of Conduct](https://www.finos.org/code-of-conduct)
4. Commit your changes (`git commit -am 'Add some fooBar'`)
5. Push to the branch (`git push origin feature/fooBar`)
6. Create a new Pull Request

_NOTE:_ Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool. Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA.

_Need an ICLA? Unsure if you are covered under an existing CCLA? Email [help@finos.org](mailto:help@finos.org)_

## Join the Morphir Slack Channel

Join Morphir on the FINOS Slack by signing up [here](https://finos-lf.slack.com/).
The Morphir channel on Slack is found directly [here](https://finos-lf.slack.com/messages/morphir/)

<!-- [<img src="https://img.shields.io/badge/slack-@finos/morphir-green.svg?logo=slack">](https://finos-lf.slack.com/messages/morphir/) -->

Reach out to help@finos.org for any issues when joining Morphir on the FINOS Slack.

## License

Copyright 2022 FINOS

Distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).

SPDX-License-Identifier: [Apache-2.0](https://spdx.org/licenses/Apache-2.0)
1 change: 1 addition & 0 deletions docs/json-schema-backend-config-test-plan.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
id: json-schema-backend-test2
tile: Config. Test plan
---

# Json SChema Backend Config Test Plan
Expand Down
1 change: 1 addition & 0 deletions docs/json-schema-backend-testplan.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
id: json-schema-backend-test
title: Backend Test Specification
---

# Json Schema Backend Test Specification
Expand Down
1 change: 1 addition & 0 deletions docs/json-schema-enabled developers guide.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
id: json-schema-enabled-decorator
title: json-schema-enabled Decorator
---

# The json-schema-enabled Decorator Developer's Guide
Expand Down
2 changes: 1 addition & 1 deletion docs/modeling-for-database-developers.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: modeling-database-developers
title: Modeling for database developers
title: Databases Modeling
---

# Modeling for database developers
Expand Down
27 changes: 27 additions & 0 deletions docs/morphir-ir.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
id: morphir-ir
---

# The Morphir IR

The `Morphir.IR` module defines a type-safe API to work with Morphir's intermediate representation. The module
structure follows the structure of the IR. Here's a list of concepts in a top-down approach:

- [Distribution](https://package.elm-lang.org/packages/finos/morphir-elm/latest/Morphir-IR-Distribution) is the output
of `morphir-elm make`. It represents a whole package with all of its dependencies.
- [Package](https://package.elm-lang.org/packages/finos/morphir-elm/latest/Morphir-IR-Package) represents a set of
modules that are versioned together.
- [Module](https://package.elm-lang.org/packages/finos/morphir-elm/latest/Morphir-IR-Module) is a container
to group types and values.
- [Types](https://package.elm-lang.org/packages/finos/morphir-elm/latest/Morphir-IR-Type) allow you to describe
your domain model.
- [Values](https://package.elm-lang.org/packages/finos/morphir-elm/latest/Morphir-IR-Value) allows you to
describe your business logic.
- [Names](https://package.elm-lang.org/packages/finos/morphir-elm/latest/Morphir-IR-Name) provide a naming
convention agnostic representation for all nodes that can be named: types, values, modules and packages. Names can be
composed into hierarchies:
- [path](https://package.elm-lang.org/packages/finos/morphir-elm/latest/Morphir-IR-Path) is a list of names
- [qualifield name](https://package.elm-lang.org/packages/finos/morphir-elm/latest/Morphir-IR-QName) is a module path with a local name
- [fully-qualifield name](https://package.elm-lang.org/packages/finos/morphir-elm/latest/Morphir-IR-FQName) is a package path with a qualified name
- [AccessControlled](https://package.elm-lang.org/packages/finos/morphir-elm/latest/Morphir-IR-AccessControlled)
is a utility to define visibility constraints for modules, types and values
4 changes: 2 additions & 2 deletions docs/morphir-scala-gen.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
id: generate-scala-test-case
---

# Scala Test Cases Generation

> > **Since: 2.74.0**
This document explains how to generate test cases in scala from saved morphir tests.

# Generating Scala Test Cases

Morphir offers a way to generate scala test cases from test cases created using the morphir develop UI.

Test cases can be generated by adding additional flags to the gen command, i.e `morphir scala-gen [test-gen-flag]`.
Expand Down
19 changes: 19 additions & 0 deletions docs/morphir-sdk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
id: morphir-sdk
---

# The Morphir SDK

The goal of the `Morphir.SDK` module is to provide you the basic building blocks to build your domain model and
business logic. It also serves as a specification for backend developers that describes the minimum set of functionality
each backend implementation should support.

It is generally based on [elm/core/1.0.5](https://package.elm-lang.org/packages/elm/core/1.0.5/) and provides most of
the functionality provided there except for some modules that fall outside the scope of business knowledge modeling:
`Debug`, `Platform`, `Process` and `Task`.

Apart from the modules mentioned above you can use everything that's available in `elm/core/1.0.5` without importing
the `Morphir SDK`. The Elm frontend will simply map those to the corresponding type/function names in the Morphir SDK.

The `Morphir SDK` also provides some features beyond `elm/core/1.0.5`. To use those features you have to import the
specific `Morphir SDK` module.
1 change: 1 addition & 0 deletions docs/morphir-typescript-api.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
id: morphir-typescript
title: TypeScript - Morphir API
---

#Morphir API for Typescript
Expand Down
2 changes: 1 addition & 1 deletion docs/regtech-modeling.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
sidebar_position: 7
id: automating-regtech
id: regtech-modeling
title: Automating RegTech
---

Expand Down
2 changes: 1 addition & 1 deletion docs/scala-backend.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
------
---
id: scala-backend
---

Expand Down
File renamed without changes.
1 change: 1 addition & 0 deletions docs/spark-backend-api-documentation.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
id: spark-backend-api
title: API Documentation
---

# Spark Backend/API Documentation
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
id: spark-backend-relational
title: Spark Relational
---

# Spark backend as a special case of a Relational backend
# Spark backend as a Special Form of Relational backend

## Context and Problem Statement

Expand Down
4 changes: 2 additions & 2 deletions docs/spark-backend-design.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
id: morphir-spark
title: Morphir to Spark mapping
title: Mapping Morphir to Spark
---

# Morphir to Spark mapping
# Spark - Morphir to Spark mapping

To understand how the Morphir to Apache Spark mapping works let's begin with an example Morphir domain model and business logic that we might want to transpile to Spark. We present the Morphir logic using Elm syntax to make it easy to read:

Expand Down
3 changes: 2 additions & 1 deletion docs/spark-backend-joins.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
id: spark-backend-joins
title: Backend Joins
---

# Spark Backend Joins
# Spark - Backend Joins
Let's start by defining an example model that does some joins:

```elm
Expand Down
3 changes: 2 additions & 1 deletion docs/spark-backend-optional-values.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
id: spark-optional-values
tile: Handling Optional Values
---

# Handling optiobnal values in Spark
# Spark - Handling Optional Values

Optional values are handled differently in SQL and Morphir. In SQL every value can potentially be `NULL` and there are implicit rules about how each operator should behave when `NULL`s are passed to them. Spark follows the same approach as documented in the [NULL semantics](https://spark.apache.org/docs/latest/sql-ref-null-semantics.html) section. Morphir on the other hand requires the modeler to handle missing values explicitly.

Expand Down
2 changes: 1 addition & 1 deletion docs/spark-testing-framework.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
id: spark-testing-framework
---

# Spark Testing Framework
# Spark - Testing Framework
## Spark CSV Testing guide
The purpose of this document is to show how someone can use and edit the spark tests.

Expand Down
7 changes: 3 additions & 4 deletions website/docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,8 @@ const config = {
({
docs: {
"path": '../docs',
//"sidebarPath": "./sidebars.json",
sidebarPath: require.resolve('./sidebars.js')
// editUrl: 'https://github.com/finos/morphir/tree/main/docs/',
sidebarPath: require.resolve('./sidebars.js'),
editUrl: 'https://github.com/finos/morphir/tree/main/docs/',
},
theme: {
customCss: require.resolve('./src/css/custom.css'),
Expand All @@ -46,7 +45,7 @@ const config = {
items: [
{
type: 'doc',
docId: 'intro',
docId: 'introduction-to-morphir',
position: 'right',
label: 'Docs',
},
Expand Down
Loading

0 comments on commit cc3ee3b

Please sign in to comment.