Skip to content

Docs/adr-lpmstorage#9

Draft
VikiPeeva wants to merge 7 commits into
mainfrom
docs/adr-lpmstorage
Draft

Docs/adr-lpmstorage#9
VikiPeeva wants to merge 7 commits into
mainfrom
docs/adr-lpmstorage

Conversation

@VikiPeeva

Copy link
Copy Markdown
Collaborator

No description provided.

@VikiPeeva VikiPeeva requested a review from alkuzman June 20, 2026 14:25
@VikiPeeva VikiPeeva self-assigned this Jun 20, 2026
@VikiPeeva VikiPeeva added the documentation Improvements or additions to documentation label Jun 20, 2026

@alkuzman alkuzman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did not review the proposals (options) in detail. I will do that in another round of review.

Superseded by:
---

# ADR-0001: Data Storage Format

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The title is imprecise. Storage format of what exactly?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, the numbers of the ADRs should be stable over time. If you have PRs for multiple ADRs you don't know which one you will merge first therefore assigning numbers becomes very hard. The best way could be to assign the number of the PR that creates the ADR. For example now you created a draft, now you can update both the file and the titple to ADR-0009. That way you will always be sure that they have unique numbers.

@VikiPeeva VikiPeeva Jul 7, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see the benefit of this. Why wouldn't they be stable with the other strategy, numbering them in order of creation? The way you propose it, there will be gaps in the numbers, since not all pull requests are for an ADR.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The title has been updated.


## Context

We need to store _Local Process Models (LPMs) and their occurrence lists in an event log_. Event log sizes can vary,

@alkuzman alkuzman Jun 22, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe you should answer the following questions first:

  • Why not jus LPMs?
  • why occurrences?
  • why in an event log?

- Query-based read/write

There also exist various ways one can align LPMs to an event log:
- The storage focuses on one variation

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You use the word variation here without explaining what is it. The image is not enough to explain. Also, why having this constraint is important?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Example variations are now listed to clarify the problem. The comment regarding why this constraint is important is unclear to me.

@alkuzman alkuzman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general make it clear what files would be generated for each option. Maybe provide a example tree structures for each.

in Decision Drivers give list of usecases that will require querying or writing from this format. Maybe shortly discuss from what option they might benefit.

Superseded by:
---

# ADR-0001: Data Storage Format

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, the numbers of the ADRs should be stable over time. If you have PRs for multiple ADRs you don't know which one you will merge first therefore assigning numbers becomes very hard. The best way could be to assign the number of the PR that creates the ADR. For example now you created a draft, now you can update both the file and the titple to ADR-0009. That way you will always be sure that they have unique numbers.

Comment thread docs/decisions/template.md
"t1": {
"e1": "t_a",
"e2": ">>",
"e3": "t_a",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How could $t_a$ happen twice?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Once it happens because of one occurrence list and the other because of another. The example above is now more detailed, and that is what I meant in the comment above: the alignment in the file actually serves as a collective alignment for all occurrence lists for that trace and local process model.

"e5": "t_d"
},
"t2": {
"e1": ">>",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why $e_1$ is not matched with $t_a$?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not matched because there is no alignment mapping an entire model execution to the trace, since $b$ is missing from trace $t2$.

- Using only existing formats

**Cons**
- Complete occurrence lists need to be reconstructed

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this really expensive thing to do? To me it seems like a straightforward operation that can be done on demand.
However, this might become too expensive if the log is too big and you need to filter by few LPMs. Then Option C becomes really attractive.

@VikiPeeva VikiPeeva Jul 7, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An explanation regarding why this is expensive has now been added.

### Option B: Separate Full Alignments File in Human-Readable Format (e.g., JSON)

For each set of models for which an occurrence list is computed, a report is generated that includes:
- lpm set info,

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand what this is.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the update, some examples of what can be included here are given.


$lpm2$: a -> b -> d

```json

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not clear that there could be multiple such files.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand what such files refer to.

Comment thread docs/decisions/0001-data-storage-format.md
To be able to store additional attributes, a new format for the models can be introduced or additional json file
can be used only for storing the additional attributes.

### Option B: Separate Full Alignments File in Human-Readable Format (e.g., JSON)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This cannot handle multiple alignments for the same trace (events) therefore it should not be considered.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, it can handle multiple alignments; it is like a global alignment for all possible alignments for that trace. If an event can be aligned as part of any of the occurrences, it will be shown as a synchronous move. One problem is that the occurrence lists need to be reconstructed similarly to Option A. The second problem is that if I want to align the same event to different transitions for different occurrences, this is not possible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants