Author |
Message
|
tatyeong |
Posted: Wed Jun 09, 2010 4:51 am Post subject: Schema directive failed to resolve |
|
|
Acolyte
Joined: 16 Apr 2010 Posts: 52
|
Hi,
I am using WMB toolkit 6.1.0.3. I have created an SAP inbound adapter using the Adapter connection wizard. Along the wizard process, mxsd is generated based on the IDOC definition. The SAP adapter version is 6.1.0.5_IF05
However, when I try to compile the project, there are quite a number of errors messages saying that "Schema directive failed to resolve ...."
If I go to the Message Set Project folder, I am able to locate the actual mxsd file which the error messages claimed missing.
Has anyone encountered this error before? Is this a product bug on the WMB toolkit? or the SAP Adapter? Is there a fix for this?
Appreciate any help / comment on this. Thanks! |
|
Back to top |
|
 |
kimbert |
Posted: Wed Jun 09, 2010 5:03 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Not sure whether it's a defect, but it should be simple to fix up your message definition file(s). I expect the errors all refer to one or two imported/included xsds.
In the Outline view, click on the root node in the tree ( the one which represents the message definition file itself ). In the properties view, edit the import/include directive so that it points to the correct path.
It's quite common for the paths to get out of sync, because Eclipse applications usually move xsds into a folder that is named after their target namespace. If your schemas were organised using some other convention then the result is broken imports/includes. |
|
Back to top |
|
 |
tatyeong |
Posted: Wed Jun 09, 2010 6:11 am Post subject: |
|
|
Acolyte
Joined: 16 Apr 2010 Posts: 52
|
Hi Kimbert,
I tried what you suggested. It is a very peculiar behavior.
So I open the root node, goto the properties view and goto the import section. Here the same error message "Schema directive failed to resolve..." shows up at the top.
I click on the select button, which brings up a screen for me to browse the folders under the Message Set Project. I browse to the subfolder that contains the MXSD file. Funny thing is, I am not able to expand that folder. This happen for all subfolders that contain the MXSD for rootnode that complains about the error. As for the rootnode which is OK, I am able to expand the subfolder and select the MXSD
One other observation is that if I browse to the problematic subfolder using Windows Explorer, I am able to go into the subfolder. However, if I right click on the MXSD file, the menu only has Open and Sendto options (typically there should be the standard rename, cut, copy etc etc). There is no reaction if I select the Open command.
This is really weird!
[/img] |
|
Back to top |
|
 |
tatyeong |
Posted: Wed Jun 09, 2010 7:16 am Post subject: |
|
|
Acolyte
Joined: 16 Apr 2010 Posts: 52
|
Some updates.
I was trying to create 1 SAP inbound adapter that takes in 2 different IDOC message type. Is this supported?
The schema directive error does not occur if I create the inbound adapter with only 1 IDOC message type |
|
Back to top |
|
 |
kimbert |
Posted: Thu Jun 10, 2010 1:22 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
I agree - it sounds rather strange. I'm out of ideas...anybody got a suggestion? |
|
Back to top |
|
 |
tatyeong |
Posted: Thu Jun 10, 2010 1:34 am Post subject: |
|
|
Acolyte
Joined: 16 Apr 2010 Posts: 52
|
I am working on a workaround, which is to have 2 SAP inbound adapter, with each adapter dedicated to a IDOC message type. Eventually the flow will merge into a single MQoutput
Working fine so far.
I have 1 unrelated question.
Suppose the above message flow is deployed to 1 execution grp in 1 broker, the message processing will always be 1 msg at a time?
I am asking this becaues the sequence in which the 2 different IDOC being processed is important.
Assuming that SAP is able to set off the 2 different IDOC event and messages in sequence, will the sequence be preserved when the message eventually reaches the queue at MQOutput? |
|
Back to top |
|
 |
jhosie |
Posted: Thu Jun 10, 2010 6:02 am Post subject: |
|
|
Apprentice
Joined: 12 May 2005 Posts: 28
|
You have to be careful if you have 2 message flows with SAP Input nodes.
If they are both using the same RFCProgramID, then SAP cannot distinguish between them, so it will not filter the IDOCs. So, both flows and message sets would need to be configured for both types of IDOC.
Also, you are correct, you can loose sequence.
The scenario you described at the top of this thread is perfectly valid and is supported. I would suggest raising this with IBM support.
As a workaround, you could try having 1 flow and 2 message sets. To do this, you would need to configure the SAPInput node to pickup secondary adapters. This means that it can handle IDOCs which are defined in other message sets deployed to the same execution group. - http://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/index.jsp?topic=/com.ibm.etools.mft.doc/bc22320_.htm |
|
Back to top |
|
 |
tatyeong |
Posted: Thu Jun 10, 2010 6:12 am Post subject: |
|
|
Acolyte
Joined: 16 Apr 2010 Posts: 52
|
I have created 1 message flow, with 2 SAPInput node, using different RFC program ID. There are also 2 message sets, tied to each SAPInput node respectively.
I am not sure the secondary adapter feature is supported in v6.1? It seems like it is for v7.0 |
|
Back to top |
|
 |
jhosie |
Posted: Thu Jun 10, 2010 6:16 am Post subject: |
|
|
Apprentice
Joined: 12 May 2005 Posts: 28
|
Sorry, you are correct. Secondary adapters is V7 only.
So long as you have different program IDs, this should be fine but you still have the sequencing issue. |
|
Back to top |
|
 |
tatyeong |
Posted: Thu Jun 10, 2010 6:19 am Post subject: |
|
|
Acolyte
Joined: 16 Apr 2010 Posts: 52
|
Since it is only 1 msgflow, if I deploy to only 1 EG and 1 broker, the sequence should be preserved, no? |
|
Back to top |
|
 |
jhosie |
Posted: Thu Jun 10, 2010 6:32 am Post subject: |
|
|
Apprentice
Joined: 12 May 2005 Posts: 28
|
Quote: |
Since it is only 1 msgflow, if I deploy to only 1 EG and 1 broker, the sequence should be preserved, no? |
No. 2 input nodes can receive messages concurrently. So, there is a chance that the following happens...
NodeA receives IDOC 1
NodeB receives IDOC 2
(in the sequence sent from SAP)
NodeA propagates to next node
NodeB propagates to next node
(now the next node is processing IDOC 1 and IDOC 2 concurrently - on 2 threads. It might complete 2 before 1)
If the next node is MQOutput, then the window is smaller but there is a window.
This all assumes that SAP can send IDOC 2, before IDOC 1 is committed. If sequencing is important, then you should be using qRFC in SAP and making sure that IDOC2 is only sent after IDOC1 is committed. Speak to your SAP basis team to see if this is feasible. |
|
Back to top |
|
 |
tatyeong |
Posted: Thu Jun 10, 2010 5:18 pm Post subject: |
|
|
Acolyte
Joined: 16 Apr 2010 Posts: 52
|
Thanks. I will discuss with my BASIS team on that approach. |
|
Back to top |
|
 |
|