Frage

Ich versuche SvcUtil gegen eine WSDL-Datei zu verwenden, um Proxy-Klassen zu generieren, aber ich bin immer ein Element fehlt Fehler, ich denke an Schema Gruppenelemente zusammen. Wer weiß, für eine Tatsache, wenn svcutil umgehen kann? Und wenn ja, wird es xs behandeln: Gruppenelemente, die ref haben diesen Punkt auf die Gruppendefinition Attribute, die in einer anderen Schema-Datei lebt

SvcUtil.exe Befehl (eingeschlossen die Pfade zu den XSD-Dateien als auch):

d:\codegen\svcutil.exe d:\codegen\RPE\ProtocolStateManager.wsdl d:\codegen\RPE\schema\RPE.xsd d:\codegen\RPE\schema\PORT_MT100001UV.xsd d:\codegen\RPE\schema\coreschemas\infrastructureRoot.xsd d:\codegen\RPE\schema\coreschemas\dataTypes.xsd d:\codegen\RPE\schema\coreschemas\voc.xsd /l:cs

Der Fehler ist:

  

Fehler: Kann nicht importieren wsdl: porttype   Detail: Es wurde eine Ausnahme ausgelöst, während   läuft eine WSDL-Import-Erweiterung:   System.ServiceModel.Description.XmlSerializerMessageContractImporter   Fehler: Gruppe   InfrastructureRootElements fehlt.   XPath auf Fehlerquelle:   // wsdl: Definitionen [@ target = 'urn: ihe: qrph: rpe: 2009'] / wsdl: porttype [@ name = 'ProtocolStateManager']

ProtocolStateManager.wsdl:

   <?xml version="1.0" encoding="UTF-8"?>
<definitions name="ProtocolStateManager" 
             targetNamespace="urn:ihe:qrph:rpe:2009" 
             xmlns:rpe="urn:ihe:qrph:rpe:2009"
             xmlns="http://schemas.xmlsoap.org/wsdl/" 
             xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">
 <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    TYPE DEFINITION - List of services participating in this BPEL process
    The default output of the BPEL designer uses strings as input and 
    output to the BPEL Process. But you can define or import any XML 
    Schema type and use them as part of the message types.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
 <types>
  <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:ihe:qrph:rpe:2009">
   <include schemaLocation="schema\RPE.xsd"/>
  </schema>
 </types>
 <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    MESSAGE TYPE DEFINITION - Definition of the message types used as 
    part of the port type defintions
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
 <message name="EnterPatientRequestRequestMessage">
  <part name="payload" element="rpe:EnterPatientRequest"/>
 </message>
 <message name="EnterPatientRequestResponseMessage">
  <part name="payload" element="rpe:EnterPatientRequest"/>
 </message>
 <message name="PatientScreeningVisitsScheduledRequestMessage">
  <part name="payload" element="rpe:PatientScreeningVisitsScheduled"/>
 </message>
 <message name="PatientScreeningVisitsScheduledResponseMessage">
  <part name="payload" element="rpe:PatientScreeningVisitsScheduled"/>
 </message>
 <message name="PatientScreeningVisitRecordedRequestMessage">
  <part name="payload" element="rpe:PatientScreeningVisitRecorded"/>
 </message>
 <message name="PatientScreeningVisitRecordedResponseMessage">
  <part name="payload" element="rpe:PatientScreeningVisitRecorded"/>
 </message>
 <message name="EnrollPatientRequestRequestMessage">
  <part name="payload" element="rpe:EnrollPatientRequest"/>
 </message>
 <message name="EnrollPatientRequestResponseMessage">
  <part name="payload" element="rpe:EnrollPatientRequest"/>
 </message>
 <message name="PatientStudyVisitsScheduledRequestMessage">
  <part name="payload" element="rpe:PatientStudyVisitsScheduled"/>
 </message>
 <message name="PatientStudyVisitsScheduledResponseMessage">
  <part name="payload" element="rpe:PatientStudyVisitsScheduled"/>
 </message>
 <message name="PatientStudyVisitRecordedRequestMessage">
  <part name="payload" element="rpe:PatientStudyVisitRecorded"/>
 </message>
 <message name="PatientStudyVisitRecordedResponseMessage">
  <part name="payload" element="rpe:PatientStudyVisitRecorded"/>
 </message>
  <message name="AlertProtocolStateMessage">
  <part name="payload" element="rpe:AlertProtocolState"/>
 </message>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    PORT TYPE DEFINITION - A port type groups a set of operations into
    a logical service unit.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
 <!-- portType implemented by the ProtocolStateManager BPEL process -->
 <portType name="ProtocolStateManager">
  <operation name="EnterPatientRequest">
   <input message="rpe:EnterPatientRequestRequestMessage"/>
   <output message="rpe:EnterPatientRequestResponseMessage"/>
  </operation>
  <operation name="PatientScreeningVisitsScheduled">
   <input message="rpe:PatientScreeningVisitsScheduledRequestMessage"/>
   <output message="rpe:PatientScreeningVisitsScheduledResponseMessage"/>
  </operation>
  <operation name="RecordPatientScreeningVisit">
   <input message="rpe:PatientScreeningVisitRecordedRequestMessage"/>
   <output message="rpe:PatientScreeningVisitRecordedResponseMessage"/>
  </operation>
  <operation name="EnrollPatientRequest">
   <input message="rpe:EnrollPatientRequestRequestMessage"/>
   <output message="rpe:EnrollPatientRequestResponseMessage"/>
  </operation>
  <operation name="PatientStudyVisitsScheduled">
   <input message="rpe:PatientStudyVisitsScheduledRequestMessage"/>
   <output message="rpe:PatientStudyVisitsScheduledResponseMessage"/>
  </operation>
  <operation name="RecordPatientStudyVisit">
   <input message="rpe:PatientStudyVisitRecordedRequestMessage"/>
   <output message="rpe:PatientStudyVisitRecordedResponseMessage"/>
  </operation>
 </portType>

  <portType name="ProtocolStateManagerCallback">
   <operation name="onAlertProtocolState">
    <input message="rpe:AlertProtocolStateMessage"/>
   </operation>
 </portType>

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    PARTNER LINK TYPE DEFINITION
    the ProtocolStateManager partnerLinkType binds the provider and
    requester portType into an asynchronous conversation.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
 <plnk:partnerLinkType name="ProtocolStateManager">
    <plnk:role name="ProtocolStateManagerProvider">
        <plnk:portType name="rpe:ProtocolStateManager"/>
    </plnk:role>
    <plnk:role name="ProtocolStateManagerCallbackListener">
        <plnk:portType name="rpe:ProtocolStateManagerCallback"/>
    </plnk:role>
 </plnk:partnerLinkType>
</definitions>

RPE.xsd (Referenz von ProtocolStateManager.wsdl):

<schema attributeFormDefault="unqualified" elementFormDefault="qualified" 
        targetNamespace="urn:ihe:qrph:rpe:2009" 
        xmlns:rpe="urn:ihe:qrph:rpe:2009" 
        xmlns:v3="urn:hl7-org:v3" 
        xmlns="http://www.w3.org/2001/XMLSchema">

    <import namespace="urn:hl7-org:v3" schemaLocation="PORT_MT100001UV.xsd"/>

    <element name="RetrieveProtocolDef" type="rpe:RetrieveProtocolDefType"/>
    <element name="EnterPatientRequest" type="rpe:EnterPatientRequestType"/>
    <element name="EnrollPatientRequest" type="rpe:EnrollPatientRequestType"/>
    <element name="PatientScreeningVisitsScheduled" type="rpe:PatientScreeningVisitsScheduledType"/>
    <element name="PatientScreeningVisitRecorded" type="rpe:PatientScreeningVisitRecordedType"/>
    <element name="PatientStudyVisitsScheduled" type="rpe:PatientStudyVisitsScheduledType"/>
    <element name="PatientStudyVisitRecorded" type="rpe:PatientStudyVisitRecordedType"/>
    <element name="AmendProtocolDef" type="rpe:AmendProtocolDefType"/>
    <element name="AlertProtocolState" type="rpe:AlertProtocolStateType"/>
    <!--  need patient information and study information
            EnterPatientRequestType can also be used for the return of candidateID?-->
    <complexType name="RetrieveProtocolDefType">
        <sequence>
            <element name="query" type="string"/>
            <element name="protocolDef" type="string"/>
        </sequence>
    </complexType>
    <complexType name="EnterPatientRequestType">
        <sequence>
            <element name="patient" type="rpe:PatientType"/>
            <element name="study" type="v3:PORT_MT100001UV.Study"/>
        </sequence>
    </complexType>
    <!--  need patient for candidateID of the patient being scheduled for screening visits
            need studyID to associate the candidate with the study
            need schedule information-->
    <complexType name="PatientScreeningVisitsScheduledType">
        <sequence>
            <element name="patient" type="rpe:PatientType"/>
            <element name="studyID" type="v3:II"/>
            <element name="schedule" type="rpe:ScreeningVisitScheduleType"/>
        </sequence>
    </complexType>
    <!--  need patient for candidateID of patient being recorded for screening visit
            need studyID to associate the candidate with the study
            need visit information for the screening visit being recorded-->
    <complexType name="PatientScreeningVisitRecordedType">
        <sequence>
            <element name="patient" type="rpe:PatientType"/>
            <element name="studyID" type="v3:II"/>
            <element name="visit" type="rpe:ScreenVisitType"/>
        </sequence>
    </complexType>
    <!--  need patient information and study information
            EnterPatientRequestType can also be used for the return of subjectID?-->
    <complexType name="EnrollPatientRequestType">
        <sequence>
            <element name="patient" type="rpe:PatientType"/>
            <element name="study" type="v3:PORT_MT100001UV.Study"/>
        </sequence>
    </complexType>
    <!--  need patient for subjectID of the patient being scheduled for visits
            need studyID to associate the subject with the study
            need schedule information-->
    <complexType name="PatientStudyVisitsScheduledType">
        <sequence>
            <element name="patient" type="rpe:PatientType"/>
            <element name="studyID" type="v3:II"/>
            <element name="schedule" type="rpe:StudyVisitScheduleType"/>
        </sequence>
    </complexType>
    <!--  need patient for subjectID of patient being recorded for visit
            need studyID to associate the subject with the study
            need visit information for the visit being recorded-->
    <complexType name="PatientStudyVisitRecordedType">
        <sequence>
            <element name="patient" type="rpe:PatientType"/>
            <element name="studyID" type="v3:II"/>
            <element name="visit" type="rpe:StudyVisitType"/>
        </sequence>
    </complexType>
    <!--  patient information should NOT include emrID?
            should contain placeholder for candidateID and subjectID
            what specific demographics data is needed?
              Should this be a generic type so that an XML standard can be passed?-->
    <complexType name="PatientType">
        <sequence>
            <element name="candidateID" type="string"/>
            <element name="subjectID" type="string"/>
            <element name="name" type="string"/>
            <element name="address" type="string"/>
            <element name="dob" type="string"/>
        </sequence>
    </complexType>
    <!--  studyID to identify the study
            should studyData be a generic type to store an XML standard
    <complexType name="StudyType">
        <sequence>
            <element name="studyID" type="string"/>
            <element name="studyData" type="string"/>
        </sequence>
    </complexType>-->
    <complexType name="ScreenVisitType">
        <sequence>
            <element name="visitID" type="string"/>
            <element name="candidateID" type="string"/>
            <element name="date" type="string"/>
            <element name="screenVisitData" type="string"/>
        </sequence>
    </complexType>
    <complexType name="StudyVisitType">
        <sequence>
            <element name="visitID" type="string"/>
            <element name="subjectID" type="string"/>
            <element name="date" type="string"/>
            <element name="studyVisitData" type="string"/>
        </sequence>
    </complexType>
    <complexType name="ScreeningVisitScheduleType">
        <sequence>
            <element name="visit" type="rpe:ScreenVisitType" maxOccurs="unbounded"/>
        </sequence>
    </complexType>
    <complexType name="StudyVisitScheduleType">
        <sequence>
            <element name="visit" type="rpe:StudyVisitType" maxOccurs="unbounded"/>
        </sequence>
    </complexType>
    <complexType name="AmendProtocolDefType">
        <sequence>
            <element name="protocolDef" type="string"/>
        </sequence>
    </complexType>
    <complexType name="AlertProtocolStateType">
        <sequence>
            <element name="patient" type="rpe:PatientType"/>
            <element name="study" type="v3:PORT_MT100001UV.Study"/>
        </sequence>
    </complexType>
</schema>

Snippet von PORT_MT100001UV.xsd (Referenced von RPE.xsd) - beachten Sie die "InfrastructureRootElements" xs: group:

  <xs:complexType name="PORT_MT100001UV.Access">
      <xs:sequence>
         <xs:group ref="InfrastructureRootElements"/>
         <xs:element name="id" type="II" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element name="targetSiteCode" type="CD" minOccurs="0" maxOccurs="1"/>
         <xs:choice>
            <xs:choice>
               <xs:element name="accessedPerson" type="PORT_MT100001UV.Person" nillable="true"
                           minOccurs="0"
                           maxOccurs="1"/>
               <xs:element name="accessedNonPersonLivingSubject"
                           type="PORT_MT100001UV.NonPersonLivingSubject"
                           nillable="true"
                           minOccurs="0"
                           maxOccurs="1"/>
            </xs:choice>
            <xs:element name="accessedProduct" type="PORT_MT100001UV.Product" nillable="true"
                        minOccurs="0"
                        maxOccurs="1"/>
         </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="InfrastructureRootAttributes"/>
      <xs:attribute name="nullFlavor" type="NullFlavor" use="optional"/>
      <xs:attribute name="classCode" type="RoleClassAccess" use="required"/>
   </xs:complexType>

infrastructureRoot.xsd (Referenz von PORT_MT100001UV.xsd) hier die Definition der InfrastructureRootElements Gruppe bemerken - das ist die gleiche Gruppe aus dem obigen Schema, das das Attribut ref hat:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns:mif="urn:hl7-org:v3/mif" xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:v3="urn:hl7-org:v3"
           xmlns:ex="urn:hl7-org/v3-example"
           elementFormDefault="qualified">
   <xs:annotation xmlns="urn:hl7-org:v3">
      <xs:documentation>Source Information...</xs:documentation>
   </xs:annotation>
   <xs:include schemaLocation="voc.xsd"/>
   <xs:include schemaLocation="datatypes.xsd"/>
   <xs:group name="InfrastructureRootElements">
      <xs:sequence>
         <xs:element name="realmCode" type="CS" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element name="typeId" type="II" minOccurs="0" maxOccurs="1"/>
         <xs:element name="templateId" type="II" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
   </xs:group>
   <xs:attributeGroup name="InfrastructureRootAttributes"/>
</xs:schema>
War es hilfreich?

Lösung

Ich fand dieses Tool - WSCF Blue - aus einem Beitrag auf Msdn Foren. Es hat mich über meine Fehler und sieht auch ziemlich viel mehr in Bezug auf Funktionalität anbieten zu können.

Andere Tipps

Ich bin nicht sicher über SvcUtil, aber für XSD.exe und WSDL.exe Sie müssen alle Dateien angeben, die durch die XSD-Datei verwendet werden, da sie keine Elemente erkennen. Vielleicht, mein Beitrag wird Ihnen helfen zu: http://seanmcilvenna.com/blog / 7-general / 30-xca-Implementierung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top