Parallel participants blocks in External Routing Service

I'm trying to configure an External Routing service (it implements IAssignmentService interface) as described in Developer's Guide for Oracle SOA Suite[1].
The assignment stage configuration needed: one or more parallel participants blocks in the same stage, each one configured with different participants and voting rules.
The CustomAssignmentService below shows my custom External Routing Service: when I try to add two or more parallel participants, only the first one it is assigned to the task.
I haven't found documentation: how can I implement parallel participants blocks in External Routing Service?
Product version: SOA Suite 11.1.1.6
References:
[1] http://docs.oracle.com/cd/E28389_01/dev.1111/e10224/bp_hwfmodel.htm#BABCFHCC
----------- CustomAssignmentService.java ------------------
package br.com.iprocess;
import java.util.Map;
import oracle.bpel.services.workflow.metadata.routingslip.model.*;
import oracle.bpel.services.workflow.metadata.routingslip.model.Participants;
import oracle.bpel.services.workflow.metadata.routingslip.model.ParticipantsType.*;
import oracle.bpel.services.workflow.task.IAssignmentService;
import oracle.bpel.services.workflow.task.ITaskAssignee;
import oracle.bpel.services.workflow.task.model.Task;
import oracle.bpel.services.workflow.IWorkflowConstants;
public class CustomAssignmentService implements IAssignmentService {
private final String OUTCOME_APPROVE = "APPROVE";
private final String OUTCOME_REJECT = "REJECT";
public Participants onInitiation(Task task, Map propertyBag) {
return createParticipant(task, propertyBag);
public Participants onReinitiation(Task task, Map propertyBag) {
return createParticipant(task, propertyBag);
public Participants onOutcomeUpdated(Task task, Map propertyBag,
String updatedBy, String outcome) {
return null;
public Participants onAssignmentSkipped(Task task, Map propertyBag) {
return null;
public java.util.List getAssigneesToRequestForInformation(Task task,
Map propertyBag) {
return null;
public java.util.List getReapprovalAssignees(Task task, Map propertyBag,
ITaskAssignee infoRequestedAssignee) {
return null;
public Participants createParticipant(Task task, Map propertyBag) {
ObjectFactory objFactory = new ObjectFactory();
Participants participants = objFactory.createParticipants();
participants.getParticipantOrSequentialParticipantOrAdhoc().add(addParticipantsGroup1(objFactory));
participants.getParticipantOrSequentialParticipantOrAdhoc().add(addParticipantsGroup2(objFactory));
return participants;
private Parallel addParticipantsGroup2(ObjectFactory objFactory) {
Parallel parallelParticipant = objFactory.createParticipantsTypeParallel();
ParallelCompletionCriteriaType vote = objFactory.createParallelCompletionCriteriaType();
ParameterType defaultOutcome = objFactory.createParameterType(OUTCOME_REJECT);
defaultOutcome.setType("STATIC");
vote.setDefaultOutcome(defaultOutcome);
String defaultPercentage = "51";
ParameterType percentageOfOutcome = objFactory.createParameterType(defaultPercentage);
percentageOfOutcome.setType("STATIC");
vote.getOutcomePercentage().add(percentageOfOutcome);
parallelParticipant.setAllResponders(vote);
Resource resource = objFactory.createResource();
resource.setValue("manager1, manager2");
resource.setIsGroup(false);
resource.setType("STATIC");
parallelParticipant.getResourceOrRoutingSlip().add(resource);
Resource resource2 = objFactory.createResource();
resource2.setValue("manager3");
resource2.setIsGroup(false);
resource2.setType("STATIC");
parallelParticipant.getResourceOrRoutingSlip().add(resource2);
return parallelParticipant;
private Parallel addParticipantsGroup1(ObjectFactory objFactory) {
Parallel parallelParticipant = objFactory.createParticipantsTypeParallel();
ParallelCompletionCriteriaType vote = objFactory.createParallelCompletionCriteriaType();
ParameterType defaultOutcome = objFactory.createParameterType(OUTCOME_REJECT);
defaultOutcome.setType("STATIC");
vote.setDefaultOutcome(defaultOutcome);
String defaultPercentage = "51";
ParameterType percentageOfOutcome = objFactory.createParameterType(defaultPercentage);
percentageOfOutcome.setType("STATIC");
vote.getOutcomePercentage().add(percentageOfOutcome);
parallelParticipant.setAllResponders(vote);
Resource resource = objFactory.createResource();
resource.setValue("operator1, operator2, operator3");
resource.setIsGroup(false);
resource.setType("STATIC");
parallelParticipant.getResourceOrRoutingSlip().add(resource);
return parallelParticipant;
}

I'm trying to configure an External Routing service (it implements IAssignmentService interface) as described in Developer's Guide for Oracle SOA Suite[1].
The assignment stage configuration needed: one or more parallel participants blocks in the same stage, each one configured with different participants and voting rules.
The CustomAssignmentService below shows my custom External Routing Service: when I try to add two or more parallel participants, only the first one it is assigned to the task.
I haven't found documentation: how can I implement parallel participants blocks in External Routing Service?
Product version: SOA Suite 11.1.1.6
References:
[1] http://docs.oracle.com/cd/E28389_01/dev.1111/e10224/bp_hwfmodel.htm#BABCFHCC
----------- CustomAssignmentService.java ------------------
package br.com.iprocess;
import java.util.Map;
import oracle.bpel.services.workflow.metadata.routingslip.model.*;
import oracle.bpel.services.workflow.metadata.routingslip.model.Participants;
import oracle.bpel.services.workflow.metadata.routingslip.model.ParticipantsType.*;
import oracle.bpel.services.workflow.task.IAssignmentService;
import oracle.bpel.services.workflow.task.ITaskAssignee;
import oracle.bpel.services.workflow.task.model.Task;
import oracle.bpel.services.workflow.IWorkflowConstants;
public class CustomAssignmentService implements IAssignmentService {
private final String OUTCOME_APPROVE = "APPROVE";
private final String OUTCOME_REJECT = "REJECT";
public Participants onInitiation(Task task, Map propertyBag) {
return createParticipant(task, propertyBag);
public Participants onReinitiation(Task task, Map propertyBag) {
return createParticipant(task, propertyBag);
public Participants onOutcomeUpdated(Task task, Map propertyBag,
String updatedBy, String outcome) {
return null;
public Participants onAssignmentSkipped(Task task, Map propertyBag) {
return null;
public java.util.List getAssigneesToRequestForInformation(Task task,
Map propertyBag) {
return null;
public java.util.List getReapprovalAssignees(Task task, Map propertyBag,
ITaskAssignee infoRequestedAssignee) {
return null;
public Participants createParticipant(Task task, Map propertyBag) {
ObjectFactory objFactory = new ObjectFactory();
Participants participants = objFactory.createParticipants();
participants.getParticipantOrSequentialParticipantOrAdhoc().add(addParticipantsGroup1(objFactory));
participants.getParticipantOrSequentialParticipantOrAdhoc().add(addParticipantsGroup2(objFactory));
return participants;
private Parallel addParticipantsGroup2(ObjectFactory objFactory) {
Parallel parallelParticipant = objFactory.createParticipantsTypeParallel();
ParallelCompletionCriteriaType vote = objFactory.createParallelCompletionCriteriaType();
ParameterType defaultOutcome = objFactory.createParameterType(OUTCOME_REJECT);
defaultOutcome.setType("STATIC");
vote.setDefaultOutcome(defaultOutcome);
String defaultPercentage = "51";
ParameterType percentageOfOutcome = objFactory.createParameterType(defaultPercentage);
percentageOfOutcome.setType("STATIC");
vote.getOutcomePercentage().add(percentageOfOutcome);
parallelParticipant.setAllResponders(vote);
Resource resource = objFactory.createResource();
resource.setValue("manager1, manager2");
resource.setIsGroup(false);
resource.setType("STATIC");
parallelParticipant.getResourceOrRoutingSlip().add(resource);
Resource resource2 = objFactory.createResource();
resource2.setValue("manager3");
resource2.setIsGroup(false);
resource2.setType("STATIC");
parallelParticipant.getResourceOrRoutingSlip().add(resource2);
return parallelParticipant;
private Parallel addParticipantsGroup1(ObjectFactory objFactory) {
Parallel parallelParticipant = objFactory.createParticipantsTypeParallel();
ParallelCompletionCriteriaType vote = objFactory.createParallelCompletionCriteriaType();
ParameterType defaultOutcome = objFactory.createParameterType(OUTCOME_REJECT);
defaultOutcome.setType("STATIC");
vote.setDefaultOutcome(defaultOutcome);
String defaultPercentage = "51";
ParameterType percentageOfOutcome = objFactory.createParameterType(defaultPercentage);
percentageOfOutcome.setType("STATIC");
vote.getOutcomePercentage().add(percentageOfOutcome);
parallelParticipant.setAllResponders(vote);
Resource resource = objFactory.createResource();
resource.setValue("operator1, operator2, operator3");
resource.setIsGroup(false);
resource.setType("STATIC");
parallelParticipant.getResourceOrRoutingSlip().add(resource);
return parallelParticipant;
}

Similar Messages

  • External Routing Service

    has anyone implemented an external routing service for the human task activity? I find the documentation lacking in that direction. I need to be able to define the assignee as a user or group at runtime. Apparently you can't do that in 10.1.3.1 without an external routing service

    I think that what you need is writing a external routing policy. That is also what I am trying to do. Here is the only doc I have found on the subject :
    http://download-uk.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/workflow.htm#BABGCHHD
    I think we both want to make the same thing : make the human tasks more dynamic. ANd according to me, the external routing policy is the best (or less bad) solution.
    As in the example below
    What I still don't manage to do is creating a Participant that is "Parallel "or "Management Chain".
    This work fine in the onOutcomeUpdated() method :
    ObjectFactory objFactory = new ObjectFactory();
    Participants participants = objFactory.createParticipants();
    Participant participant = objFactory.createParticipantsTypeParticipant();
    participant.setName("Loan Agent");
    ResourceType resource2 = objFactory.createResourceType(user);
    resource2.setIsGroup(false);
    resource2.setType("STATIC");
    participant.getResource().add(resource2);
    But this doesn't work :
    ObjectFactory objFactory = new ObjectFactory();
    Participants participants = objFactory.createParticipants();
    Parallel participant = objFactory.createParticipantsTypeParallel();
    participant.setName("Loan Agent");
    ResourceType resource2 = objFactory.createResourceType(user);
    resource2.setIsGroup(false);
    resource2.setType("STATIC");
    participant.getResource().add(resource2);
    Does anyone have an idea of how to make this bit of code work? Or any other idea about how to make a human task dynamically change its behaviour (for example switching from sequential pattern to parallel pattern according to a user action) is welcome!
    Thomas

  • How to Implement Management Chain in External routing Service

    hi,
    I am using External Routing Service to Assign & route the tasks.
    I will get the authorisation workflow in our external Routing class , Now I am suppose to implement that workflow in BPM worklist for that human task.
    One way is to know the way to implement management chain in the External Routing Service.
    I have found some BPEL classes for doing the same eg. ParticipantsType.ManagementChain, objFactory.createParticipantsTypeManagementChain().
    But not able to find any sample code to implement.
    Does any body knows how to implement the same.
    Is their any other way to resolve this issue.
    you can also refer the following thread to understand the problem statement: PROGRAMMATICALLY PERSISTING THE APPROVAL WORKFLOW FOR A HUMAN TASK.
    thanks
    Jagdish

    I have tried the below mentioned code for implemnting management chain...
         private Participants createParticipant() {
              System.out.println("1");
              String user = users[numberOfApprovals++];
              ObjectFactory objFactory = new ObjectFactory();
              Participants participants = objFactory.createParticipants();
              participants.setIsAdhocRoutingSupported(false);
                   StageType stage = objFactory.createParticipantsTypeStage();
                   stage.setName("Stage1");
                   System.out.println("2");
                   SequentialParticipant seqParticipant = objFactory.createParticipantsTypeSequentialParticipant();
                   seqParticipant.setName("Stage1.Participant1");
                   System.out.println("3");
                   ListType listType = objFactory.createList();
                   ManagementChainListType managementListType = objFactory.createManagementChainListType();
                   // adding Resource in the management chain
                   ResourceType resourceChain = objFactory.createResourceType("fkafka");
                   resourceChain.setIsGroup(false);
                   resourceChain.setType("STATIC");
                   resourceChain.setIdentityType("user");
                   managementListType.getResource().add(resourceChain);
                   System.out.println("4");
                   // adding levels in the management chain
                   ParameterType levelParameterType = objFactory.createParameterType("2");
                   levelParameterType.setType("STATIC");
              managementListType.setLevels(levelParameterType);
                   System.out.println("5");
                   // adding title in the management chain                    
                   ParameterType titleParameterType = objFactory.createParameterType("Vice President");
                   titleParameterType.setType("STATIC");
                   managementListType.setTitle(titleParameterType);
                   System.out.println("6");
                   listType.setManagementChain(managementListType);
                   System.out.println("7");
                   seqParticipant.setList(listType);
                   System.out.println("8");
                   stage.getParticipantOrSequentialParticipantOrAdhoc().add(seqParticipant);
                   System.out.println("9");
              participants.getParticipantOrSequentialParticipantOrAdhoc().add(stage);
              System.out.println("10");
              return participants;
    The above code doesnot give error during execution but It doesnot work, what It's suppose to be...
    what It does is..It calls onInitiation method number of times [equal to the number of levels given in hierachy +1] at one shot. without being assigned to anybody and come out of the human task.
    please let me know..If am missing something...
    thanks
    Jagdish Khera

  • Using External Routing Service to Route the task

    Hi,
    I am using External Routing Service to Route the task and have placed the jar file at
    /oracle/app/product/fmw/Oracle_SOA1/soa/modules/oracle.soa.ext_11.1.1
    I have modified the Manifest.mf file for "oracle.soa.ext.jar" as
    Manifest-Version: 1.0
    Ant-Version: Apache Ant 1.7.1
    Created-By: 17.0-b17 (Sun Microsystems Inc.)
    Implementation-Vendor: Oracle
    Implementation-Title: Oracle SOA EXT
    Implementation-Version: 11.1.1
    Product-Name: Oracle SOA EXT
    Class-Path: ./routing/lib/jaxrpc.jar ./routing/lib/axis-update.jar ./routing/lib/axis.jar ./routing/lib/log4j-1.2.11.jar ./routing/lib/orabpel.jar ./routing/lib/bpm-services.jar ./routing/lib/xmlparserv2.jar ./routing/lib/wsdl4j-1.5.1.jar ./routing/lib/commons-discovery-0.2.jar ./routing/workflow.routing.jar
    Product-Version: 11.1.1.4.0
    Specification-Version: 11.1.1
    Extension-Name: oracle.soa.ext
    but it's failing to get the ExternalRoutingService.class and throws exception
    Missing class: ExternalRoutingService
         Dependent class: oracle.bpel.services.workflow.task.impl.RoutingSlipInterpretor
         Loader: weblogic.utils.classloaders.GenericClassLoader@2080514773
         Code-Source: /oracle/app/product/fmw/Oracle_SOA1/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar
         Configuration: /oracle/app/product/fmw/Oracle_SOA1/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar
    I tried adding the workflow.routing.jar to classpath (as this jar contains the ExternalRoutingService.class) and then gives error for IAssignmentService saying class not found IAssignmentService.class

    Hi Pranay,
    Did you find solution for this?
    I am also facing same issue.
    Thanks
    Balaji

  • Blocking on external router

    Hi,
    i want to configure blocking on external router for some specfic signature, i already have access list on the outside interface to block some traffic and fragment packets with the name ACL_Router_External applied on interface outisde (G0/0)
    when i configure blocking on IPS it create another ACL and applied to interface same interface in order to block.
    how can i push ACL configuration from IPS to exisiting ACL  (ACL_Router_External) ???
    thanks               

    From the link that I posted, here are the steps that the IPS takes when building the ACL:
    When the sensor starts up, it reads the contents of the two ACLs. It creates a third ACL with the following entries:
    •A permit line for the sensor IP address
    •Copies of all configuration lines of the Pre-Block ACL
    •A deny line for each address being blocked by the sensor
    •Copies of all configuration lines of the Post-Block ACL
    The sensor applies the new ACL to the interface and direction that you designate.
    In your case, you could use the ACL_Router_External as your Post-Block ACL.  The IPS will add a permit for itself and a deny entry for the address being blocked.  It will then append the existing ACL_Router_External entries that you already have configured before pushing the new combined ACL to the g0/0 interface.

  • Human task flow call back events with external web service

    Hi All,
    I have a requirement to call webservice inside human task flow. I have three participant in my human task flow. Let suppose A, B and C. When A approves then task will be assigned to B and when B approves it will go for C.
    My requirement is that, when A approves , then i need to call one external webservice to update database. For this i have enabled call back events from human task flow.
    In this way i got while loop inside my BPEL. In onTaskAssigned operation i am now trying to call external web service. My requriment is to call external service and get data from service. After getting response from the webservice, i want to assign it to next participant.
    But in this case, when user B approves, it goes to onTaskAssigned block and i am able to make external web service also but mean time, it has been assigned to User C which i do not want.
    I want Human task flow to wait for the web service response then only assign it to next participant.
    Please help.
    Regards,
    Sunil

    Hi Sunil
    Have you tried using WebServices Adapter. The usecase seems pretty straight forward. You have a WebService that has some code and some Operations to update some Database. First thing, I hope you have methods/Operations defined with request and response xsd for each operation.
    Now you define the main master payload, that should have all elements specific to your process and also few elements to store the output coming from each operation. Because response of each operation may need to go to other Task and get saved in the Payload also.
    You have like 3 Tasks. To complicate, I will assume that each Task can either Approve or Reject. And last 2 Tasks gets data from payload, previous task and also output from the WebService Operation (method).
    Task A -> Xor Gateway (Approve/Reject) -> If Approve -> Call WebServices Adapter -> Task B -> Xor Gateway(...) -> ......
    At each intersection, you can map the attributes for incoming and outgoing. Based on WebServices output also, you can have Another XOR Gateway and decide to send to Task B or do something else. So combinations of outputs of each service (task or webservice adapter) and XOR gateways, you can have a decent control on the overall flow.
    Note: I am hoping the webservices is Synchronous where you get the response immediately.
    Let me know if I am missing something.
    Thanks
    Ravi Jegga

  • 11.1.1.5: BPEL External Routing

    All,
    I have a requirement to have External Routing program for parallel approval to various groups by implementing IAssignmentService. The requirement is to send the parallel approval to multiple groups and then have atleast one user from each of the groups to approve the request; to complete the request.
    I tried looking into the docs and the api but could not find much information about parallel approval and how to set the outcome. I had been able to assign the approval to multiple groups in parallel but don't know how to get to the exit condition. Below is the method I am using for the same:
    private Participants createParticipant() {
    ObjectFactory objFactory = new ObjectFactory();
    Parallel parallel = objFactory.createParticipantsTypeParallel();
    parallel.setCollaboration(false);
    ParallelCompletionCriteriaType vote = objFactory.createParallelCompletionCriteriaType();
    ParameterType defaultOutcome = objFactory.createParameterType("APPROVE");
    defaultOutcome.setType("STATIC");
    vote.setDefaultOutcome(defaultOutcome);
    ParameterType percentageOfOutcome = objFactory.createParameterType("100");
    percentageOfOutcome.setType("STATIC");
    vote.setPercentageOfOutcome(percentageOfOutcome); //deprecated and doc says using getOutcomePercentage() , would it set the vote?
    parallel.setVote(vote);
    Resource resource4 = objFactory.createResource();
    resource4.setValue("Cricket");
    resource4.setIsGroup(true);
    resource4.setType("STATIC");
    parallel.getResourceOrRoutingSlip().add(resource4);
    resource4 = objFactory.createResource();
    resource4.setValue("Hockey");
    resource4.setIsGroup(true);
    resource4.setType("STATIC");
    parallel.getResourceOrRoutingSlip().add(resource4);
    Participants participants = objFactory.createParticipants();
    participants.getParticipantOrSequentialParticipantOrAdhoc().add(parallel);
    return participants;
    }I am calling the above code from onInitiation method but it's going in loops also I am not sure about how the outcome is computed here.
    Will appreciate if anyone can throw in some pointers or some documentation/guide.
    Thanks,
    BB

    Did a little digging and it worked!

  • IChat AV 3.1.6 (Mac) with AIM 5.9 (PC) AV Chat external router port setting

    Hello,
    I'm using iChat 3.1.6 on my Mac and want to videoconference (with audio) to PC users having installed AIM 5.9.
    We can't get a videocon started probably due to firewall settings. I opened up my Mac firewalll ports, yet the external router has to be handled as well, as far as I've understood.
    My external router is a FRITZ!Box Fon WLAN 7050 (UI), Firmware-Version 14.04.15. Does anybody know the exact procedure to open the necessary ports on this device? The user interface is somewhat clumsy, and I'm not the most experienced user. Your detailed instructions are much appreciated (c:
    THX
    iMac Intel Core Duo 20" 2 GHz   Mac OS X (10.4.8)  

    Dave, Ralph,
    thanks to both of you for your helpful answers - I have tried port forwarding on my AVM Fritz!Box, and opening the indicated ports for TCP and for UDP works - except for port 5060 (UDP), where I get an error message "FEHLER: Eintrag kollidiert mit interner Regel." - the router won't accept the port number entry since it violates an internal rule.
    I have tried to get support both from my ISP (1&1) and from AVM, the Fritz!Box manufacturer 3 days ago. AVM hasn't answered yet, I just got a ticket number from them so it seems they are working on it. 1&1, my ISP, claim they don't block any ports with their VoIP service, especially not port 5060.
    Admittedly, being only one step away from a working solution, I'm somewhat clueless now.
    Any more suggestions? It seems to be a specific AVM Fritz!Box problem (unless 1&1 admit otherwise)?
    Thanx
    Wolfgang

  • Consuming external web services in CAF

    Hi there,
    I am trying to set up a show case where a composite CAF app (exposed via WD or VC) uses SAP web services as well as external services. In this case, I chose to use the Fedex web services (http://fedex.com/developer).
    Everything works fine, I am able to import the webservice using the locally stored WSDL into my composite app, apply the mapping and implement the application service......build, deploy...all good.
    The problem occurs when trying to create the physical destination (under nwa/destination template management). NW expects a pointer/url to the wsdl or wsil file, but Fedex doesn't provide that via http. Putting the wsdl on a different web server doesn't help either as the SOAP call will be routed to the same host where the wsdl resides (in this case NOT the fedex system).
    Is there any way to circumvent the WSDL retrieval with external web services in Netweaver ? One alternative solution could be to use the Netweaver Service registry and publish the fedex wsdl to that, but I would like to avoid that as we haven't configured the SR at the moment.
    Thx, Nick

    Looks like I don't need it necessarily.
    There seems to be a bug in NW/CE 7.1. When defining a destination which points to a WSDL file which in turn points to a different server for SOAP messages (ServicePort), the endpoint URL is incorrectly defined.
    WSDL URL: http://www.server1.com/test.wsdl
    SOAP URL/Port: http://server2.com/webservices
    the server tries to dispatch the SOAP call to http://server1.com/webservices which can't be found.
    In CE 7.1.1. though, that bug is fixed, and everything works fine without the need to publish the remote service (wsdl) to the SR and to subsequently query it.
    Nick

  • ESB Routing Service Byte Order Mark error

    Hi,
    I have a esb routing service to accept soap messages from an external system. The external system sents messages with a Byte Order Mark for UTF8 at the start. If i look at the tcp messages i see the following:
    POST /event/DefaultSystem/CaseVerhuizing/EsbStuf0204Service HTTP/1.1
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client
    Protocol 2.0.50727.42)
    Content-Type: text/xml; charset=utf-8
    SOAPAction: "http://www.egem.nl/StUF"
    Host: ux920:7777
    Content-Length: 2382
    Expect: 100-continue
    Connection: Keep-Alive
    HTTP/1.1 100 Continue
    ...<?xml version="1.0" encoding="utf-8"?><soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    The three dots signify the hexadecimal value EF BB BF which is for UTF8. This raises an error however in iAS:
    HTTP/1.1 400 Bad Request
    Date: Mon, 16 Jul 2007 14:41:32 GMT
    Server: Oracle-Application-Server-10g/10.1.3.1.0 Oracle-HTTP-Server
    Content-Length: 158
    Connection: close
    Content-Type: text/html; charset=ISO-8859-1
    Bad Request
    Error parsing envelope: (1, 1) Start of root element
    expected
    It seems the esb routing service is trying to parse the Byte Order Mark as xml and therfore can not find the soap envelope tag? Any help is appreciated!
    Kind Regards,
    Andre Jochems
    Message was edited by:
    ajochems

    Hi Andre,
    We got exactly the same error as you did. Your analysis is also correct; the first 3 bytes of the reply are not interpreted by BPEL/ESB as a BOM, but as 'real' characters.
    The problem is due to the fact that the UTF-8 BOM is actually optional in the specifications, and obligatory for UTF-16. The UTF-8 BOM practically has no meaning, and is never used in most SOA applications. However the guys that made the webservice you need to consume are (wrongly) convinced that the UTF-8 BOM is supposed to be there according to the OASIS/W3C specs. Which is not true btw...
    For more info on BOMs, check: http://en.wikipedia.org/wiki/Byte_Order_Mark
    Unfortunately I don't have the code for our 'proxy' service anymore. I remember that we simply made a little servlet, that uses input- and outputstreams. The inputstream then filters the BOM. Remember to also proxy the WSDL to 'rewrite' the endpoint ;-)
    HTH,
    Bas

  • External Router and Firewall

    I have just been informed by Apple Care that my entire implementation for my Xserve is off base. We only got to this problem when Kerberos wouldn't work. I had judiciously followed the manual and had my Ether1 and 2 ports set up to do external (1) internal (2), provide DHCP, NAT, VPN the whole nine yards. Ran gateway assistant, got my FQDN, promoted to open directory. And now I am told by my Apple Care guy that this is not at all the way to go; that I need to have an external router with firewall and assign the static IP to it and then run the server interally only. Let me just say I took the 4 day server essentials class and that was noticably lacking in the discussion. So I guess what I am asking today is what an ideal router/firewall product would be suggested. I'd prefer it be rack mounted. I also need a product that the company is going to support. So suggestions are greatly appreciated.
    I guess I am back to square one on this. Full reinstall. Sigh.

    1. Run OD and AFP on the fixed IP Master. This should
    be your strongest, fastest server and must have a
    real fixed IP address, not allocated by DHCP. You
    need an FQDN for this IP address entereted in your
    internal DNS.
    WES: I believe I am hearing you say that the VPN/Firewall server (the weaker one) would now carry the static IP address on ethernet1; and have say 192.168.2.1 as it's manualy set internal IP on ethernet2; say 192.168.3.1. The better server would have it's IP manually set to, say 192.168.3.1.
    2. Run internal DHCP and DNS services on the Master
    also.
    WES: I am not sure why one would run DHCP and DNS here though? I figured that was a simplier process to accompish off the weaker server.
    3. On your firewall machine (the Replica, maybe
    running Tiger Server 10-user) run your webpages &
    VPN.
    WES: But as I understood it, one had to run this off of the machine with the FQDN. Same as mail. More below....
    4. Put Mail on a completely separate box in your
    DMZ.
    WES: I'm not sure I follow you here. I am out of boxes. Actually I'll have to buy another one if I got this route at all. I don't have nearly a large enough operation to justify three servers -- maybe not two -- except for this problem.
    One advantage of using a Tiger Server Master/Replica
    over a cheap firewall box is that you have redundancy
    available for all your Tiger Server apps (DHCP, DNS,
    etc). You also have an automatic backup of all user
    accounts/passwords and you don't need to configure
    separate VPN accounts/profiles for your users.
    WES: Yes that makes sense.
    Plus, if you're serious about VPN, 'proper' routers
    start to get real expensive if you need concurrent
    connections.
    WES: There is another issue that I am a bit uncertain about. Where I got into trouble here was trying to get Kerberos to work. However, I am not sure that in the end that's a service I'm going to need. If VPN encrypts all traffic over the internet is Kerberos necesssary. I DON'T need it in house as there isn't an internal security issue of any kind. Maybe I am shooting for something I don't need...which brings us to...I am still confused about the Apple Care guy's comment that with the set up as it is, he could essentially raid my OD. He rattled off a lot of cool talk that made me think he was right but I have never found any reference to this. Can anyone explain to me -- one box acting in this capacity for a small office with a public IP -- being that open to a security risk. Puzzles me.

  • How to use External Routing in Human Task

    Hi,
    Could you please help me knowing how to create External Routing in Human Task in SOA Composite.
    Thanks

    When defining the external routing class in the .task, you can define the name value pairs which you want to pass to the program. Here you can pass dynamic values to the class as well by reading the appropiate node from the payload. In your class the name, value would be available in the "Map propertyBag" parameters in Rajiv's example link.
    Document says:
    Map of properties — When an assignment service is specified, a list of properties can also be specified to correlate callbacks with backend services that determine the task assignees.Or if you are too lazy to map many parameters and values, you can always read the whole Task task and then use getDocument and some xml reading to determine the values. This Task is the whole document.
    API:
    http://docs.oracle.com/cd/E17904_01/apirefs.1111/e10660/oracle/bpel/services/workflow/task/model/TaskType.html#getDocument__Document says:
    Task document — The task document that is executed by the workflow. The task document contains the payload and other task information like current state, and so on.Also you need to make sure that you are maintaining the state of the assignment class, doc says:
    The assignment service class cannot be stateful because every time workflow services need to call the assignment service, it creates a new instance.Thus if you are doing multiple serial assignments one after the another and if your server restarts in between, then the approval would start at the first assignee again. Suppose in Rajiv's doc link e.g., if the task is assigned to 'wfaulk' and the server restarts then the task would be assigned back to 'jstein'. In order to prevent this you need to modify the java code and each time the variable changes it's value you need to place it in a dehydration store. Also on each action over the process you need to reinitialize the variable from that dehydration store.
    -Bikash

  • Calling external web service - Proxy Authentication error

    Using Developer 10.1.3.3 and following OTN example http://www.oracle.com/technology/products/forms/htdocs/10gr2/howto/webservicefromforms/ws_10_1_3_from_forms.html.
    I have followed the above example and am trying to test the SendServiceSoapClient.java in JDeveloper. The class compiles ok but when I run it I receive the following error in the log window :
    HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Bad response: 407 Proxy Authentication Required
    As I was able to create the proxy with no problems, the proxy settings in Tools->Preferences are valid. I don't understand at what point it is failing as I am able to access the wsdl in the example from JDeveloper. I have checked the system settings for the proxy (username/pwd/host etc) at run time and they are as expected.
    Can anyone make any suggestions? I have had my user details checked on our proxy server and it is not blocked from performing any actions. Is the message indicating I am being blocked from accessing the service from the suppliers end?

    I have a solution for the problem I encountered.
    My collegues who look after the proxy server and network first tried to bypass authentication for the web site www.esendex.com (where the service resides). The same error occurred when trying to call the service.
    They then set up a route on the network to send the request straight to www.esendex.com and a rule on the firewall to allow the request 'out'. This has done the trick and the request passes through!
    Unfortunately, I am not much clearer as to why our proxy server is configured to block this message type and how come it can't be changed! Hey ho, I have a solution for now!

  • Invoking an ESB Routing Service

    Hi,
    I have a routing service that i have installed on an Oracle ESB Server. When i test the web service from Oracle Application Server (by searching for the routing service port from the Oracle Apps Server itself) - its sucessful.
    The problem i have is that the Routing service needs to be invoked from an external application they are encountering an error - a SOAP Exception: faultCode=HTTP Response Code -405.
    I tried invoking the routing service from Soap UI and i get an error - with the response fault being env:ESBMessageProcessingFailed.
    In both the last two cases, I dont see an instance being created for that request in the ESB control.
    Any ideas in resolving this is highly appreciated.
    Thanks.

    Hi,
    I had the similar issue, the problem I found is that whenever there is a key workd 'event' in the target URL then the system will look for the target on the same system source system you invoke the service instead of looking for the remote system where the ESB is lying.
    I also guess this happens when there are two targeted systems in your ESB.
    For this edit your WSDL file and remove the do remove the one target alias name. and keep only only. Hope this will help you.
    --Khaleel                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Authentication : accessing an LDAP via an external web service ?

    Hi,
    I know it is possible to use an external web service to authenticate a user on a portal.
    But I would like to know it is possible for a user to :
    - open hiw browser and navigate to the Enterprise Portal
    - the portal is asking a user and password
    - then the portal call a web service giving the user/password
    - the web service (enternal and already existing) check the authentication through the LDAP
    - the web service reply OK/NOK to the portal with a SAP USER ID (or another information)
    - the portal if authentication ok send a logon ticket to the user
    I didn't find any clear information telling it is possible.
    So if someone can help on this matter ...
    Many thanks.
    Naguy C.
    Edited by: NAGUY CAILLAVET on Feb 13, 2009 2:28 PM

    Hello,
    First, thank you Sandor for your answer.
    I understand that it is possible to create a BPEL process that exposes multiple operations/messages. This would be exactly what I need: a single process (web service) that will expose many operations. Could anyone, please, point me to such an example?
    So far I thought that there is possible to have only one operation exposed with a BPEL process, what is delimited between the receive/reply blocks (in the synchronous case).
    Regards,
    Marinel

Maybe you are looking for

  • Issue to drill down from a report

    Hi, Our requirement is we need to show three different graphs in a single report representing different data, from that we need to drill down to a new different report  ; Two approaches we tried with crystal report are; 1.     We put three graphs and

  • Is it possible to export a Muse project as HTML to use locally inside a browser?

    I am trrying to see if it possible to export a Muse project in the same way, for example, it is possible with Fireworks to export a PNG file with hotspots as HTML and Images. I want to be able to look at the project hosted locally and still click on

  • Purchase Order Tracking in SUS

    Dear Expert, We have set up Extended Classic Scenario(SRM-XI-SUS) inwhich SRM and SUS have on same SRM Server 7.0 but with differenct clients. SRM, XI and SUS have been configured. Proxy XI  ESOA scenario (XML Communication)  is being used between SR

  • Optical margin alignment not in Indesign cc

    When I open Story it is blank. There is no box to activate optical margin alignment. And there does not seem to be a way to activate it in Preferences. Are other users having the same problem or is this just me? James

  • Can't get rid of a file (at least it looks liek a file)

    I have a file that I can't delete, can't rename, can't open, etc ... I've tried from the Terminal window and still no luck. If I type ls -l the Terminal widow the result is: ls: filename: No such file or directory If I drag it to the trash and empty