Thursday, February 28, 2013

Sample to demonstrate WSO2 CEP (Complex Event Processor) Registry Based Output topics and Text Mapping


In my previous blog post, I have given an introduction to WSO2 CEP. If you still do not have an idea, you can refer,
For More information, read on : http://wso2.com/products/complex-event-processor )

Processing and triggering new events based on received events is the basic idea of CEP. For processing events there should be some criteria specified to the CEP Engine, and this is provided as query to the CEP Bucket. To perform the expected task user may need one or more queries and some of this queries may be configured to trigger output events.
Query consists of the following elements.
  • Query Name - Name to identify the query
  • Expression - Actual query text specifying how the events should be processed
  • Output (optional) -Output should only be defined if you want to emit the output events triggered by the query,

Output consists following elements

  • Topic - Topic to which CEP will publish the output events.
  • Broker Name - Name of the broker which the output events are sent through
  • Output Mapping - Define the format of the output events.
Following are the available Output Mappings.
Reference : http://docs.wso2.org/wiki/pages/viewpage.action?pageId=21692679



Sample I am going to demonstrates is a way to realize Output Topics and text mapping using the registry. This sample can be helpful to the WSO2 Quality Assurance team to test the Registry Based Output and text mapping as well. I will not be doing something new in here. But to reuse the existing sa.mples provided in the documentation and organize them as you can execute them and view this feature in WSO2 CEP


To read more : http://docs.wso2.org/wiki/display/CEP210/Output+Topics


To demonstrates I will be using an existing sample from the documentation, which is Build Analyzer. http://docs.wso2.org/wiki/display/CEP210/Build+Analyzer



The best thing to do first is, run the sample given as it is to understand the behavior.


Steps to change for Registry Based Mapping
     1. Follow the steps given in the prerequisites. If you have already run the sample as it is you will not have to do those steps back again. Then you can move to the next step, Configuring Topics for E-Mail Broker.

  1.  When it comes to registry based mapping, the only step that will be differentiate from the existing sample will be the step which you have to configure Topics for E-Mail Broker.
    Follow the steps given in the following : http://docs.wso2.org/wiki/display/CEP210/Output+Topics

  2. Create a plain text content in the registry with the name "emailTopic" in the "config" directory of registry. (Go to the Registry → Browse → _system/config)



  3. Click on Add Resource which is under Entries and select Create Text Content from the Method drop down and provide the mapping details with your email address to see the incoming mail.



  4. Before Providing the file path for the output topic field to the bucket, since the bucket for the given example is already in our CEP-sample scenarios, we can first deploy and then edit the output mapping of it.

  5. Therefore deploy the configurations.
    In a command prompt, switch to the sample directory: <CEP_HOME>/samples/cep-samples
    For example, in Linux: cd <CEP_HOME>/samples/cep-samples

  6. From there, type ant deploy-build.

  7. Then when you list down the buckets, you will be able to see the, BuildFailAnalysisBucket .

  8. If you view it, you will be able to see the output is just mapped inline. Therefore we should map it as it supports our registry mapping. Therefore click on the Edit link to edit the bucket's output mapping.

  9. Then click on the BuildFailFilterQuery to edit the Output mapping.

  10. There you get the Query page. Edit the Output section as follows by providing config-registry:/emailTopic as the topic.


  11. Now we are almost done which is related to this sample. Now start the WSO2 Complex Event Processor. Refer to the Running the Product for instructions.

  12. Then follow the steps provided in the following location (Build Analyzer Sample) from the Defining Stream in CEP engine section onwards.
    http://docs.wso2.org/wiki/display/CEP210/Build+Analyzer

  13. If you have successfully followed the steps, you will be able to view the same observation which you have received in inline mapping.

  14. This sample can be used to demonstrates Registry-Based Output Text mapping as well. Only step you have to follow is define the text content of the email using the registry. Except above 4th and 11th steps you have to follow the steps given in the following location.
    http://docs.wso2.org/wiki/display/CEP210/Text+Output+Mapping

Saturday, February 23, 2013

Sample demonstrates the Unique Window and the First Unique Window feature of WSO2 Complex Event Processor (CEP)


WSO2 CEP

WSO2 Complex Event Processor (CEP) is a lightweight, easy-to-use, open source Complex Event Processing Server (CEP) available under Apache Software License v2.0. WSO2 CEP identifies the most meaningful events within the event cloud, analyzes their impact, and acts on them in real-time. It's built to be extremely high performing and massively scalable. (Reference : http://wso2.com/products/complex-event-processor )



WSO2 CEP Windows Concept

Window is a limited subset of events from an event stream. Users can define a window and then use the events on the window for calculations. A window has two types of output: current events and expired events. A window emits current events when a new event arrives. Expired events are emitted whenever an existing event has expired from a window. (Reference : http://docs.wso2.org/wiki/display/CEP210/Windows )

To read more on CEP and the concepts behind this sample, read the documentation provided.

Note : I hope the reader has an idea about WSO2 CEP and the concepts behind it before try out this sample.
Also this sample will be helpful to the WSO2 Quality Assurance team to verify the Unique window and the First Unique Window Functionality of WSO2 CEP product.


Unique Window
A window that keeps only the latest events that are unique according to the given attribute.


First Unique Window
A window that keeps the first events that are unique according to the given unique attribute



Twitter and StockQuote Analyzer

This sample demonstrates how Siddhi engine can be used with JMS broker to receive, process and publish JMS Map & XML messages.
For More Information (Reference): http://docs.wso2.org/wiki/display/CEP210/Twitter+and+StockQuote+Analyzer



In the above link, in the provided sample, CEP will receive events from stock quotes stream and Twitter feeds stream, and trigger an event if the last traded amount of the stock quotes stream vary by 2 percent with regards to the average traded price of a symbol within past 2 minutes and the word count of the Twitter feeds stream with related to that symbol is greater than 10.



But to demonstrate and verify the Unique window and the first unique the above sample should be changed as given below.



    1. A - Unique Window : Steps to Change
Bucket (jms-twitter-stockquote-analyser.xml) for this sample should be updated as following as it supports this feature./<CEP_HOME>/samples/cep-samples/conf/buckets/jms-twitter-stockquote-analyser.xml



<bucket name="TwitterAndStockQuoteAnalyzer" xmlns="http://wso2.org/carbon/cep">
    <description>
A window that keeps only the latest
events that are unique according to the given attribute.
    </description>
    <engineProviderConfiguration engineProvider="SiddhiCEPRuntime">
        <property name="siddhi.persistence.snapshot.time.interval.minutes">0</property>
        <property name="siddhi.enable.distributed.processing">false</property>
    </engineProviderConfiguration>
    <input topic="AllStockQuotes" brokerName="activemqJmsBroker">
        <mapMapping stream="allStockQuotes" queryEvnetType="Tuple">
            <property name="symbol" inputName="symbol" type="java.lang.String"/>
            <property name="price" inputName="price" type="java.lang.Double"/>
        </mapMapping>
    </input>
    <input topic="TwitterFeed" brokerName="activemqJmsBroker">
        <mapMapping stream="twitterFeed" queryEvnetType="Tuple">
            <property name="company" inputName="company" type="java.lang.String"/>
            <property name="wordCount" inputName="wordCount" type="java.lang.Integer"/>
        </mapMapping>
    </input>
      <query name="StocksPredictor">

        <expression>
from allStockQuotes#window.length(1) unidirectional join twitterFeed#window.unique("company") 
insert  into StockQuote twitterFeed.wordCount as wc,twitterFeed.company as companyname, allStockQuotes.symbol as sym
       </expression>

        <output topic="PredictedStockQuotes" brokerName="activemqJmsBroker">
            <xmlMapping>
                <quotedata:StockQuoteDataEvent
                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                        xmlns:quotedata="http://ws.cdyne.com/">
                    <quotedata:WordCount>{wc}</quotedata:WordCount>
                    <quotedata:Company>{companyname}</quotedata:Company>
     <quotedata:StockSymbol>{sym}</quotedata:StockSymbol>
                    </quotedata:StockQuoteDataEvent>
            </xmlMapping>
        </output>
    </query>
</bucket> 
 
 

   

    1. B - First Unique Window : Steps to Change
Bucket (jms-twitter-stockquote-analyser.xml) for this sample should be updated as following as it supports this feature./<CEP_HOME>/samples/cep-samples/conf/buckets/jms-twitter-stockquote-analyser.xml




<bucket name="TwitterAndStockQuoteAnalyzer" xmlns="http://wso2.org/carbon/cep">
    <description>
A window that keeps the first events
that are unique according to the given unique attribute.
    </description>
    <engineProviderConfiguration engineProvider="SiddhiCEPRuntime">
        <property name="siddhi.persistence.snapshot.time.interval.minutes">0</property>
        <property name="siddhi.enable.distributed.processing">false</property>
    </engineProviderConfiguration>
    <input topic="AllStockQuotes" brokerName="activemqJmsBroker">
        <mapMapping stream="allStockQuotes" queryEvnetType="Tuple">
            <property name="symbol" inputName="symbol" type="java.lang.String"/>
            <property name="price" inputName="price" type="java.lang.Double"/>
        </mapMapping>
    </input>
    <input topic="TwitterFeed" brokerName="activemqJmsBroker">
        <mapMapping stream="twitterFeed" queryEvnetType="Tuple">
            <property name="company" inputName="company" type="java.lang.String"/>
            <property name="wordCount" inputName="wordCount" type="java.lang.Integer"/>
        </mapMapping>
    </input>
      <query name="StocksPredictor">

         <expression>
from allStockQuotes#window.length(1) unidirectional join twitterFeed#window.firstUnique("company") 
insert  into StockQuote twitterFeed.wordCount as wc,twitterFeed.company as companyname, allStockQuotes.symbol as sym
       </expression> 

        <output topic="PredictedStockQuotes" brokerName="activemqJmsBroker">
            <xmlMapping>
                <quotedata:StockQuoteDataEvent
                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                        xmlns:quotedata="http://ws.cdyne.com/">
                    <quotedata:WordCount>{wc}</quotedata:WordCount>
                    <quotedata:Company>{companyname}</quotedata:Company>
     <quotedata:StockSymbol>{sym}</quotedata:StockSymbol>
                    </quotedata:StockQuoteDataEvent>
            </xmlMapping>
        </output>
    </query>
</bucket>



    Then follow the steps given in the sample in the following link even for this sample : (Reference: )
    http://docs.wso2.org/wiki/display/CEP210/Twitter+and+StockQuote+Analyzer

    2. Prerequisites
  • Apache Ant to build & deploy the Sample & Service, and to run the client. Refer Installation Prerequisites for instructions to install Apache Ant.
  • ActiveMQ JMS Broker to publish and subscribe events. Refer Installation Prerequisites for instructions to install ActiveMQ JMS Broker.

    3. Deploying the configurations
The steps are as follows :
  1. Install the WSO2 Complex Event Processor, but do not start the server, Refer to the Installation and Deployment for instructions.
  2. Copy paste activemq-all-xxx.jar from the <ActiveMQ_HOME> directory to <CEP_HOME>/samples/lib directory.
  3. Copy paste activemq-core-xxx.jar and geronimo-j2ee-management_1.1_spec-1.0.1.jar from <ActiveMQ_HOME>/lib to <CEP_HOME>/repository/components/lib directory.
  4. In a command prompt, switch to the sample directory: <CEP_HOME>/samples/cep-samples
    For example, in Linux: cd <CEP_HOME>/samples/cep-samples
  5. From there, type ant deploy-jms,
    This will copy the broker-manager-config.xml to <CEP_HOME>/repository/conf directory and the bucket configuration to <CEP_HOME>/repository/deployment/server/cepbuckets directory.
  6. Start ActiveMQ JMS Broker. Refer Installation Prerequisites for instructions to run ActiveMQ JMS Broker.
  7. Now start the WSO2 Complex Event Processor. Refer to the Running the Product for instructions.

    4. Starting JMS Subscriber
The steps are as follows :
  1. In a new command prompt, switch to the sample directory: <CEP_HOME>/samples/cep-samples
    For example, in Linux: cd <CEP_HOME>/samples/cep-samples
  2. From there, type ant jmsSubscriber -Dtopic=PredictedStockQuotes, this will subscribe to the PredictedStockQuotes topic of the ActiveMQ Broker receiving the output events of CEP.



    5. Publishing Events
The steps are as follows :
  1. In a command prompt, switch to the CEP samples directory:<CEP_HOME>/samples/cep-samples
    For example, in Linux: cd <CEP_HOME>/samples/cep-samples
  2. From there, type ant jmsAllStockQuotesPublisher
    This will publish some JMS Map events to AllStockQuotes topic.
  3. Then from there, type ant jmsTwitterFeedPublisher
    This will publish some JMS Map events to TwitterFeed topic.


    6. Observations
These observation will not be the same as provided in the screenshots in http://docs.wso2.org/wiki/display/CEP210/Twitter+and+StockQuote+Analyzer
It wil be changed according to the respected behavior.
    For the Unique Window :
    --------------------------------------
You will be able to see the output events in the JMS subscriber console with the latest unique events.
E.g.,
Latest/Last event with unique company name, word count and symbol.

    For the First Unique Window :
    -----------------------------------------------
You will be able to see the output events in the JMS subscriber console with the first unique events.
E.g.,
Very First event with unique company name, word count and symbol.
 


  

Friday, February 15, 2013

Features supported - User Guide to WSO2 App Factory

WSO2 App Factory -
  • Solution for an organization to offer a managed environment for 3rd parties to innovate around the capabilities of it
  • Enforces the best practices,
  • Identify problems at early stage,
  • Reduce the time to provision tools
  • Shared, multi-tenant, elastic, self service, PaaS for multiple project teams to collaboratively create, develop, deploy the enterprise applications and Shares infrastructure to its developers with all useful to develop applications
  • One stop shop to view the applications in an organization or a company.
Following is the URL for the Preview version of WSO2 App Factory :

https://appfactorypreview.wso2.com/appmgt/


This post will provide the features supported in WSO2 App Factory (alpha/preview).


Login
  • A successfully registered user will be able to login to the system by providing the username and the password.

     Login Page View


App Factory Home Page

  • Once the user is logged in, list of applications will be visible on the App Factory home page.
  • Logged in user can play the role of an application owner by creating a new application by using Add New Application feature.
  • This section includes all the applications which the current user is dealt with as an Application owner or a Developer or a QA/Tester or a Developer Ops/Dev-Ops.

    AppFactory Home Page View

Application Creation
  • Current system suppors, WAR, JAX-RS, JAX-WS applications.
  • Application key is the unique identity to a relevant application.
  • The user who creates the application will become the app owner.

     Application Creation Page View
User Administration
  • Once an Application owner clicks on the application in the App Factory home page, he or she will be bale to view the User Administration tab for the particular application.
  • Application owner can specify the email address and the role to invite users to the application.
  • Application owner can be a Developer, QA or even a Dev-Ops.
  • Even the same user can play 2 or more roles if the relevant user is invited to the particular role.
  • After a successful invitation, the invited user should be able to view the application in the App Factory home page once he or she is logged in.

     User Administration Page View

Application Home Page/Application Dashboard
  • Depends on the role the visibility of the features for a relevant application will be vary.
  • Application owner will be exposed to the all the tabs whereas a Developer, Tester and a Dev-Ops will not see some other tabs.
  • E.g., A QA/Tester will see only the Governance, Track Issues and Configure Resources tabs.
  • Application dashboard will list down the branches/versions of a particular application, its last build status, life cycle stage of the relevant version and the launch option for the current environment along with the check out and browse repository URLs.
  • Checkout URL can be used to checkout the code in to the local machine and perform implementation of the application and then commit it. Steps to perform this task using GIT is explained in the following blog post.
  • Once the user clicks on the Browse URL, he or she will be navigated to the GIT Blit. By providing user credentials, depends on the user roles, repository history will be visible to the user in GIT Blit.
  • All the users will be listed down with the label of the user role.
  • Summary of the Issues reported will also be available with the status of them.
  • Datasources, APIs, Properties and databases created will be available as well in the application dashboard.
  • App owner will be able to view the relevant Database information of the each users, whereas the other users will be exposed to their environment information under Database Section. 

    Application Home Page/Dashboard View
Repository
  • Repository is the place where the user who has developer rights/developer or the application owner is granted to branch out a particular version from the trunk or another version of the project.
  • User can provide the version E.g., 1.0.0 and branch out.
  • After a successful notification, user will be able to see the newly created branch.
  • All the existing branches for a particular application will be sorted and listed in the repository tab.

     
                 Repository Page View
 
 
Notifications
  • Notifications panel is where you see the activities you have done for a particular application.
    E.g., creating the application, build status of the branches.
  • This panel will be available among all the tabs.

Builds
  • Builds tab is where you will be able to view the build status of a particular project for its versions.
  • The existing versions which are still in the Development stage and the build status will be sorted and listed down in this page.
  • If any of the version is in the testing, staging or production, it will not be visible in the Builds page. E.g., If 1.0.0 is in testing, Builds page will not have that branch.
  • Build graph illustrates the build status of a particular version.
  • Only the App owner and the developer will be exposed to this tab.
  • Once a new branch is created, it will be auto built and deployed within 10 minutes.
  • Auto built and auto deploy options are selected by default and a user will be able to untick them and manually build and deploy just by clicking on the Start Build and Deploy buttons.
  • If the auto build and auto deploy options are selected, once a developer commits the changes, it will be auto built and deployed in a periodic manner.
  • Jenkins build server will check the commits in every 10 minutes time and build the latest source code and deploy it.
  • Once the user refresh the Builds page, user will be able to view the Build <number>' s status and a link to launch the deployed application in the relevant environment.
    E.g., When the1.0.0 is built and deployed in Development environment, launch link direct the user to the development server environment.

    Build View

Governance
  • This is where the governance of a project comes to play.
  • This option is available for all the users in a particular application.
  • Mainly there are 2 options, which are Promote and Demote. Promote will take it up to the next stage and demote will take it back to the previous stage.
  • If a developer is satisfied with the created application up to their expected release stage, they can promote it to the testing stage for QAs/Testers to perform their testing in the testing environment. Same as a tester can promote it to the next stage, which is staging environment if the application is up to the standard they expect or demote it back to the Development stage and reporting the issues using Track Issues feature.
  • Number of mandatory checklist items will be available for every stage to ensure the quality of the tasks carried out during the promotion of a particular application version.
  • E.g., Code Completed*, Design Review Done*, Code Review Done* in Developement stage
  • Once the granted user promote the application to the next level, the proceeding promotion should be able to done via the next relevant user role. E.g., Once the developer promotes the application to the staging, it will go to the testing stage and the Governance page will show that the version is in the Testing stage, whereas the Promote button will be disabled since the Developer is restricted promoting it from Testing stage to Staging. But if the testing user logged in to the system and get on to the Governance tab of a particular application version, he or she will be able to see it is in Testing stage and Promote it to the next staging stage or demote it to the development stage.
  • A relevant user can view the version only in their stage and the ones they have promoted in to the next stage. E.g., A test user can view only the versions in the Testing stage and the staging stage. Upfront stage options will be disabled.
  • This will also have an option to download logs for the relevant application depends on the user role. E.g., A test user can download logs of testing and staging environment.

                                                          Governance View

Track Issues


  • User will be able to click on the link provided in this page and login to the Redmine to report and track issues by providing their credentials.
  • Summary of the issues reported, along with the status will be displayed in this section.

Configure Resources


  • Database Configurations, Datasources, Properties and API information will be configured using this section.
  • Each user role will be able to define their databases , properties etc using this section according to their environment.
  • Once a developer configures these information, the relevant user will be able to use the same datasource and configure their environment just by editing the URL, username and password.
  • Each user will be able to view their configurations and the upfront stage configurations as a usability feature.
    Exceptional : App Owner will not be able to view the production configurations/resources. That will only be available for the Dev ops.

                                           Configure Resource View

Wednesday, February 6, 2013

Steps to checkout and commit a WSO2 Appfactory GIT application.

WSO2 App Factory is a platform for managed application development for the entire lifecycle of applications. Supporting you from cradle to grave, you can create, develop, test, deploy to production and retire applications with a single click. Applications can be web applications to mobile apps that require any type of middleware to run on including even non-Java and non-WSO2 technologies.
For more information : 
 http://blog.cobia.net/cobiacomm/2012/04/16/what-is-wso2-appfactory/

Following steps will be useful for a user who is using git as the repository and to checkout the code of the created application and the steps till it is committed.

For The Ubuntu Environment

  1. First step should be installing GIT in to your machine. Therefore the following command should be executed.
    Command : $ sudo apt-get install git

  2. Check whether GIT is available in your machine now.
    Command : $ git init
    Response : Initialized empty Git repository in /home/../.git/

  3. Create a folder to archive the Git projects in to one location in your repository.
    Command : $ mkdir GITPROJECTS

  4. Add all the Git projects in to your repository by the following command.
    Command : GITPROJECTS$ git add .

  5. To get the GIT to Accept the certificate, type the following command.
    Command : GITPROJECTS$ export GIT_SSL_NO_VERIFY=1
    On Windows : (Right click on My Computer -> Properties -> Advanced System settings -> Environment Variables
    Add variable GIT_SSL_NO_VERIFY with value 1)

  6. To clone the particular project in to your repository, copy the (Clone/Check out) repository URL in the application Dashboard or the Repository page of the App Factory. (Only if you have developer or App Owner rights)
         Command : GITPROJECTS$ git clone https://git.appfactorypreview.wso2.com/git/MyApp.git
         Response : Cloning into 'MyApp'...
         Username for 'https://git.appfactorypreview.wso2.com': <Developer's username> e.g., ushani@wso2.com
         Password for 'https://ushani@wso2.com@git.appfactorypreview.wso2.com': *****
         remote: Counting objects: 23, done
         remote: Finding sources: 100% (23/23)
         remote: Getting sizes: 100% (14/14)
         remote: Compressing objects: 100% (13/13)
         remote: Total 23 (delta 4), reused 23 (delta 4)
         Unpacking objects: 100% (23/23), done.

  1. List down and check the project
    Command : GITPROJECTS$ ls
    Response : MyApp

  2. Go inside the project and check for the available branches in the repository
    Command : GITPROJECTS$ cd MyApp
    Command : MyApp$ git branch -r
    Response : origin/1.0.0
    origin/2.0.0
    origin/3.0.0
    origin/4.0.0
    origin/HEAD -> origin/master
    origin/master 

  3. To list down the local branches that you have, following command can be executed
    Command : MyApp$ git branch
    Response : * master
(* master means the trunk. The branch that you are currently working on will have a star next to it and if you have coloring turned on, will show the current branch in green)

  1. To create other branches in the local repository, following command should be executed.
    Command : MyApp$ git branch <version name>
                e.g, git branch 1.0.0 
                 
  2. Now check the created branch
    Command : MyApp$ git branch
    Response : 1.0.0
          * master

  3. To switch to 1.0.0, following command should be executed to check out the relevant code in to your local repository
    Command : MyApp$ git checkout 1.0.0
    Response : Switched to branch '1.0.0'
(*Steps 10 and 11 can be executed together by executing “git checkout -b 1.0.0”. Then it will branch out 1.0.0 and switch to it. When you type checkout and give the branch name, the source code you have in your local repository will be the given version's source code that is in the App Factory repository. If you type “git branch” you should see the 11th step response)

  1. Now it is the coding time. You can import your project in to a specific IDE (E.g., Eclipse) and do coding.

  2. You can install a toolkit which helps you to show the changes you have done in to your code by installing GITK (Generalized Interface Toolkit - GITK). To install, following command can be executed.
    Command : Downloads$ sudo apt-get install gitk
    (This step can be done as the 2nd step after installing git in your machine. For more reference on git, follow this manual on https://www.kernel.org/pub/software/scm/git/docs/gitk.html)

  3. After doing code level changes, when you type the following command, GIT window will be opened with the changes or mentioning the about the changes that you have to commit
    Command : MyApp$ gitk 
     
  4. By executing the following command you can view the changes in you terminal.
    Command : MyApp$ git diff

  5. To add all the changes following command should be executed.
    Command : MyApp$ git add *

  6. Using gitk, you can view the changes and the difference in a graphical interface by selecting the particular file or folder. (Use the manual in step 14 for more information)

  7. Now it is the time to commit if your build passes locally. Execute the following command to commit your code. Command : MyApp$ git commit -am "Committing changes"
    Response : ([1.0.0 9b736e4] Committing changes
    Committer: ushani <ushani@ushani...>
    Your name and email address were configured automatically based
    on your username and hostname. Please check that they are accurate.
    You can suppress this message by setting them explicitly:
    git config --global user.name "Your Name"
    git config --global user.email you@example.com
    After doing this, you may fix the identity used for this commit with:
    git commit --amend --reset-author
    1 file changed, 2 insertions(+) )
    (For more information on git commits, rollbacks, applying etc, use the following guide. http://gitref.org/basic/)


  8. To push the commits, execute, git push <remote>, where <remote> is the current branch’s remote (or origin, if no remote is configured for the current branch.
    Command : MyApp$ git push origin remotes/origin/1.0.0

    (For more information on git commits, rollbacks, applying etc, use the following guide. http://www.kernel.org/pub/software/scm/git/docs/git-push.html )
    Response :Username for 'https://git.appfactorypreview.wso2.com': ushani@wso2.com
    Password for 'https://ushani@wso2.com@git.appfactorypreview.wso2.com': *****
    remote: Updating references: 100% (1/1)
    To https://git.appfactorypreview.wso2.com/git/MyApp.git
    * [new branch] origin/1.0.0 -> origin/1.0.0

  9. You can pull the committed code by executing the following command to verify the changes are committed. (But not necessary)
    Command : MyApp$ git pull origin remotes/origin/1.0.0 
     
  10. Now in App factory, if you have selected the Auto Build and Auto Deploy options for the particular branch version, once you do a commit, within 6 minutes the latest version should be built and deployed in the cloud. Otherwise you have to manually build and deploy it.

  11. Now you can click on the Launch link and see it in the Developer's environment and if it is fine to go ahead, you can promote it to testing stage by the Governance tab.