[Architecture] UUF Application Delivery Approach

2016-07-14 Thread Rasika Perera
Hi All,


In UUF, We have three different artifact types. UUF Applications(A),
Components(C) and Themes(T). Given that an Application can have UUF
dependencies (i.e. Components & Themes) and non-UUF dependencies(i.e.
Back-end osgi bundles, jax-rs or p2-features(BE)). Same way, a Component
also can have UUF dependencies and non-UUF dependencies.

[image: Inline image 3]

Diagram 1: sample apps dependency hierarchy

When deploying, the *deployable* artifact is an UUF-Application (you cannot
deploy a theme or a component alone). Moreover, the source project and
built project of the UUF-Application is bit *different*. Hence, we have
created uuf-maven-plugin [1] to build the application.


[image: Inline image 4]

Diagram 2: source project and built app comparison

When building the application we are resolving & copying the UUF
dependencies into the deployable artifact (i.e. a zip file).

As per the above diagram;  when resolving non-UUF dependencies, we need a
way to carry forward the back-end dependency (BE) information of components(
C) and apps(A).

For example:

A1’s pom.xml will declare T1, C1, C2, C3, and BE1A1 as its dependencies. It
will not aware of the dependencies BE1C1, BE1C2 and BE1C3. However, when
running the “create-application” goal in uuf-maven-plugin, we need to
resolve these BE dependencies as well.

This will be more complex; If there’s an App A2 from different product team
he will only add T2 and C1 as dependencies. BE1C1 should be resolved when
creating the app A2.

Problems:

   1.

   How to copy deployed uuf-application and its BE dependencies into a
   product (delivering app)?
   2.

   How to transfer meta-information of the BE dependencies along with
   components and apps?


Proposed Solution:

One solution is to create a new “create-feature” goal to create a
*carbon-feature*.


[image: Inline image 7]

Diagram 3: sample apps dependency hierarchy: BE can be a Bundle(B) or
Feature(F) (maven goals on the left)


Suppose the application feature is Foo;



   1.

   Plugins (i.e. B1A1, B1C3) need be copied to the /plugins directory in
   the feature Foo. Those will be copied into the PRODUCT_HOME/components path
   by carbon-feature-plugin when installing the feature.
   2.

   UUF application (i.e. A1, A2) will be in /features in the feature Foo.
   It will be copied into PRODUCT_HOME/deployments/uufapps directory. We
   can declare the copy path of UUF application through p2 touchpoints.
   3.

   Since transitive features(F1C1, F1C2) are not immediate dependencies of
   the App. It will be added as  in the feature Foo.


For the second problem; we can allow adding non-UUF dependencies in
pom.xml. Since we are using uuf-maven-plugin we can ignore non-uuf
dependencies when running goals of create- components, create-themes and
create-application.

Your comments and suggestions are highly appreciated.

Thanks,
Rasika

[1] https://github.com/rasika/carbon-uuf-maven-plugin/

-- 
With Regards,

*Rasika Perera*
Software Engineer
M: +94 71 680 9060 E: rasi...@wso2.com
LinkedIn: http://lk.linkedin.com/in/rasika90

WSO2 Inc. www.wso2.com
lean.enterprise.middleware
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture


Re: [Architecture] UUF Application Delivery Approach

2016-07-14 Thread Rasika Perera
Hi All,

Please ignore this mail and reply to the thread "[Architecture] Unified UI
Framework(UUF) Application Delivery Approach".

Thanks,
Rasika

On Thu, Jul 14, 2016 at 6:24 PM, Rasika Perera  wrote:

> Hi All,
>
>
> In UUF, We have three different artifact types. UUF Applications(A),
> Components(C) and Themes(T). Given that an Application can have UUF
> dependencies (i.e. Components & Themes) and non-UUF dependencies(i.e.
> Back-end osgi bundles, jax-rs or p2-features(BE)). Same way, a Component
> also can have UUF dependencies and non-UUF dependencies.
>
> [image: Inline image 3]
>
> Diagram 1: sample apps dependency hierarchy
>
> When deploying, the *deployable* artifact is an UUF-Application (you
> cannot deploy a theme or a component alone). Moreover, the source project
> and built project of the UUF-Application is bit *different*. Hence, we have
> created uuf-maven-plugin [1] to build the application.
>
>
> [image: Inline image 4]
>
> Diagram 2: source project and built app comparison
>
> When building the application we are resolving & copying the UUF
> dependencies into the deployable artifact (i.e. a zip file).
>
> As per the above diagram;  when resolving non-UUF dependencies, we need a
> way to carry forward the back-end dependency (BE) information of
> components(C) and apps(A).
>
> For example:
>
> A1’s pom.xml will declare T1, C1, C2, C3, and BE1A1 as its dependencies.
> It will not aware of the dependencies BE1C1, BE1C2 and BE1C3. However,
> when running the “create-application” goal in uuf-maven-plugin, we need to
> resolve these BE dependencies as well.
>
> This will be more complex; If there’s an App A2 from different product
> team he will only add T2 and C1 as dependencies. BE1C1 should be resolved
> when creating the app A2.
>
> Problems:
>
>1.
>
>How to copy deployed uuf-application and its BE dependencies into a
>product (delivering app)?
>2.
>
>How to transfer meta-information of the BE dependencies along with
>components and apps?
>
>
> Proposed Solution:
>
> One solution is to create a new “create-feature” goal to create a
> *carbon-feature*.
>
>
> [image: Inline image 7]
>
> Diagram 3: sample apps dependency hierarchy: BE can be a Bundle(B) or
> Feature(F) (maven goals on the left)
>
>
> Suppose the application feature is Foo;
>
>
>
>1.
>
>Plugins (i.e. B1A1, B1C3) need be copied to the /plugins directory in
>the feature Foo. Those will be copied into the PRODUCT_HOME/components path
>by carbon-feature-plugin when installing the feature.
>2.
>
>UUF application (i.e. A1, A2) will be in /features in the feature Foo.
>It will be copied into PRODUCT_HOME/deployments/uufapps directory. We
>can declare the copy path of UUF application through p2 touchpoints.
>3.
>
>Since transitive features(F1C1, F1C2) are not immediate dependencies
>of the App. It will be added as  in the feature Foo.
>
>
> For the second problem; we can allow adding non-UUF dependencies in
> pom.xml. Since we are using uuf-maven-plugin we can ignore non-uuf
> dependencies when running goals of create- components, create-themes and
> create-application.
>
> Your comments and suggestions are highly appreciated.
>
> Thanks,
> Rasika
>
> [1] https://github.com/rasika/carbon-uuf-maven-plugin/
>
> --
> With Regards,
>
> *Rasika Perera*
> Software Engineer
> M: +94 71 680 9060 E: rasi...@wso2.com
> LinkedIn: http://lk.linkedin.com/in/rasika90
>
> WSO2 Inc. www.wso2.com
> lean.enterprise.middleware
>



-- 
With Regards,

*Rasika Perera*
Software Engineer
M: +94 71 680 9060 E: rasi...@wso2.com
LinkedIn: http://lk.linkedin.com/in/rasika90

WSO2 Inc. www.wso2.com
lean.enterprise.middleware
___
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture