Add black-box model transformation invocation support
Brought to you by:
evsanchez
Provide support to being able to invoke model transformations from each other. This allows for remote invocations as well, which implies managing network protocols or wrapping them under some nice API.
This artifact is a subset of #2831088 and will be treated independently here.
I would like to work on this.
ATC Black Box implementation - v1
Hi,
before my holidays I implemented the black box feature for ATC, as well as an OCL black implementation using it.
I added two new elements to the model:
- AtcBlackBoxOperation: this is not an atom, just convenience interface for a Black-Box operation. It's the interface extenders must implement to create a specific black-box implementation. So it should NOT be used in an ATC model. Maybe we should move this to another package.
- AtcInvokeBlackBox: atom to invoke certain black box. Black-boxes are identified by a string. This atom holds a multivlaued reference to EObjects as "argument" to the black-box operation (since black-boxes are ATC unaware, they should only know about EMF API).
The attached zip file contains a CVS diff patch file, which contains changes over the ATC model and java code, as well as two additional bundles:
- com.opencanarias.mset.transf.atc.extension: This bundle provides a way to contribute AtcBlackBoxOperation implementations through extension points. Otherwise, implementations should be contributed programmatically via AtcBlackBoxOperation.REGISTRY
- com.opencanarias.mset.transf.atc.extension.ocl: OCL Black-Box operation that evaluates OCL expressions over a set of EObjects. This is meant to be used instead of the recently added AtcEvaluateOCLExpression, as removes OCL dependencies from the ATC core. The AtcBlackBoxOperation receives the OCLExpression through "parameters". The identification of the OCL black box is "ocl".
I'm open to discuss this design.
Cheers,
Víctor.