Monday, December 12, 2016

Interface Creation and Deployment

Interfaces are very important feature in Conceptwave to interact with external systems from CW.
Interfaces works in concept of Webservices. We have to build a webservice to connect to external system by defining request and response data structures.

Creating an Interface

Open Interfaces perspective from designer and create a new name space with required name say empService.
Suppose input elements are empId, empDepartment to get employee details then we have create one request data structure with empId and empDepartment by specifying required data type.
Next we have to create response data structure. Suppose if our response type is JSON and structure is like below

empService{
empDetails{
empId: “12345”,
empName: “Test”,
empDesignation: “Professional”,
empSal:10000
}
}

We have to create a data structure empService and under to it empDetails and under to it, define the fields with required datatypes.

After this we have create external service under Metadata object and Bind Service and Port configurations. We have to specify what the response type like XML, text is or JSON as we are using REST based webservice which supports all the other formats apart from XML (SOAP supports only XML).

We have to specify what is our request type and response type and their data structures in bind services etc.
After completion of all these creations, we have to build this service to a Jar file by using Build JAR from Conceptwave design studio.

Now we have a jar like empService.jar which we have to place it in library files and templates of our metadata and specify this new jar details in headerMetadata file which will read all our metadata objects and load those into our designer studio.

Configuring a Service

After jar configurations, we have to specify the endpoint URL to hit the service for response retrieval. This will be done in config mode (say http://localhost:8081/cwf/config) and locate to empServie under Services tab and provide the endpoint URL over there like http://empService:8082/getEmpDetails

Note: Based on our requirement we have choose REST method whether its GET/POST/PUT/DELETE.

Building a Sample

Problem: Saving employee data say empId, empName, empAddress, empSal into database under employee table (tbl_Employee) and display the saved results in a table format and perform update, delete operations too.

Solution:

Step 1 – UI Creation:

Create UI from Presentation Metadata by extending any of the base UI elements say common.baseDataEntryUI or common.baseUI (based on your requirement). On creation of UI we will get elements of that UI like Default, Content Form etc. in the UI structure in the left pane and in the right pane its General properties, variable declarations and function declarations which will be used to perform our operations.
From presentation User Interface, create vertical/horizontal layouts under default/content form (developer choice). But if we create our forms and all under content data form we have to specify those details under Default too. We can also create new forms under that UI structure and link those forms to default/content UI (we have an option in right pane to select the custom forms).

After creating layout, create a From under to it. All these can be done by doing a right click on the required objects and choosing our elements.  After creation of form, we can add the require elements like empId, empName, empAddress, empSal as text fields, Save, Cancel as a buttons.  After creation of elements in the right pane we will get all the attributes that those elements contain. Here we can specify name, display label, data we wanted to display to that field (saved data), text data max size, type of data allowed, operation on that particular fields like onClick methods, run trigger on selection of any field, onBlur events, editable or not, visible permissions, any dynamic label, tooltip, label/field alignment etc.

One important point here is, we will be saving all our data and retrieve the data with use of Document (Document creation will be explained in below section) which will perform validations too on the fields.

Step2 – Document Creation:

We can create documents under data dictionaries and create variables under to it to store those into database and if required to retrieve the data too.  After creation of new document we will be getting General, Variables and Methods tabs in right pane.

In this example we have to create variables as empId, empName, empDesignation, empSal for storing purpose and I wanted to get empDesignation a dropdown which I will get values dynamically using custom datatype (custom datatype creation is already discussed on earlier post under Conceptwave Metadata). 

Suppose if we wanted to impose some validations on empName then from Variables tab, click on that empName variable and at the bottom we have an option to add method to a variable say my method name is validateEmpName where we can perform all our checks and we can define our customized error message to if the conditions are not satisfied which we can display as page level validation message and error icon beside to that particular text field.

We can map this document to database table using mapping configuration under Database tab in the right pane.  So on calling this save method on this document (empDoc.save()) all the field values will be saved under tbl_Employee table.

We can also retrieve on load of page values too from the document. And these variables will be referred in UI layer like empDoc.empId, empDoc.empName etc.

Step 3 – Custom Datatype Creation:

As we have opted empDesignation to get dynamically refreshed, we use finder to fetch the results and can create the empDesignation data type as explained in Conceptwave Metadata post.

Step 4 – Finder Creation:

We have to create a finder (can go with SQL/Script finders as per the developer choice) from the metadata objects. After creation of finder we have to specify input and output documents too and we will have result Form view inbuilt to display the results after saving the information to tbl_Employee table.

Node configurations and Database settings

After installation of Conceptwave then we have to do all node configurations to connect to CW and database configurations to map logical and physical connections and also we have to configure any services that we wanted to connect to external interfaces as well.

Conceptwave Metadata

As this blog is more for Conceptwave technical discussions, so starting with Metadata that we have in Conceptwave briefly.

Metadata Objects :

We have lot many on Metadata and below covers on most used in day to day applications.
  1. Data Types
  2. Data Structures
  3. Documents
  4. User Interfaces (Presentation UI)
  5. Finders
  6. Global Scripts
  7. Processes
Data Types :

As we know, in any programming language we need to define some variables to do some operations. Conceptwave also contains different types of inbuilt data types like String, integer, Boolean, double etc. In addition to it, we can define our own data types too and assign the values to that data type dynamically (from Finders etc or from Code tables etc) or statically (from enumeration values etc). 

Defining own datatype:

1. Dynamic Way
: Suppose, if we wanted to create a one country data type display as a drop down values dynamically based on new countries addition or update or deletion below are the steps.

Step 1 : In your UI write the logic to get the results (we can use script finder or SQL finder based on requirement) and set the parameter with some parameter name using Global.setSessionParameter.

Step 2: Create one finder and get the session parameter details using Global.getSessionParameter.

Step 3 : Create new data type and in the properties of this data type, we will find one option to select the finder which is created in Step 2.

After completion of these steps, we declare variables from UI and assign this data type to it which will give us results every time (based on updates/additions/deletions).

We can also get the results dynamically from Code tables (based on table entries) for this data types. For this purpose we have to provide code table name in properties tab of data type.

2. Static Way : Suppose, if we wanted to create a data type with some standard values then we can provide enumeration values by adding those from designer. 

Data Structures:

Data Structures allow us to define our own data structure to perform our business logic by adding list of things to it. To write our own interfaces also we have to provide our request and response data structures to process further.

Documents:

We can create document and link that to UI to perform field level validations and to store or retrieve data from the data base.

Suppose, we wanted to save 2 UI field details say Customer Id and Customer Name to a table tbl_customer then we can create a document with these 2 fields and map the document values to the table in the database and save the values using <yourDoc>.save(). We can link this document to UI by adding this into variables list under Variables tab of that UI.

We can also perform validations on these fields and display error icon beside the fields if they are any validation violations as part of page leave validations.

We will be using these documents as input or output document in finders etc too.

User Interface (Presentation UI) :

This is used to create our View layer. We have almost all the elements that we have it in HTML like Forms, text fields, buttons, select box, search type etc in Conceptwave too. But the facility that Conceptwave provide is, we need not to write all the tags like HTML for instance <form/>, <input/>, <button/> etc., as it has all these inbuilt. So we just click and select the required input type and make use of those features.

After adding the required elements we can specify name, display label, data we wanted to display to that field (saved data), text data max size, type of data allowed, operation on that particular fields like onClick methods, run trigger on selection of any field, onBlur events, editable or not, visible permissions, any dynamic label, tooltip, label/field alignment etc.

As described, we will link documents to UI to save, retrieve data and perform validations too. To enable validations on the documents by default we have to check validate check box after adding document to UI under variables tab.

We can link one UI to another UI as well but adding child UI under variables tab which will behave like parent and child. We can get the objects/variables from parent UI to child UI using this.parent.<variableName/functionName>.

We can also open new dialog windows as well using common.dialog.

We can display alert messages and all too as we do in HTML.

Finders:

Finders are mainly used to get result data and display them in table format using result form.

We have different types of finders in Conceptwave like
  • Script Finders
  • SQL Finders
  • Document Finders
  • Rule Finders 
Based on the requirement we have to choose the finder. Suppose, if we wanted to retrieve results from completely through SQL queries then we can go for SQL finders. If we wanted to write our logic based on some variable values and perform some java script operations then we can go with Script finders etc.

Global Scripts:

Apart from writing function as part of UI, we can write global scripts too which are mainly used for reusable purpose.

Note: We can modify global scripts during run-time too without stopping designer.

Processes: 

This is another useful feature of Conceptwave. We can use these processes to automate user operations for online applications where user intention is not required. 

We will be using CW workflow to achieve these. We will be building up a flow diagram similar to our flow chart.

This workflow contains start of the process, conditions and from conditions related operations will be performed and after completion of all these process we will end it. We can also use sub-processes too in these processes.

We have 2 types of processes in Conceptwave.

1. User Process
2. Global Process

User process will gets invoked based on some User Action but Global processes will gets invoked automatically. Use Global business process for high CPU or high memory or complex business process. Which will help us to separate the UI and Business process in different Nodes. This will help us to reduce the load and avoid GCs in UI servers. So we can ensure the application availability to 100%.


Thursday, December 8, 2016

Getting Started

As many of Telecom Industries are using Conceptwave for their Order Management and Order Fulfilment it has becoming hot cake day by day.

But only the problem to learn Conceptwave is lack of material in Online as its a new and licensed version we see very less information about Conceptwave.

Conceptwave is a framework to perform Order Management, Catalog Management, Order fulfilment effectively which will reduce most of the burden on Communication Service Providers(CSP).

ConceptWave Order Care automates product and service lifecycles, from initial product conception, through design and rollout, to eventual retirement. Once a product is created, ConceptWave’s out-of-the-box solutions manage individual customer orders, from order entry and validation through to the decomposition of that order as it interacts with downstream systems like inventory, delivery, and billing. 

The ConceptWave Order Care portfolio includes these modules: 

  • ·    Catalog Management: A comprehensive product and service catalog solution that reduces time-to-market for new product launches and provides a consistent and high-quality customer experience.
  • ·    Order Negotiations: A fully customization order entry system that lowers the cost per order, speeds time-to-revenue, and improves cross- and up-sell. 
  • ·    Order Management: An order management solution that increases customer satisfaction and loyalty, and decreases costs and revenue leakage through accurate, successfully fulfilled orders.
  • ·     Order Analytics: An analytics engine that maximizes order-to-cash with a 360° real-time view of the order lifecycle.

Prerequisites to learn Conceptwave :

Knowledge on Java, JavaScript.

Good understanding on Web services.

Conceptwave Hardware Concepts

Conceptwave Velocity studio is licensed software provided by Ericsson.

As a package, we will get Conceptwave designer and its in built server to it.

We have different versions on Conceptwave like 5.2, 14.2, 16.0 and 16.2 is being most recent.

Installing Conceptwave:

Once we get Conceptwave software download click on install exe and provide license key that’s it.

Note: It’s a heavy weight tool which occupies more space.

We can set memory parameters from setVar.cmd file which will present under designer --> env folder after installation.

Understanding Conceptwave Business purpose

As CSPs(Communication Service Providers) look to simplify product design, product management, supplier management, ordering and fulfilment, they are forced to re-evaluate operations support infrastructure. However, the industry is very apprehensive of traditional migration approaches consisting of a “big bang” type of transformation that frequently result in colossal disruptions to business and, ultimately, failure in capturing the expected ROI. With order fallout at an all-time high, and mounting pressure to lower fulfilment and service delivery costs, operators must find a solution for flexible and automated orchestration of the end-to-end process to better manage the customer experience.

To make cost-effective investments, forward-looking CSPs are executing next generation OSS strategies based on frameworks including TeleManagement Forum (TMF) NGOSS architecture, service oriented architecture (SOA) principles, and best of breed application vendors, to revamp their back-office systems for next generation needs. A key enabler of this is a flexible ordering and fulfilment platform powered by a dynamic enterprise catalog. Formulating a dynamic enterprise catalog strategy to drive order fulfilment and orchestration across multiple networks and systems is a critical first step that ensures seamless migration to a next generation architecture.

A dynamic enterprise catalog should enable the federation of underlying catalogs, whether located within the catalog manager itself, in other OSS/BSS CSP systems, or within supplier-provided catalogs. As a highly configurable management solution, ConceptWave Order Care is a fully-featured catalog manager handling promotions, up-sell/cross-sell functionality and life cycle management through a fully-integrated Web 2.0 enabled platform. By applying a complex set of business rules to ensure the selected configuration is workable, ConceptWave enables an improved customer experience by permitting the end-user to pick-and-choose the services and features desired. The enterprise catalog can then present a customised bundle back to the client as a unique offering, specifically tailored to their needs.

ConceptWave Order Care’s metadata driven catalog model supports the definition of virtually any type of product and service as well as innovative combinations and bundles, with the ability to centrally define the relationship among products, features, availability and pricing rules. Utilising a user-friendly administration, ConceptWave Order Care® facilitates rapid deployment of product bundles and price promotions to enable up-selling and cross-selling through targeted, personalised offers and promotions to increase ARPU. With ConceptWave’s dynamic enterprise catalog, CSPs can leverage a flexible data model that can be used either as a product catalog, service catalog or, if required, both to achieve unparalleled, centralised customer order and service order management.

A configuration driven rules engine that enforces product availability and eligibility is key to a powerful dynamic enterprise catalog. ConceptWave Order Care’s extendable framework provides comprehensive customization capabilities, enabling the rapid implementation of complex service provider-specific business rules. By enabling an offer directed order entry process, CSR applications and self-service portals can be transformed from simple order capture tools to a sophisticated, tailored product browsing and ordering experience, resulting in improved order to cash cycles.

With ConceptWave Order Care , CSPs can optimize each customer interaction to improve customer loyalty as well as increase ARPU through geographic, demographic and other subscriber targeted up-sell and cross-sell promotions. To protect the CSP’s investment from future changes to the back-office technology and application architecture, ConceptWave Order Care’s enterprise catalog is compliant with the TM Forum SID model, and provides both SID based API access or optimized proprietary API access for CRM, billing and provisioning systems ensuring a seamless migration path with current and future investments.