Bug 522630 - [qvtr] Support Black Box transformations / TransformationCallExp
Summary: [qvtr] Support Black Box transformations / TransformationCallExp
Status: NEW
Alias: None
Product: QVTd
Classification: Modeling
Component: Core (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows NT
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on: 547723
Blocks: 522627
  Show dependency tree
 
Reported: 2017-09-22 04:58 EDT by Ed Willink CLA
Modified: 2019-11-26 07:44 EST (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ed Willink CLA 2017-09-22 04:58:27 EDT
It should be possible to write an a2b2c transformation that comprises an a2b followed by a b2c.

Do we just vary a RelationCallExp a bit so that it passes Models to a referredTransformation?

How does a Model relate to the single/multiple root of a user model?

How is a Model variable declared? Perhaps a domain is a Model, so that we check a, enforce b, enforce c, when { A2B(a, b); B2C(b, c); }
Comment 1 Ed Willink CLA 2018-05-06 04:13:32 EDT
If a TransformationCallExp is supported presumably it can be cyclic.

----

The current code handles multiple Transformations since the parent Package hierarchy may have multiples. However the code is inconsistent as to how the analysis of multiples interact. Can one TransformationCallExp really have fine grained dependencies on another transformations Relation? Perhaps each transformation is analyzed independently and joined in a separate pass. But if a Relation extends another should the base be analyzed and re-used or re-analyzed independently. 

Probably want to code per-Transformation for now. In due course this might be tree-ordered to support multiple transformations.
Comment 2 Ed Willink CLA 2019-05-28 03:54:39 EDT
(In reply to Ed Willink from comment #0)
> Do we just vary a RelationCallExp a bit so that it passes Models to a
> referredTransformation?
> 
> How does a Model relate to the single/multiple root of a user model?

Onvce we reify Extent, a TransformationCallExp can be much simpler. See Bug 547723.
Comment 3 Ed Willink CLA 2019-10-18 10:09:38 EDT
The new support for TypedModel cascades propbably does most of the heavy lifting and might be regarded as an inlined TransformationCallExp. See Bug 549776.
Comment 4 Ed Willink CLA 2019-11-26 07:44:30 EST
(In reply to Ed Willink from comment #1)
> Probably want to code per-Transformation for now. In due course this might
> be tree-ordered to support multiple transformations.

The notional supporrt for this causes confusion. QVTbaseUtil.getTransformation tries to find exactly one Transformation from the passed Resource. Subsequently the ability to invoke ScheduleManager.addTransformation more than once introduces a multiple-transformation complexity that achievesprecisely nothing.

As a minimum QVTbaseUtil.getTransformation should have an extra argument to select which one transformation to process.

One day TransformationCallExps might do something useful with multiple transformations.