# 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*. \
&#x20;<sup>It includes the latest version of the</sup> <sup></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!


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://boomi.markusschmidt.pro/boomi-scriptease/mgf4boomi-the-library.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
