forked from finos/morphir
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request finos#78 from zngly/feat/zngly/morphir
feat: zngly & morphir website integration
- Loading branch information
Showing
32 changed files
with
17,910 additions
and
510 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,54 +3,76 @@ | |
|
||
# Morphir | ||
|
||
**Morphir** is a multi-language system built on a data format that captures an application's domain model and business logic in a technology agnostic manner. Having all the business knowledge available as data allows you to process it programatically in various ways: | ||
For the first time, business logic can be shared, stored, translated and visualised, all with the reliability of standardisation ensured in the Morphir framework. | ||
|
||
- **Translate it** to move between languages and platforms effortlessly as technology evolves | ||
- **Visualize it** to turn black-box logic into insightful explanations for your business users | ||
- **Share it** across different departments or organizations for consistent interpretation | ||
- **Store it** to retrieve and explain earlier versions of the logic in seconds | ||
- and much more ... | ||
--- | ||
|
||
Read more [Morphir documentation](https://morgan-stanley.github.io/morphir/) | ||
Morphir is a library of tools that works to capture business logic as data: | ||
|
||
## Morphir IR | ||
## What is it? | ||
|
||
The heart of Morphir is an intermediate representation that captures the domain model and business logic of your application. | ||
Our main serialization format is JSON for maximum language interoperability. This repo will contain the specification of the JSON | ||
format in the near future. While we are working on it you can check out the documentation of the corresponding | ||
[Elm library](https://github.com/Morgan-Stanley/morphir-elm#morphir-ir) to get an idea on the structure. | ||
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. | ||
|
||
## Morphir sub-projects: | ||
## Why is it important? | ||
|
||
**Core** | ||
* [morphir](https://github.com/Morgan-Stanley/morphir) - The core IR data structure and common SDK. | ||
* [morphir-examples](https://github.com/Morgan-Stanley/morphir-examples) - Examples of various types of Morphir modeling (mostly in Elm). | ||
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. | ||
|
||
**Frontends** | ||
* [morphir-elm](https://github.com/Morgan-Stanley/morphir-elm) - Enabling Elm as a Morphir modeling language. | ||
* [morphir-bosque](https://github.com/Morgan-Stanley/morphir-bosque) - Enabling Bosque as a Morphir modeling language. | ||
* [morphir-dotnet](https://github.com/Morgan-Stanley/morphir-dotnet) - Enabling F# as a Morphir modeling language and for .NET as a backend target. | ||
## How does it work? | ||
|
||
**Backends** | ||
* [morphir-dapr](https://github.com/Morgan-Stanley/morphir-dapr) - Enabling Microsoft's [Dapr](http://dapr.io) as a target application model platform. | ||
* [morphir-jvm](https://github.com/Morgan-Stanley/morphir-jvm) - Enabling various JVM technologies as targets for Morphir model execution. | ||
* [morphir-dotnet](https://github.com/Morgan-Stanley/morphir-dotnet) - Support for using F# as a Morphir modeling language and for .NET as a backend target. | ||
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. | ||
|
||
## Installation | ||
## What are the benefits? | ||
|
||
The quickest way to start is to use the Morphir Elm tooling. You can find instructions [here](https://github.com/finos/morphir-elm/). | ||
### ✔️ Eliminates technical debt risk | ||
|
||
## Usage example | ||
> _Refactoring code libraries is often a harmful and time-sensitive issue for businesses, Morphir ensure the standards introduced from input eliminate delays at deployment._ | ||
Morphir tools can be used to optimize a wide range of development tasks. For example, Morphir can be used to define and automated development of an entire service. The [Morphir Dapr](https://github.com/finos/morphir-dapr) project is example of this. | ||
### ✔️ Increases agility | ||
|
||
Another good use of Morphir is to define shared rules than can be used across heterogeneous systems. This can be useful for initiatives like open-source Reg Tech models that are shared across firms. [Morphir LCR](https://github.com/finos/morphir-examples/tree/master/src/Morphir/Sample/LCR) presents a good example of this. | ||
> _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._ | ||
More Morphir examples can be found at [Morphir Examples](https://github.com/finos/morphir-examples/). | ||
### ✔️ 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)._ | ||
--- | ||
|
||
[Morphir Resource Centre](https://morphir.zngly.com/) | ||
|
||
--- | ||
|
||
# An ecosystem of innovative features | ||
|
||
Supporting the development of your business’ needs in an ever-developing ecosystem based on firm standards and the integration of new languages. | ||
|
||
## Development setup | ||
Check out [GitHub >>](https://github.com/stephengoldbaum/morphir-examples/tree/master/tutorial) | ||
|
||
Morphir is a collection of tools. Each tool is in its own repo with its own installation instructions. The main development tools, and the best place to get started, are currently in [Morphir Elm](https://github.com/finos/morphir-elm). | ||
# Further reading | ||
|
||
| Introduction & Background | Using Morphir | Applicability | | ||
| :------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------- | | ||
| [Resource Centre](https://morphir.zngly.com/) | [What Makes a Good Model](./docs/what-makes-a-good-domain-model) | [Sharing Business Logic Across Application Boundaries](./docs/shared_logic_modeling) | | ||
| [Background](./docs/background) | [Development Automation (Dev Bots)](./docs/dev_bots) | [Regulatory Technology](./docs/regtech_modeling) | | ||
| [Community](./docs/morphir_community) | [Modeling an Application](./docs/application_modeling) | | | ||
| [What's it all about?](./docs/whats_it_about) | [Modeling Decision Tables](https://github.com/finos/morphir-examples/tree/master/src/Morphir/Sample/Rules) | | | ||
| [Working Across Technologies](./docs/work_across_languages_and_platforms) | [Modeling for database developers](./docs/modeling/modeling-for-database-developers.md) | | | ||
| [Why we use Functional Programming?](./docs/why_functional_programming) | | | | ||
|
||
# Development setup | ||
|
||
Morphir is a collection of tools. Each tool is in its own repo with its own installation instructions. The main development tools, and the best place to get started, are currently in [Morphir Elm](https://github.com/finos/morphir-elm). | ||
|
||
## Usage example | ||
|
||
Morphir tools can be used to optimize a wide range of development tasks. For example, Morphir can be used to define and automated development of an entire service. The [Morphir Dapr](https://github.com/finos/morphir-dapr) project is example of this. | ||
|
||
Another good use of Morphir is to define shared rules than can be used across heterogeneous systems. This can be useful for initiatives like open-source Reg Tech models that are shared across firms. [Morphir LCR](https://github.com/finos/morphir-examples/tree/master/src/Morphir/Sample/LCR) presents a good example of this. | ||
|
||
More Morphir examples can be found at [Morphir Examples](https://github.com/finos/morphir-examples/). | ||
|
||
## Roadmap | ||
|
||
|
@@ -72,9 +94,10 @@ List the roadmap steps; alternatively link the Confluence Wiki page where the pr | |
|
||
_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 [[email protected]](mailto:[email protected])* | ||
_Need an ICLA? Unsure if you are covered under an existing CCLA? Email [[email protected]](mailto:[email protected])_ | ||
|
||
## Join the Morphir Slack Channel | ||
|
||
Join Morphir on the FINOS Slack by signing up at https://finos-lf.slack.com/. The Morphir channel on Slack is found directly at 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/) | ||
|
@@ -83,7 +106,7 @@ Reach out to [email protected] for any issues when joining CSC on the FINOS Slack. | |
|
||
## License | ||
|
||
Copyright 2020 FINOS | ||
Copyright 2022 FINOS | ||
|
||
Distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0). | ||
|
||
|
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
--- | ||
sidebar_position: 1 | ||
id: intro | ||
title: Introduction | ||
--- | ||
|
||
# Morphir | ||
|
||
Morphir is a multi-language system built on a data format that captures an application's domain model and business logic | ||
in a technology agnostic manner. Having all the business knowledge available as data allows you to process it | ||
programmatically in various ways: | ||
|
||
- **Translate it** to move between languages and platforms effortlessly as technology evolves | ||
- **Visualize it** to turn black-box logic into insightful explanations for your business users | ||
- **Share it** across different departments or organizations for consistent interpretation | ||
- **Store it** to retrieve and explain earlier versions of the logic in seconds | ||
- and much more ... | ||
|
||
While the core idea behind Morphir is very simple it's still challenging to describe it because it doesn't fit into | ||
any well-known categories. To help you understand what it is and how you can use it to solve real-world problems we | ||
put together a tutorial and list of questions and short answers: | ||
|
||
- [Tutorial](https://github.com/stephengoldbaum/morphir-examples/tree/master/tutorial) | ||
- [How do I define my domain model and business logic?](#how-do-I-define-my-domain-model-and-business-logic) | ||
- [How does Morphir turn logic into data?](#how-does-morphir-turn-logic-into-data) | ||
- [What does the data format look like?](#what-does-the-data-format-look-like) | ||
|
||
## How do I define my domain model and business logic? | ||
|
||
Morphir is a multi-language system, so it gives you flexibility in what language or tool you use to define your | ||
domain model and business logic (we refer to them as frontends). As a community we are continuously building new | ||
language frontends and if the one you are looking for is not available we provide tools for you to build it yourself. | ||
|
||
Our main frontend is currently the [Elm](https://elm-lang.org/) programming language. We support the whole language | ||
(except for some very platform specific features like ports) so defining your domain model and business logic boils down | ||
to writing Elm code. To learn more about the frontend see [morphir-elm](https://github.com/Morgan-Stanley/morphir-elm). | ||
|
||
Other frontends: | ||
|
||
- [Bosque Programming Language](https://github.com/Morgan-Stanley/morphir-bosque) | ||
|
||
## How does Morphir turn logic into data? | ||
|
||
The process of turning logic into data is well known because every programming language compiler and interpreter does | ||
it. They parse the source code to generate an [abstract syntax tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree) | ||
which is then transformed into an [intermediate representation](https://en.wikipedia.org/wiki/Intermediate_representation) of some sort. | ||
|
||
Morphir simply turns that intermediate representation into a developer-friendly data format that makes it easy to build | ||
automation on top of it. | ||
|
||
## What does the data format look like? | ||
|
||
It's easiest to start with an example. Say you have some simple business logic like this: | ||
|
||
```javascript | ||
quantity * unitPrice; | ||
``` | ||
|
||
In Morphir's data format this would translate into something like this: | ||
|
||
```javascript | ||
[ | ||
'Apply', | ||
['Apply', ['Reference', [['Morphir', 'SDK'], ['Number'], 'multiply']], ['Variable', ['quantity']]], | ||
['Variable', ['unit', 'price']], | ||
]; | ||
``` | ||
|
||
<!-- | ||
# Further reading | ||
## Introduction and Background | ||
- [Background](background) | ||
- [Community](morphir_community) | ||
- [What's it all about?](whats_it_about) | ||
- [Working Across Technologies](work_across_languages_and_platforms) | ||
- [Why we use Functional Programming?](why_functional_programming) | ||
## Using Morphir | ||
- [What Makes a Good Model](what-makes-a-good-domain-model) | ||
- [Development Automation (Dev Bots)](dev_bots) | ||
- [Modeling an Application](application_modeling) | ||
- [Modeling Decision Tables](https://github.com/finos/morphir-examples/tree/master/src/Morphir/Sample/Rules) | ||
- [Modeling for database developers](modeling/modeling-for-database-developers.md) | ||
## Applicability | ||
- [Sharing Business Logic Across Application Boundaries](shared_logic_modeling) | ||
- [Regulatory Technology](regtech_modeling) --> |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# Dependencies | ||
/node_modules | ||
|
||
# Production | ||
/build | ||
|
||
# Generated files | ||
.docusaurus | ||
.cache-loader | ||
|
||
# Misc | ||
.DS_Store | ||
.env.local | ||
.env.development.local | ||
.env.test.local | ||
.env.production.local | ||
|
||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
{ | ||
"singleQuote": true, | ||
"useTabs": true, | ||
"tabWidth": 2, | ||
"semi": false, | ||
"jsxSingleQuote": true, | ||
"arrowParens": "avoid", | ||
"printWidth": 120 | ||
} |
Oops, something went wrong.