Property | Description |
---|---|
Name |
The query table name must be unique in a Business Process Choreographer installation. When the query is run, this name is used to identify the query table that is queried.
A query table is uniquely identified using its name, which is defined as prefix.name. The maximum length ofprefix.name is 28 characters. The prefix must be different to the reserved prefix 'IBM', for example,'COMPANY.BUS_DATA'.
Do not use a digit at the end of the table name. If a table is used multiple times within a query, the name of the table is extended with a number ranging from 0 to 9. For example, CUSTOM_VIEW0, CUSTOM_VIEW1 and so on. If there is already a digit at the end of your table name, Business Process Choreographer will remove this digit, which causes an QueryUnknownTableException.
|
Database name | The name of the related table or view in the database. Only uppercase letters may be used. |
Database schema | The schema of the related table or view in the database. Only uppercase letters can be used. The database schema must be different to the database schema of the Business Process Choreographer database. Nevertheless, the table or view must be accessible with the same JDBC data source that is used to access the Business Process Choreographer database. |
Attributes | Attributes of supplemental query tables define the pieces of information that are available for queries. These attributes must match the related name of the columns in the related database table or view.
The attributes are defined with a name and a type. The name is defined in uppercase. The type is one of the following types:
|
Join | Joins must be defined on supplemental query tables if they are attached in composite query tables. A join defines which attributes are used to correlate information in the supplemental query table with the information in the primary query table. When a join is defined, the source attribute and the target attribute must be of the same type. |
Authorization | No authorization is specified for supplemental query tables, therefore, all authenticated users can see the contents. |
Tuesday, September 22, 2015
Supplemental query tables
TechMahendraQuestion
supplementary query tables
complemetary query tables
business rules
hibernet
jdbc out bound adapter
api
rest service
Human Task Inline and stand-alone human tasks
Inline and stand-alone human tasks
You can implement a human task as part of the logic of a BPEL process, or independently of other processes.
If the task is implemented within a BPEL process, it is called an inline task. Otherwise, it is referred to as a stand-alone task.
- Stand-alone tasks
Stand-alone tasks follow the service-oriented architecture (SOA) pattern and they are loosely coupled with the components that invoke them (to-do tasks), or the components that are invoked by them (invocation tasks). They can be wired to another component using the Service Component Architecture (SCA) infrastructure.
- Inline tasks
Inline tasks are an integral part of the BPEL process. Inline tasks can be to-do tasks, invocation tasks, or administration tasks. Because collaboration tasks rely on the interaction between people and do not directly interact with processes, they cannot be inline tasks. Inline tasks are neither visible as SCA components (cannot be wired), nor are they reusable in other processes or activities.
- Stand-alone tasks
Stand-alone tasks follow the service-oriented architecture (SOA) pattern and they are loosely coupled with the components that invoke them (to-do tasks), or the components that are invoked by them (invocation tasks). They can be wired to another component using the Service Component Architecture (SCA) infrastructure. - Inline tasks
Inline tasks are an integral part of the BPEL process. Inline tasks can be to-do tasks, invocation tasks, or administration tasks. Because collaboration tasks rely on the interaction between people and do not directly interact with processes, they cannot be inline tasks. Inline tasks are neither visible as SCA components (cannot be wired), nor are they reusable in other processes or activities.
Human Task
Types of human task
- To-do task
- This is where a service component (such as a business process) assigns a task to a human as something for that person to do.
- To see an example of a to-do task that you can build and run yourself, go to http://publib.boulder.ibm.com/bpcsamp/index.html, and clickHuman Task features > To-do task.Note: You will need a connection to the internet to view this example.
- Invocation task
- This is where a human can "assign" a task to a service component. In such a case, a human is invoking an automated service such as a business process.
- To see an example of an invocation task that you can build and run yourself, go to http://publib.boulder.ibm.com/bpcsamp/index.html, and click Human Task features > Invocation task.Note: You will need a connection to the internet to view this example.
- Collaboration task
- This is where a human assigns a task to another human.
- To see an example of a collaboration task that you can build and run yourself, go to http://publib.boulder.ibm.com/bpcsamp/index.html, and click Human Task features > Collaboration task.Note: You will need a connection to the internet to view this example.
- Administration task
- This type of task grants a human administrative powers such as the ability to suspend, terminate, restart, force-retry, or force-complete a business process. Administration tasks can be set up on either an invoke activity, or the process as a whole.
Friday, August 28, 2015
Trace Levels
com.ibm.ws.websvcs.*=all: com.ibm.ws.policyset.*=all: com.ibm.ws.wssecurity.*=all: com.ibm.ws.wsaddressing.*=all: com.ibm.ws.wstx.*=all: org.apache.axis2.*=all
For Adapter
com.ibm.j2ca* = all
For Trace JaxWS
com.ibm.ws.websvcs.trace.*=all: com.ibm.bpm.ws.jaxws.*=all
*=info:com.ibm.websphere.wssecurity.*=all:com.ibm.ws.webservices.wssecurity.*=all:com.ibm.wsspi.wssecurity.*=all:com.ibm.ws.wssecurity.*=all:com.ibm.xml.soapsec.*=all:com.ibm.ws.webservices.trace.*=all:com.ibm.ws.websvcs.trace.*=all:com.ibm.ws.webservices.multiprotocol.AgnosticService=all:
SerializerException:
*=info:com.ibm.wbiserver.map.*=all:SCA.*=all:ArtifactLoader=all:BOCore=all:BOFactory=all:BOXMLSerializer=all:
BOXMLDocument=all:BOTypeMetaData=all
It is recommended to set the number of historical trace files to 10 and the size of each historical trace file to 100MB, in case useful traces are overwritten. Please don't forget to disable the trace string after test.
1) Stop the server.
2) Remove all the existing logs trace and FFDCs so we have a more concise log output.
3) Restart the server.
4) Reproduce the issue and note the time the symptoms occurred.
5) Insure the trace covers the time period noted in step four above.
6) Zip up the profile's logs directory.
7) Send us the zip of the logs directory noting any errors, exceptions, or symptoms.
Friday, August 21, 2015
XPATH Expressions
- Size of list
- count(/body/createNewCaseDataRecordResponse/response/coverageList)!=0 and /body/createNewCaseDataRecordResponse/response/coverageList[position()>0]
- Filler
Date Format
- Format date in yyyyMMdd
Validate BO
*
*/
package com.humana.bpic.et.common.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.io.*;
import com.ibm.websphere.bo.*;
import com.ibm.websphere.sca.*;
import commonj.sdo.*;
/**
* @author sxd5347
*
*/
public class BOUtil {
private static BOXMLSerializer xmlSerializer = (BOXMLSerializer) ServiceManager.INSTANCE
.locateService("com/ibm/websphere/bo/BOXMLSerializer");
private static BOFactory boFactory = (BOFactory) ServiceManager.INSTANCE
.locateService("com/ibm/websphere/bo/BOFactory");
private static BOInstanceValidator instanceValidator=(BOInstanceValidator) ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BOInstanceValidator");
public static BOFactory getBOFactory() {
return boFactory;
}
public static DataObject createBO(String uri, String boType) {
return boFactory.create(uri, boType);
}
public static DataObject createByElement(String uri, String elementName) {
return boFactory.createByElement(uri, elementName);
}
public static String boToString(DataObject bo) {
String result = "";
if (bo == null)
return result;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
xmlSerializer.writeDataObject(bo, bo.getType().getURI(),
getBOName(bo), bos);
result = new String(bos.toByteArray());
} catch (Exception ex) {
ex.printStackTrace();
}
return result;
}
public static String formatDate(Date date){
String formattedDate1 = "";
String DATE_FORMAT_NOW = "yyyy-MM-dd";
if(date == null)
return formattedDate1;
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
String formattedDate = sdf.format(date );
StringTokenizer st = new StringTokenizer(formattedDate,"-");
while(st.hasMoreTokens()){
formattedDate1 = formattedDate1.concat(st.nextToken());
}
return formattedDate1;
}
public static String toString(DataObject bo) {
String result = "";
if (bo == null)
return result;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
xmlSerializer.writeDataObject(bo, bo.getType().getURI(),
getBOName(bo), bos);
result = new String(bos.toByteArray());
} catch (Exception ex) {
ex.printStackTrace();
}
return result;
}
public static String getBOName(DataObject bo) {
String boName = bo.getType().getName();
if (boName.indexOf("BaseType") > 0)
boName = boName.substring(0, boName.indexOf("BaseType"));
else if (boName.indexOf("Type") > 0)
boName = boName.substring(0, boName.indexOf("Type"));
return boName;
}
public static String exceptionToString(Throwable t) {
String str = null;
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
str = sw.toString();
try {
pw.close();
sw.close();
} catch (IOException e) {
}
if (str == null)
str = t.getMessage();
return str;
}
public static BOInstanceValidator getBOValidator()
{
return instanceValidator;
}
public static Map validateData(DataObject input)
{
List validationErrorList=new ArrayList();
Map resultMap=new HashMap();
//System.out.println("****validation starts for "+input);
boolean isValid=com.humana.bpic.et.common.util.BOUtil.getBOValidator().validate(input,validationErrorList);
//System.out.println("*** isValid "+isValid);
if (!isValid) {
java.util.Iterator errorList = validationErrorList.iterator();
while(errorList.hasNext()){
DataObject error = (DataObject)errorList.next();
String prop=(String)error.get("property");
String val=(String)error.get("message");
//System.out.println("Error property: " + prop);
//System.out.println("Error message: " + val);
if(val.indexOf("The type definition cannot be abstract for element")>=0)
{
//System.out.println("***ignoring type definition error messages ");
}
else
resultMap.put(prop,val );
}
}
return resultMap;
}
public static Date dtTimeFormatt(Date input) throws ParseException{
SimpleDateFormat sdt=new SimpleDateFormat("yyyy-MM-dd");
String inputDtString=sdt.format(input);
System.out.println("inputdtString ="+inputDtString);
inputDtString+=" 00:00:00";
SimpleDateFormat sdt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dtTimeStamp=sdt2.parse(inputDtString);
System.out.println("***dateTime "+dtTimeStamp);
return dtTimeStamp;
}
Read Value From Properties File
Usage:
smo.set("/headers/SMOHeader/Target/address",ESIPropertyReader.getString("URAAP_MQ_URL"));
Properties File(ESIEnvironment.properties)
MTV_MEMBER_READ_URL=http://dev-enrollmentapi.humana.com/Member/api/members/stub/
MTV_MEMBER_CREATE_URL=http://dev-enrollmentapi.humana.com/Member/api/Members
MTV_MEMBER_SEARCH_URL=http://dev-enrollmentapi.humana.com/Member/api/members/Search
MTV_GROUP_READ_URL=http://dev-enrollmentapi.humana.com/Group/api/groups/
MTV_GROUP_CREATE_URL=http://dev-enrollmentapi.humana.com/Group/api/groups
URAAP_MQ_URL=wmq:/msg/queue/QA.BS.ESI.URAAP.EVENTS.DEV
SOLAR_MQ_URL=wmq:/msg/queue/QA.BS.ESI.SOLAR.EVENTS.DEV
SDR_MQ_URL=wmq:/msg/queue/QA.BS.ESI.SDR.EVENTS.DEV
PBS_MQ_URL=wmq:/msg/queue/QA.BS.ESI.PBS.EVENTS.DEV