Skip to content

uwwebservices/wd-soapgen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wd-soapgen License: MIT

Meld xscgen and dotnet-svcutil tools to create corrected Workday SOAP client libraries.

Install

git clone https://github.com/uwwebservices/wd-soapgen.git
cd wd-soapgen
.\install.ps1

Tested with dotnet-svcutil@2.1.0 and xscgen@2.0.810.0.

Project Assumptions

This tool assumes that you isolate generated service code to dedicated projects. For example:

- WorkdayProject
  - WorkdayProject.sln
  - WD.V35.FinancialManagement
    - WD.V35.FinancialManagement.csproj (classlib)
  - WorkdayWorker
    - WorkdayWorker.csproj (console)
    - Program.cs

After running:

wd-soapgen https://community.workday.com/sites/default/files/file-hosting/productionapi/Financial_Management/v35.0/Financial_Management.wsdl

in WD.V35.FinancialManagement the file system layout would look like:

- WorkdayProject
  - WorkdayProject.sln
  - WD.V35.FinancialManagement
    - WD.V35.FinancialManagement.csproj (classlib)
    - Interfaces.g.cs
    - Client.g.cs
    - Types.g.cs
    - dotnet-svcutil.params.json
  - WorkdayWorker
    - WorkdayWorker.csproj (console)
    - Program.cs

Usage

First-time

cd WD.V35.FinancialManagement
wd-soapgen https://community.workday.com/sites/default/files/file-hosting/productionapi/Financial_Management/v35.0/Financial_Management.wsdl

Regenerate (and update dependencies)

cd WD.V35.FinancialManagement
wd-soapgen https://community.workday.com/sites/default/files/file-hosting/productionapi/Financial_Management/v35.0/Financial_Management.wsdl

Regenerate (and do not update dependencies)

cd WD.V35.FinancialManagement
wd-soapgen --no-install https://community.workday.com/sites/default/files/file-hosting/productionapi/Financial_Management/v35.0/Financial_Management.wsdl

Formats

This supports WSDL from either the Workday API or Workday RAAS.

Workday API Example

https://community.workday.com/sites/default/files/file-hosting/productionapi/Financial_Management/v35.0/Financial_Management.wsdl

The tool also uses the corresponding XSD endpoint:

https://community.workday.com/sites/default/files/file-hosting/productionapi/Financial_Management/v35.0/Financial_Management.xsd

Workday RAAS Example

https://wd5-services1.myworkday.com/ccx/service/customreport2/uw/ISU_FIN_EDP_Outbound/RPT_UWFTINT1062_FIN_Awards_FDM_Award_IDs?wsdl The tool also uses the corresponding XSD endpoint:

https://wd5-services1.myworkday.com/ccx/service/customreport2/uw/ISU_FIN_EDP_Outbound/RPT_UWFTINT1062_FIN_Awards_FDM_Award_IDs?xsd

Why?

The WCF team has acknowledged a bug in dotnet-svcutil that prevents dotnet-svcutil from reusing types in referenced assemblies. This is a problem because dotnet-svcutil has also acknowledged another bug that produces incorrect types and annotations when collapsing SOME container types into jagged arrays. When these bugs are fixed, it MAY be trivial to generate classes with xscgen and then point dotnet-svcutil at those types or just use dotnet-svcutil directly. Until then, this application:

  • Creates files with both tools.
    • WD.V35.FinancialManagement.cs
    • Svcutil.cs
  • Merges Svcutil Input/Output types with XscGen's types, issuing corrections to the Svcutil file.
  • Tree shakes dead code using the Port interface as root.
  • Coalesces interfaces, types, and the client their own respective files.

About

Meld xscgen and dotnet-svcutil tools to create corrected Workday SOAP client libraries

Topics

Resources

License

Stars

Watchers

Forks