I was doing a training recently and the audience was predominantly technical. They knew WSDL, BPEL, JCA etc. One question that came up was why do we need lanes and pools. There is no implementation artifact being directly created based on lanes.
I could easily point that Pools are process boundaries, and I could see heads nodding. Even then questions remained about boundaries of pools. Then the question became why lanes?
At that point I realized that it is more important to emphasize the reason why people do BPM. It is not just to draw pretty pictures, it is :
to have a common understanding of processes;
to identify and document their processes as is;
to identify inter and intra departmental communications;
to find the bottlenecks;
to ensure that the processes as defined / documented is the same as implemented.
Once you see this value proposition of a BPM project, the value of pools and lanes becomes obvious. Pools help you identify the exact boundaries of your process. Pools will also show you inter-departmental communications - often the bottlenecks.
Lanes facilitate clear identification of roles and responsibilities within the organization. Identification of ownership of a given activity is at times the biggest reason why that activity will be performed in time. The intra communication points between various parts of your organization can be found using lanes.
That in summary is the value of using lanes and pools to document your process.
Sunday, September 02, 2007
Sunday, August 19, 2007
Business and IT views
I have been looking at the perspective of a business user and comparing that with one of an IT developer. Very interesting observation: let me begin with an example,
Business user view (BPMN):
1. Lets do a credit check. (Activity)
2. If good score do X, if avg do Y and if below avg do Z. (Gateway)
How does this get implemented by IT
Step 1: Credit Check.
1. How do we do credit check - automatic using a computer system or a human operator keying in values and getting the credit score?
2. Is it existing customer or a new customer?
--If existing and in good standing do we still need a credit check?
--- If not existing customer, lets get credit score from Experian.
3. Or should we get multiple scores and then average them out.
4. What happens if I dont get a response back from Experian in 2 minutes given a SSN? Should our IT system try multiple times - of course but then how many 5 -10 and at what interval?
These are SOME of the challenges that your IT staff will need to answer to implement a so called single step in your business process.
Does the solution you are looking at provide this ability?
Moreover, if Experian astarted charging you more $ for the credit check how easily can you move your business to start using scores from Equifax?
Will you need professional services from the vendor to make changes?
Or do you think the solution is standards based so you can have your IT staff make the changes internally?
How about a tool that lets the business user design their business process with the simplicity as outlined in the Business View and gives IT users freedom to implement this activity in keeping with organizational IT policies. Well does something like this exist? Have a closer look at Oracle BPA Suite. - Apologies for the product pitch but yes this tool does preserve the simplicity of BPMN and also gives the IT developer the power to implement the activity as a unit with all these intricacies.
Business user view (BPMN):
1. Lets do a credit check. (Activity)
2. If good score do X, if avg do Y and if below avg do Z. (Gateway)
How does this get implemented by IT
Step 1: Credit Check.
1. How do we do credit check - automatic using a computer system or a human operator keying in values and getting the credit score?
2. Is it existing customer or a new customer?
--If existing and in good standing do we still need a credit check?
--- If not existing customer, lets get credit score from Experian.
3. Or should we get multiple scores and then average them out.
4. What happens if I dont get a response back from Experian in 2 minutes given a SSN? Should our IT system try multiple times - of course but then how many 5 -10 and at what interval?
These are SOME of the challenges that your IT staff will need to answer to implement a so called single step in your business process.
Does the solution you are looking at provide this ability?
Moreover, if Experian astarted charging you more $ for the credit check how easily can you move your business to start using scores from Equifax?
Will you need professional services from the vendor to make changes?
Or do you think the solution is standards based so you can have your IT staff make the changes internally?
How about a tool that lets the business user design their business process with the simplicity as outlined in the Business View and gives IT users freedom to implement this activity in keeping with organizational IT policies. Well does something like this exist? Have a closer look at Oracle BPA Suite. - Apologies for the product pitch but yes this tool does preserve the simplicity of BPMN and also gives the IT developer the power to implement the activity as a unit with all these intricacies.
Wednesday, August 01, 2007
What is BPM - a quest, a journey
I was talking to abunch of people at OMG's BPM think tank and there was a lot of confusion about what exactly is BPM.
Instead of trying to define what BPM is - lets see what is it that people are trying to achieve when they are talking BPM.
Cat 1 - Business users needing to document their processes
Cat 2 - Single project champions, take one process at a time, design and deploy it.
Cat 3 - Users seeking Enterprise BPM.
Cat 1 users can use any tool.
Cat 2 users may succeed in their specific project but then taking it to the next level is going to be a tall order. Reusing vendor specific components will be hard, if not impossible and definitely increase the TCO (total cost of ownership) manifold. Do you want vendor specific code etc to lock your enterprise wide components. Or do you want open standards based implementations.
This leads us to the third category of users who are starting small but thinking big. The components they build will be standard compliant, can be independently reused, change their specific implementation based on new business requirements / technological advancement and would therefore be an enterprise asset. The TCO will be lower if your solution uses industry wide standards adopted by majority of tool vendors, thus guaranteeing a wider skill pool as well.
Hopefully, based on the above there can be a better appreciation and common understanding of BPM but I am sure it is much more than just the categories of use cases. More later.
Instead of trying to define what BPM is - lets see what is it that people are trying to achieve when they are talking BPM.
Cat 1 - Business users needing to document their processes
Cat 2 - Single project champions, take one process at a time, design and deploy it.
Cat 3 - Users seeking Enterprise BPM.
Cat 1 users can use any tool.
Cat 2 users may succeed in their specific project but then taking it to the next level is going to be a tall order. Reusing vendor specific components will be hard, if not impossible and definitely increase the TCO (total cost of ownership) manifold. Do you want vendor specific code etc to lock your enterprise wide components. Or do you want open standards based implementations.
This leads us to the third category of users who are starting small but thinking big. The components they build will be standard compliant, can be independently reused, change their specific implementation based on new business requirements / technological advancement and would therefore be an enterprise asset. The TCO will be lower if your solution uses industry wide standards adopted by majority of tool vendors, thus guaranteeing a wider skill pool as well.
Hopefully, based on the above there can be a better appreciation and common understanding of BPM but I am sure it is much more than just the categories of use cases. More later.
Wednesday, July 25, 2007
Blogware
I have coined this term - well there is a tool by that name but I can still say that this is term for "furthering your opinions under the garb of a blogger".
Now back to BPM - BPEL is not for humans- this is a thing I read on many blogs. However nothing can be farther from the truth. BPEL is extensible by nature, it allows a process developer to call out to any standard workflow service and create a Human Task. On completion the workflow server can update the process back / BPEL process can detect that the task has been marked complete and carry on the execution of the process.
Thankfully, there is a spec BPEL4People to answer all the acronym happy analysts and bloggers!
Now back to BPM - BPEL is not for humans- this is a thing I read on many blogs. However nothing can be farther from the truth. BPEL is extensible by nature, it allows a process developer to call out to any standard workflow service and create a Human Task. On completion the workflow server can update the process back / BPEL process can detect that the task has been marked complete and carry on the execution of the process.
Thankfully, there is a spec BPEL4People to answer all the acronym happy analysts and bloggers!
OMG - BPM - BPMN - ?
Spent three crucial days at OMG's BPM think tank. What I heard :
1. Standards are not important to business users. I heard this more than once - at an OMG conference thats interesting to say the least. My take - if standards dont matter than the analysts are going to make the same mistakes they did earlier. Custom made / built applications -> higher TCO (total cost of ownership) -> deal with costly Professional services folks :(
2. There is no common definition of BPM - among vendors, among anlysts and .... customers.
3. Field day for independent consultants to make even more consluting dollars while this conundrum lasts.
4. BPEL - the engine that executes your processes - I am surprised that the execution work horse is not being given its due.
5. ITP commerce had a good demo and were willing to show it to one and all - unlike other big name vendors and sponsors.
6. A new acronym BPDM was introduced. The spec does not have a XSD. Looks like a rushed attempt by one (or two) vendors - I may say. Even some of the (other) authors declined to comment / give more details.
1. Standards are not important to business users. I heard this more than once - at an OMG conference thats interesting to say the least. My take - if standards dont matter than the analysts are going to make the same mistakes they did earlier. Custom made / built applications -> higher TCO (total cost of ownership) -> deal with costly Professional services folks :(
2. There is no common definition of BPM - among vendors, among anlysts and .... customers.
3. Field day for independent consultants to make even more consluting dollars while this conundrum lasts.
4. BPEL - the engine that executes your processes - I am surprised that the execution work horse is not being given its due.
5. ITP commerce had a good demo and were willing to show it to one and all - unlike other big name vendors and sponsors.
6. A new acronym BPDM was introduced. The spec does not have a XSD. Looks like a rushed attempt by one (or two) vendors - I may say. Even some of the (other) authors declined to comment / give more details.
Friday, July 13, 2007
BP Publisher
BP Publisher problem - : "BP Publisher problem - no models published
Checklist of things when publishing:
1. Login with the correct Filter.
2. Make sure that model types are included in the filter
3. Ensure User permission to view the models.
4. Ensure groups have hte permission
5. Last but not the least - makse sure the web export is activated. "
Checklist of things when publishing:
1. Login with the correct Filter.
2. Make sure that model types are included in the filter
3. Ensure User permission to view the models.
4. Ensure groups have hte permission
5. Last but not the least - makse sure the web export is activated. "
Sunday, July 08, 2007
Pools and Processes
BPMN spec suggests usage of pool as a boundary for a process. Specifically for internal private and abstract processes.
For an internal process - the mapping to a single process is an obvious choice. The whole goal of defining an internal process using BPMN is to be able to capture the sequence of steps required to accomplish a particular business goal. In terms of mapping an internal process definition to an executable notation. BPEL is an obvious choice for mapping to execuatble. It is industry standard for orchestrating services and human interaction (even more so with bpel4people spec).
For abstract processes again mapping a process to one BPEL4WS abstract process is the recommended approach. Even though the current version of spec does not delve into the mappings.
For an internal process - the mapping to a single process is an obvious choice. The whole goal of defining an internal process using BPMN is to be able to capture the sequence of steps required to accomplish a particular business goal. In terms of mapping an internal process definition to an executable notation. BPEL is an obvious choice for mapping to execuatble. It is industry standard for orchestrating services and human interaction (even more so with bpel4people spec).
For abstract processes again mapping a process to one BPEL4WS abstract process is the recommended approach. Even though the current version of spec does not delve into the mappings.
Saturday, June 30, 2007
BPMN value proposition
BPMN has few obvious value propositions:
1. Common notations.
2. Depicts sequence of flow in an e2e process.
3. Identifies messages between various.
It is meant for the whole spectrum of business users both very high level and very detail oriented business process modelers. A set of business users can document their processes; starting from a broad set of activities and decision points to a detailed process definition which captures the intricacies of everyday business including specific details of activities, conditions of gateways, default branches, subprocesses, exception handling and so on.
This will ensure that businesses understand themselves and their processes, are able to document those processes in simple notation and identify the participants. This will ensure that the business can be agile when it comes to adopting new requirements both internal to the org as well as external.
Further it facilitates IT to capture correct business requirements - validate those requirements, understand and capture corner cases. The notation being business user friendly still retains its value.
Another advantage is being able to identify coarse business services which can be further mapped to actual IT services or a combination thereof.
To give an analogy it will do the same to business prcoess modeling as what UML did to software engg, WSDL did to service description.
more details at http://www.bpmn.org
1. Common notations.
2. Depicts sequence of flow in an e2e process.
3. Identifies messages between various.
It is meant for the whole spectrum of business users both very high level and very detail oriented business process modelers. A set of business users can document their processes; starting from a broad set of activities and decision points to a detailed process definition which captures the intricacies of everyday business including specific details of activities, conditions of gateways, default branches, subprocesses, exception handling and so on.
This will ensure that businesses understand themselves and their processes, are able to document those processes in simple notation and identify the participants. This will ensure that the business can be agile when it comes to adopting new requirements both internal to the org as well as external.
Further it facilitates IT to capture correct business requirements - validate those requirements, understand and capture corner cases. The notation being business user friendly still retains its value.
Another advantage is being able to identify coarse business services which can be further mapped to actual IT services or a combination thereof.
To give an analogy it will do the same to business prcoess modeling as what UML did to software engg, WSDL did to service description.
more details at http://www.bpmn.org
Tuesday, June 26, 2007
BPMN and BPEL
BPMN is a standardized graphical notation for drawing business processes. The standard has seen considerable traction in the BPM industry. Several pure play vendors have now BPMN representations supported out of the box in the modeling tool. Evidently, the first version of the spec wants to standardize the business process modeling notation. The spec very wisely provides a direct mapping to BPEL for execution. This further adds in favor of close tie up between business processes modeling and loosely coupled IT infrastructure.
The BPD modeled using BPMN can be easily realized as a BPEL process. The BPEL process may not be syntactically complete but has all the semantic elements correctly captured. The business definition of the process is captured with sanctity and transparently provided to IT as a blueprint for implementation.
The BPD modeled using BPMN can be easily realized as a BPEL process. The BPEL process may not be syntactically complete but has all the semantic elements correctly captured. The business definition of the process is captured with sanctity and transparently provided to IT as a blueprint for implementation.
BPM + SOA = Agile business
There has been a constant need for closer alignment of software with business। Instead of locking all the business process logic in a bunch of programming routines, SOA facilitates disparate independent services that can be orchestrated to accomplish business goals. This paradigm also ensures agile businesses that can accommodate changing business requirements. BPM is now complemented by middleware technologies for agility, and within middleware BPM and Service Oriented Architecture (SOA) lead the charge। BPM is an investment in future agility of the enterprise। BPM and SOA together define a new business and IT world, which requires driving innovation and agility based on existing IT systems. The new paradigm promotes loosely coupled IT systems, which replace tightly integrated, hard-wired packaged applications; inherent is the paradigm of business excellence rather than functional excellence. It is difficult for business to predict the future needs of modification of business processes and hence the requirement to keep the processes loosely coupled becomes even more important. IT across industry has been adopting rapidly to SOA. BPEL has become the defacto standard for web services orchestration and integration. It is layered on top of Web services and XML and different component building blocks. Most people are already working in SOAP, WSDL, XML, and XML Schema, and most companies are already moving toward XML-based integration.
Sunday, June 24, 2007
BPM Terminology
BPM - Business Process Management, some people also use it for Business Process Modeling.
BPMN - Business Process Modeling Notation - A standard notation orgininally defined by BPMI and subsequently owned and released by OMG. Pl note it is just a notation and has no serialization. It does define a mapping to BPEL4WS.
BPEL - Business Process Execution Language - This is the OASIS standard for orchestrating web services to execute business processes.
BPMS - Business Process Management Suites - A term used for product (or a set thereof) that provides definition and execution of business processes.
BPDM - Business Process Definition Metamodel - A meta model proposal for serializing BPMN diagrams. It is in RFP stage.
XPDL - XML Process Definition Language
BPMN - Business Process Modeling Notation - A standard notation orgininally defined by BPMI and subsequently owned and released by OMG. Pl note it is just a notation and has no serialization. It does define a mapping to BPEL4WS.
BPEL - Business Process Execution Language - This is the OASIS standard for orchestrating web services to execute business processes.
BPMS - Business Process Management Suites - A term used for product (or a set thereof) that provides definition and execution of business processes.
BPDM - Business Process Definition Metamodel - A meta model proposal for serializing BPMN diagrams. It is in RFP stage.
XPDL - XML Process Definition Language
BPM - Demystifying Business
Business users and business process modeling mean different things to different people.
One the one end of the spectrum are business users who know their processes in their mind. On the other end of the spectrum are business users who have sufficient technology background and will to make their hands dirty with service definitions.
As for BPModel, again everything from a flow chart on a white board to a graphical representation in a tool is construed as a businesss process model.
One the one end of the spectrum are business users who know their processes in their mind. On the other end of the spectrum are business users who have sufficient technology background and will to make their hands dirty with service definitions.
As for BPModel, again everything from a flow chart on a white board to a graphical representation in a tool is construed as a businesss process model.
Friday, June 04, 2004
administration funcs for oc4j
Usage: java -jar admin.jar ormi://host.domain.com<:port> username password [comm
and]
Commands are:
-shutdown [force|ordinary] [reason] - shuts the entire server down
-restart [reason] - restarts the entire server
-deploy [subswitches] - (re)deploys an application. Sub-switches are:
-file [filename] - Enterprise Archive to deploy
-deploymentName [name] - Name of the application deployment
-targetPath [path] - The path on the remote OS to place the archive at. If no
t specified the applications directory is used
-parent [name] - Specifying parent application of this application, the defau
lt is the global ('default') application
-deploymentDirectory [path] - Root of the deployment configurations, "[NONE]"
to place them inside the .ear
-cluster - Signals that the deployment should be propagated to other live clu
ster nodes if part of a cluster
-iiopClientJar - the path on the local OS to place the jar file containing th
e application client stubs
-undeploy [application name] [subswitches] - remove a previously deployed applic
ation
-keepFiles - keep the generated application's files.
-site [subswitches] - configures a site. Sub-switches are:
-add - adds a site
-host [host] - host/IP of this site
-port [port] - port of this site
-display-name [display-name] - display name of this site
-virtual-hosts [virtual-hosts] - virtual hosts of this site
-secure [secure] - true if this site is secure; otherwise false
-factory [factory] - name of SSLServerSocketFactory implementation if not
using JSSE
-keystore [keystore] - the relative/absolute path to a keystore used by th
is site
-storepass [storepass] - keystore password
-provider [provider] - the provider used if not using JSSE
-needs-client-auth [needs-client-auth] - true if needs client auth; otherw
ise false
-remove - removes a site
-host [host] - host/IP of the site to be removed
-port [port] - port of the site to be removed
-test - tests a site
-host [host] - host/IP of the site to be tested
-port [port] - port of the site to be tested
-list - lists all sites
-update - updates a site
-oldHost [host] - old host/IP of this site
-oldPort [port] - old port of this site
-newHost [host] - new host/IP of this site
-newPort [port] - new port of this site
-display-name [display-name] - display name of this site
-virtual-hosts [virtual-hosts] - virtual hosts of this site
-secure [secure] - true if this site is secure; otherwise false
-factory [factory] - name of SSLServerSocketFactory implementation if not
using JSSE
-keystore [keystore] - the relative/absolute path to a keystore used by th
is site
-storepass [storepass] - keystore password
-provider [provider] - the provider used if not using JSSE
-needs-client-auth [needs-client-auth] - true if needs client auth; otherw
ise false
-bindWebApp [application deployment name] [web-app name] [web-site name] [contex
t root] - binds a web app to the specified site + root
-application [name] [command] - application specific command, subcommands includ
es:
-dataSourceInfo - gets info about the installed datasources
-restart - restarts the application, this will trigger auto-deployment if ena
bled and a file has been touched
-addUser [username] [password] - adds a user to the application
-listDataSource - lists the installed datasources
-removeDataSource - removes an existing datasource, arguments are:
-location [location] - the namespace location for the source, for instance
jdbc/DefaultDS
-testDataSource - tests an existing datasource, arguments are:
-location [location] - the namespace location for the source, for instance
jdbc/DefaultDS
-username [username] - the username to login
-password [password] - the password to login
-installDataSource - installs a new datasource, arguments are:
-jar [path] - path to a jar file to add to the server's library
-url [url] - the JDBC database URL
-location [location] - the namespace location for the raw source, for inst
ance jdbc/DefaultRawDS
-pooledLocation [pooledLocation] - the namespace location for the pooled s
ource, for instance jdbc/DefaultPooledDS
-xaLocation [xaLocation] - the namespace location for the XA source, for i
nstance jdbc/xa/DefaultXADS
-ejbLocation [ejbLocation] - the namespace location for the EJB source, fo
r instance jdbc/DefaultEJBDS - this is the source usually used by applications
-username [username] - the username to login
-password [password] - the password to login
-connectionDriver [drivername] - the JDBC database driver class, for insta
nce com.mydb.Driver
-className [className] - the datasource class name, for instance com.everm
ind.sql.DriverManagerDataSource
-sourceLocation [sourceLocation] - the underlying data source of this spec
ialized data source
-xaSourceLocation [xaSourceLocation] - the underlying XADataSource of this
specialized data source
-updateDataSource - updates an existing datasource, arguments are:
-oldLocation [oldLocation] - the old namespace location for the source, fo
r instance jdbc/DefaultDS
-newLocation [newLocation] - the new namespace location for the source, fo
r instance jdbc/DefaultDS
-jar [path] - path to a jar file to add to the server's library
-url [url] - the JDBC database URL
-pooledLocation [pooledLocation] - the namespace location for the pooled s
ource, for instance jdbc/DefaultPooledDS
-xaLocation [xaLocation] - the namespace location for the XA source, for i
nstance jdbc/xa/DefaultXADS
-ejbLocation [ejbLocation] - the namespace location for the EJB source, fo
r instance jdbc/DefaultEJBDS - this is the source usually used by applications
-username [username] - the username to login
-password [password] - the password to login
-connectionDriver [drivername] - the JDBC database driver class, for insta
nce com.mydb.Driver
-className [className] - the datasource class name, for instance com.everm
ind.sql.DriverManagerDataSource
-sourceLocation [sourceLocation] - the underlying data source of this spec
ialized data source
-xaSourceLocation [xaSourceLocation] - the underlying XADataSource of this
specialized data source
-deployconnector - deploy a Connector Architecture compliant resource adapter (R
AR), arguments are:
-file [path] - path to the Resource Adapter Archive to deploy
-name [name] - name of the resource adapter deployment
-nativeLibPath [path] - path to the native libraries within the RAR archive
-grantAllPermissions - grant all runtime permissions requested by the RAR
-undeployconnector - undeploy a Connector Architecture compliant resource adapte
r (RAR), arguments are:
-name [name] - name of the resource adapter deployment
-keepFiles - keep the generated files.
C:\>java -jar C:\oc4j\j2ee\home\admin.jar ormi://localhost admin welcome
and]
Commands are:
-shutdown [force|ordinary] [reason] - shuts the entire server down
-restart [reason] - restarts the entire server
-deploy [subswitches] - (re)deploys an application. Sub-switches are:
-file [filename] - Enterprise Archive to deploy
-deploymentName [name] - Name of the application deployment
-targetPath [path] - The path on the remote OS to place the archive at. If no
t specified the applications directory is used
-parent [name] - Specifying parent application of this application, the defau
lt is the global ('default') application
-deploymentDirectory [path] - Root of the deployment configurations, "[NONE]"
to place them inside the .ear
-cluster - Signals that the deployment should be propagated to other live clu
ster nodes if part of a cluster
-iiopClientJar - the path on the local OS to place the jar file containing th
e application client stubs
-undeploy [application name] [subswitches] - remove a previously deployed applic
ation
-keepFiles - keep the generated application's files.
-site [subswitches] - configures a site. Sub-switches are:
-add - adds a site
-host [host] - host/IP of this site
-port [port] - port of this site
-display-name [display-name] - display name of this site
-virtual-hosts [virtual-hosts] - virtual hosts of this site
-secure [secure] - true if this site is secure; otherwise false
-factory [factory] - name of SSLServerSocketFactory implementation if not
using JSSE
-keystore [keystore] - the relative/absolute path to a keystore used by th
is site
-storepass [storepass] - keystore password
-provider [provider] - the provider used if not using JSSE
-needs-client-auth [needs-client-auth] - true if needs client auth; otherw
ise false
-remove - removes a site
-host [host] - host/IP of the site to be removed
-port [port] - port of the site to be removed
-test - tests a site
-host [host] - host/IP of the site to be tested
-port [port] - port of the site to be tested
-list - lists all sites
-update - updates a site
-oldHost [host] - old host/IP of this site
-oldPort [port] - old port of this site
-newHost [host] - new host/IP of this site
-newPort [port] - new port of this site
-display-name [display-name] - display name of this site
-virtual-hosts [virtual-hosts] - virtual hosts of this site
-secure [secure] - true if this site is secure; otherwise false
-factory [factory] - name of SSLServerSocketFactory implementation if not
using JSSE
-keystore [keystore] - the relative/absolute path to a keystore used by th
is site
-storepass [storepass] - keystore password
-provider [provider] - the provider used if not using JSSE
-needs-client-auth [needs-client-auth] - true if needs client auth; otherw
ise false
-bindWebApp [application deployment name] [web-app name] [web-site name] [contex
t root] - binds a web app to the specified site + root
-application [name] [command] - application specific command, subcommands includ
es:
-dataSourceInfo - gets info about the installed datasources
-restart - restarts the application, this will trigger auto-deployment if ena
bled and a file has been touched
-addUser [username] [password] - adds a user to the application
-listDataSource - lists the installed datasources
-removeDataSource - removes an existing datasource, arguments are:
-location [location] - the namespace location for the source, for instance
jdbc/DefaultDS
-testDataSource - tests an existing datasource, arguments are:
-location [location] - the namespace location for the source, for instance
jdbc/DefaultDS
-username [username] - the username to login
-password [password] - the password to login
-installDataSource - installs a new datasource, arguments are:
-jar [path] - path to a jar file to add to the server's library
-url [url] - the JDBC database URL
-location [location] - the namespace location for the raw source, for inst
ance jdbc/DefaultRawDS
-pooledLocation [pooledLocation] - the namespace location for the pooled s
ource, for instance jdbc/DefaultPooledDS
-xaLocation [xaLocation] - the namespace location for the XA source, for i
nstance jdbc/xa/DefaultXADS
-ejbLocation [ejbLocation] - the namespace location for the EJB source, fo
r instance jdbc/DefaultEJBDS - this is the source usually used by applications
-username [username] - the username to login
-password [password] - the password to login
-connectionDriver [drivername] - the JDBC database driver class, for insta
nce com.mydb.Driver
-className [className] - the datasource class name, for instance com.everm
ind.sql.DriverManagerDataSource
-sourceLocation [sourceLocation] - the underlying data source of this spec
ialized data source
-xaSourceLocation [xaSourceLocation] - the underlying XADataSource of this
specialized data source
-updateDataSource - updates an existing datasource, arguments are:
-oldLocation [oldLocation] - the old namespace location for the source, fo
r instance jdbc/DefaultDS
-newLocation [newLocation] - the new namespace location for the source, fo
r instance jdbc/DefaultDS
-jar [path] - path to a jar file to add to the server's library
-url [url] - the JDBC database URL
-pooledLocation [pooledLocation] - the namespace location for the pooled s
ource, for instance jdbc/DefaultPooledDS
-xaLocation [xaLocation] - the namespace location for the XA source, for i
nstance jdbc/xa/DefaultXADS
-ejbLocation [ejbLocation] - the namespace location for the EJB source, fo
r instance jdbc/DefaultEJBDS - this is the source usually used by applications
-username [username] - the username to login
-password [password] - the password to login
-connectionDriver [drivername] - the JDBC database driver class, for insta
nce com.mydb.Driver
-className [className] - the datasource class name, for instance com.everm
ind.sql.DriverManagerDataSource
-sourceLocation [sourceLocation] - the underlying data source of this spec
ialized data source
-xaSourceLocation [xaSourceLocation] - the underlying XADataSource of this
specialized data source
-deployconnector - deploy a Connector Architecture compliant resource adapter (R
AR), arguments are:
-file [path] - path to the Resource Adapter Archive to deploy
-name [name] - name of the resource adapter deployment
-nativeLibPath [path] - path to the native libraries within the RAR archive
-grantAllPermissions - grant all runtime permissions requested by the RAR
-undeployconnector - undeploy a Connector Architecture compliant resource adapte
r (RAR), arguments are:
-name [name] - name of the resource adapter deployment
-keepFiles - keep the generated files.
C:\>java -jar C:\oc4j\j2ee\home\admin.jar ormi://localhost admin welcome
Monday, May 24, 2004
Using java comm api
This is a sample java program that reads call information from the EPBX port and dumps it inot an excel sheet.
/*
* @(#)ReadCall.java 1.12 98/06/25
*
*/
import java.io.*;
import java.util.*;
import javax.comm.*;
public class ReadCall implements Runnable, SerialPortEventListener {
static CommPortIdentifier portId;
static Enumeration portList;
InputStream inputStream;
SerialPort serialPort;
Thread readThread;
public static void main(String[] args) {
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
System.out.println(" I am here" + portId.getName());
if (portId.getName().equals("COM1")) {
//if (portId.getName().equals("/dev/term/a")) {
ReadCall reader = new ReadCall();
}
}
}
}
public ReadCall() {
try {
serialPort = (SerialPort) portId.open("ReadCallApp", 2000);
} catch (PortInUseException e) {
System.out.println(" Port in use caught");
}
try {
inputStream = serialPort.getInputStream();
} catch (IOException e) {}
try {
serialPort.addEventListener(this);
} catch (TooManyListenersException e) {}
serialPort.notifyOnDataAvailable(true);
try {
// serialPort.setSerialPortParams(9600,
serialPort.setSerialPortParams(1200,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {}
readThread = new Thread(this);
readThread.start();
}
public void run() {
try {
Thread.sleep(20000);
} catch (InterruptedException e) {}
}
public void serialEvent(SerialPortEvent event) {
switch(event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
byte[] readBuffer1 = new byte[22];
byte[] readBuffer2 = new byte[38];
byte[] readBuffer3 = new byte[23];
byte[] readBuffer4 = new byte[1];
byte[] readBuffer5 = new byte[16];
byte[] readBuffer6 = new byte[20];
int numBytes = 0;
try {
while (inputStream.available() > 0) {
numBytes = inputStream.read(readBuffer1);
numBytes = inputStream.read(readBuffer2);
numBytes = inputStream.read(readBuffer3);
numBytes = inputStream.read(readBuffer4);
numBytes = inputStream.read(readBuffer5);
numBytes = inputStream.read(readBuffer6);
//System.out.println("Done with x bytes \n" + numBytes);
}
System.out.print(" 1" + new String(readBuffer1));
System.out.print(" 2" + new String(readBuffer2));
System.out.print(" 3" + new String(readBuffer3));
System.out.print(" 4" + new String(readBuffer4));
System.out.print(" 5" + new String(readBuffer5));
System.out.print(" 6" + new String(readBuffer6));
System.out.println("after while Done with x bytes \n" + numBytes);
} catch (IOException e) {}
break;
}
}
}
/*
* @(#)ReadCall.java 1.12 98/06/25
*
*/
import java.io.*;
import java.util.*;
import javax.comm.*;
public class ReadCall implements Runnable, SerialPortEventListener {
static CommPortIdentifier portId;
static Enumeration portList;
InputStream inputStream;
SerialPort serialPort;
Thread readThread;
public static void main(String[] args) {
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
System.out.println(" I am here" + portId.getName());
if (portId.getName().equals("COM1")) {
//if (portId.getName().equals("/dev/term/a")) {
ReadCall reader = new ReadCall();
}
}
}
}
public ReadCall() {
try {
serialPort = (SerialPort) portId.open("ReadCallApp", 2000);
} catch (PortInUseException e) {
System.out.println(" Port in use caught");
}
try {
inputStream = serialPort.getInputStream();
} catch (IOException e) {}
try {
serialPort.addEventListener(this);
} catch (TooManyListenersException e) {}
serialPort.notifyOnDataAvailable(true);
try {
// serialPort.setSerialPortParams(9600,
serialPort.setSerialPortParams(1200,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {}
readThread = new Thread(this);
readThread.start();
}
public void run() {
try {
Thread.sleep(20000);
} catch (InterruptedException e) {}
}
public void serialEvent(SerialPortEvent event) {
switch(event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
byte[] readBuffer1 = new byte[22];
byte[] readBuffer2 = new byte[38];
byte[] readBuffer3 = new byte[23];
byte[] readBuffer4 = new byte[1];
byte[] readBuffer5 = new byte[16];
byte[] readBuffer6 = new byte[20];
int numBytes = 0;
try {
while (inputStream.available() > 0) {
numBytes = inputStream.read(readBuffer1);
numBytes = inputStream.read(readBuffer2);
numBytes = inputStream.read(readBuffer3);
numBytes = inputStream.read(readBuffer4);
numBytes = inputStream.read(readBuffer5);
numBytes = inputStream.read(readBuffer6);
//System.out.println("Done with x bytes \n" + numBytes);
}
System.out.print(" 1" + new String(readBuffer1));
System.out.print(" 2" + new String(readBuffer2));
System.out.print(" 3" + new String(readBuffer3));
System.out.print(" 4" + new String(readBuffer4));
System.out.print(" 5" + new String(readBuffer5));
System.out.print(" 6" + new String(readBuffer6));
System.out.println("after while Done with x bytes \n" + numBytes);
} catch (IOException e) {}
break;
}
}
}
Basic Security - securing a web service
Ok once you have deployed a web service how do you make it secure.
Put the following snippet in the web.xml file
"
BASIC
Greeting Service
GreetingRole
Greeting Web Service
*
GreetingRole
NONE
"
just before the end tag ""
And in the orion-web.xml file, put the following xml snippet:
Now you are all set. Just deploy the web service again and you would be prompted to provide a user id and password.
As for the java client accessing the wsdl :
In the auto generated constructor, assuming u r using jdeveloper to create and deploy your web services: just provide the properties to the http connection.
Properties props = new Properties();
props.put(OracleSOAPHTTPConnection.AUTH_TYPE, "basic");
props.put(OracleSOAPHTTPConnection.USERNAME, "admin");
props.put(OracleSOAPHTTPConnection.PASSWORD, "welcome");
m_httpConnection.setProperties(props);
Put the following snippet in the web.xml file
"
just before the end tag ""
And in the orion-web.xml file, put the following xml snippet:
Now you are all set. Just deploy the web service again and you would be prompted to provide a user id and password.
As for the java client accessing the wsdl :
In the auto generated constructor, assuming u r using jdeveloper to create and deploy your web services: just provide the properties to the http connection.
Properties props = new Properties();
props.put(OracleSOAPHTTPConnection.AUTH_TYPE, "basic");
props.put(OracleSOAPHTTPConnection.USERNAME, "admin");
props.put(OracleSOAPHTTPConnection.PASSWORD, "welcome");
m_httpConnection.setProperties(props);
OC4J basics
Un deploying web services on OC4J can be a simple command:
java -jar C:\oc4j\j2ee\home\admin.jar ormi://localhost admin welcome
-undeploy
Deployed web services are copied as ear files in the j2ee/home/applications directory and expanded in applications-deployment as any other app server. (META-INF is scrapped from the directory though in deployments directory)
java -jar C:\oc4j\j2ee\home\admin.jar ormi://localhost admin welcome
-undeploy
Deployed web services are copied as ear files in the j2ee/home/applications directory and expanded in applications-deployment as any other app server. (META-INF is scrapped from the directory though in deployments directory)
Subscribe to:
Posts (Atom)