0

CRUD Matadata API を使用して、Salesforce でカスタム オブジェクトを作成しようとすると、次の例外が発生します。

     com.sforce.ws.SoapFaultException: Must specify a {http://www.w3.org/2001/XMLSchema-instance}
 type attribute value for the {http://soap.sforce.com/2006/04/metadata}metadata element
        at com.sforce.ws.transport.SoapConnection.createException(SoapConnection.java:205)
        at com.sforce.ws.transport.SoapConnection.receive(SoapConnection.java:149)
        at com.sforce.ws.transport.SoapConnection.send(SoapConnection.java:98)
        at com.sforce.soap.metadata.MetadataConnection.create(MetadataConnection.java:273)
        at com.sfo.service.SalesforceObjectBootstrap.createCustomObject(SalesforceObjectBootstrap.java:226)

このリンクのコードを使用しています。変更したのはカスタム オブジェクトの名前だけです http://www.salesforce.com/us/developer/docs/api_meta/Content/meta_calls_intro.htm

このステップで例外が発生します

AsyncResult[] asyncResults = metadataConnection.create(new CustomObject[]{customObject});

上記の create メソッドを呼び出す直前の Custom オブジェクトには、次のパラメーター値があります。

[CustomObject [Metadata  fullName='lead_5273_custom_reg__c'
]
 actionOverrides='{[0]}'
 articleTypeChannelDisplay='null'
 businessProcesses='{[0]}'
 customHelp='hey there help me'
 customHelpPage='null'
 customSettingsType='null'
 customSettingsVisibility='null'
 deploymentStatus='Deployed'
 deprecated='false'
 description='Created from backend Webcast API : Lead 5273 Custom Reg'
 enableActivities='false'
 enableDivisions='false'
 enableEnhancedLookup='false'
 enableFeeds='false'
 enableHistory='false'
 enableReports='false'
 fieldSets='{[0]}'
 fields='{[0]}'
 gender='null'
 household='false'
 label='Lead 5273 Custom Reg'
 listViews='{[0]}'
 nameField='[CustomField [Metadata  fullName='lead_5273_custom_reg__c'
]
 caseSensitive='false'
 customDataType='null'
 defaultValue='null'
 deleteConstraint='null'
 deprecated='false'
 description='field name for a metadata custom object'
 displayFormat='null'
 escapeMarkup='false'
 externalDeveloperName='null'
 externalId='false'
 formula='null'
 formulaTreatBlanksAs='null'
 inlineHelpText='null'
 label='Lead 5273 Custom Reg'
 length='0'
 maskChar='null'
 maskType='null'
 picklist='null'
 populateExistingRows='false'
 precision='0'
 referenceTo='null'
 relationshipLabel='null'
 relationshipName='null'
 relationshipOrder='0'
 reparentableMasterDetail='false'
 required='false'
 restrictedAdminField='false'
 scale='0'
 startingNumber='0'
 stripMarkup='false'
 summarizedField='null'
 summaryFilterItems='{[0]}'
 summaryForeignKey='null'
 summaryOperation='null'
 trackFeedHistory='false'
 trackHistory='false'
 type='Text'
 unique='false'
 visibleLines='0'
 writeRequiresMasterRead='false'
]
'
 namedFilters='{[0]}'
 pluralLabel='Lead 5273 Custom Regs'
 recordTypeTrackFeedHistory='false'
 recordTypeTrackHistory='false'
 recordTypes='{[0]}'
 searchLayouts='null'
 sharingModel='ReadWrite'
 sharingReasons='{[0]}'
 sharingRecalculations='{[0]}'
 startsWith='null'
 validationRules='{[0]}'
 webLinks='{[0]}'
]

ここで説明した方法を使用して、WSDL ファイルとその Java スケルトンを生成しました。 http://www.salesforce.com/us/developer/docs/api_meta/Content/meta_quickstart.htm#topic-title-sample-code

私のコードは、上記の例と完全に一致します。全体をコピペしただけです。

同じ例外について言及しているこのリンクを見つけました。ただし、このリンクはフォルダーの作成に関連しています。 http://boards.developerforce.com/t5/Java-Development/Metadata-API-errors-Must-specify-a-type-attribute-value-for-the/td-p/175253

この問題を解決する方法を教えてください。

4

1 に答える 1

1

私はこれを自分で遊んだことはありませんが、例外の見た目から、MetaDataここのブロック:

[CustomObject [Metadata  fullName='lead_5273_custom_reg__c']

オブジェクトタイプを含める必要があります。この場合はCustomObject__c(すべてのカスタムオブジェクトに__cサフィックスが付いている)と想定しているので、次のことを試してください。

[CustomObject [Metadata  fullName='lead_5273_custom_reg__c' type='CustomObject__c']

もちろん、fullname実際にはオブジェクト名である場合を除いて、可能性があります。

于 2012-08-21T10:21:54.373 に答える