> For the complete documentation index, see [llms.txt](https://boomi.markusschmidt.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://boomi.markusschmidt.pro/boomi-scriptease/mgf4boomi-the-library.md).

# Download

## **ScriptEase Project**

The **ScriptEase Project** contains sample scripts and templates to <mark style="color:red;">get started with ScriptEase</mark>.

:pencil: [DOWNLOAD - ScriptEase Project](https://github.com/MarkusSchmidtPro/MSPro.Boomi.MGF4Boomi.Demo/zipball/main) is all you need when you start with *ScriptEase*.\ <sup>It includes the latest version of the</sup> <sup>**ScriptEase library.**</sup>

{% hint style="info" %}
**Git Repository**

The Demo project is currently [hosted on GitHub](https://github.com/MarkusSchmidtPro/MSPro.Boomi.ScriptEase).\
I recommend, if you know how to use Git, to pull it from there (use it as a Git repository) instead of downloading the zip-file.
{% endhint %}

<details>

<summary>The ScriptEase library</summary>

The **ScriptEase library** `scriptEaseLib-x.y.z.jar` provides the magic to edit, debug and test Boomi Process- and Map-Scripts on your local machine using JetBrains IntelliJ.

If you have an <mark style="color:red;">**existing ScriptEase project on your local machine, to update**</mark> the library.

{% hint style="success" %}

### Latest Version <mark style="color:orange;">1.3.4</mark> - 2025-04-08

:dvd: [DOWNLOAD - Latest ScriptEaseLib](https://github.com/MarkusSchmidtPro/MSPro.Boomi.ScriptEase/tree/main/MyScripts/lib).jar

* Licensing optimized
* `ExecutionUtil` completely re-written to better emulate the Atom implementation.
* Logging optimized
  {% endhint %}

</details>

<details>

<summary>Version History</summary>

1.3.0 - 2025-03-22

* Licensing implemented (see [Licensing](/boomi-scriptease/licensing.md) )

1.1.4 - 2025-02-06

* Fixed: `outputDocuments` are empty when more than one script is executed on the same test.

#### 1.1.3 - 2024-12-10

* Logging `DefaultFormatter` no longer uses Thread, to support JDK 23 and JDK11.
* `testFileHelper` supports `getText()`

#### 1.1.1 - 2024-12-04

* Fixed compatibility issues when using logging with Java 11.
* Fixed typos on property names
  * Changed some property names on `ExcutionContext`.

#### 1.1.0 - 2024-12-03

<mark style="color:red;">**Please update to v1.1.1**</mark>

* All `scriptEaseLib` classes use: `@CompileStatic` and `@TypeChecked`
* `ProcessExecutionProperties` fixed
* Better *typed*, library internal classes restricted to `@PackageScope`

#### 1.0.2 - 2024-11-18

* Finally renamed to ***ScriptEase***.
  * MGF (Markus\`s Groovy Framework) became *ScriptEaseLib*\
    to avoid any confusion with the PSO Boomi *Framework*.
* **NEW** Licensing implemented
* **FIX** No more *HashMap*, uses *Map* everywhere to improve compatibility with Java

</details>

<details>

<summary>Personal Versions (pre-release)</summary>

#### 0.6.1 - 2024-08-22 <a href="#id-061---2024-08-22" id="id-061---2024-08-22"></a>

* **FIX** *getStream( docNo=0) called more than once.* error when passing empty documents to the script.

#### 0.6.0 - 2024-08-08 <a href="#id-060---2024-08-08" id="id-060---2024-08-08"></a>

* **NEW** `Document.fromByteArray()` and `Document.fromStream()` added
* **NEW** Text encoding added to `Document.from` functions so that it is no longer UTF-8!
* **FIX** After calling `Document.toString()` the document was empty

#### 0.5.0 - 2024-07-04

Major changes for MapScripts were required to correctly simulate a Map context and the lifetime of map script objects. As long as the MapScript ran on a single property, everything was fine. However, to support a MapScript running on an Array (for each single array element) the new updates were required.

~~`MapScriptContext`~~ was replaced by `ProcessContext` which can optionally be provided in the `MapScript` constructor.

```groovy
OLD 0.4.x and earlier
----------
def scriptContext = new MapScriptContext([ a: 5, b: 7])
_testScript.run(scriptContext)


NEW 0.5.x 
----------
final MapScript _testScript = 
  new MapScript("msg" + SCRIPT_NAME + ".groovy", _sourceUri, new ProcessContext())

void Test() {
  def variables = _testScript.run([a: 5, b: 7])

  assert variables.total != null, "Script did not set 'total' as output parameter!"
  assert variables.total == (variables.a as int) + (variables.b as int), "Calculation result does not meet expectations!"
}
```

... continuous evolution ...

</details>

### 0.0.0 - 2020 August

* That was the date when it all started!
