CAA Web Services Home |
|
Consuming the ENOVWSProdStructConfigCpp CAA Web ServiceUsing the ENOVWSProdStructConfigCppCAA Web Service for a configured product |
Use Case |
AbstractThis article discusses the CAAENOVWSDotNet1_1Client use case. It describes how to use the Java client binding that can be generated using the Axis WSDL2Java emitter in order to consume the ENOVWSProdStructConfigCpp CAA Web service. It provides a sample usage scenario that demonstrates configuration capabilities in ENOVIA LCA V5. CAAENOVWSProdStructConfigCppUseCase choreographs the larger steps. Details are encapsulated in CAAENOVWSProdStructConfigCppUseCaseCar. CAAENOVWSProdStructConfigCppUseCaseCar, in turn, calls methods exposed in each of the web service wrapper classes. Only services exposed by ENOVWSProdStructConfigCppWrapper are discussed in detail in this document. |
This use case demonstrates how to write a client application that consumes the ENOVWSProdStructConfigCpp CAA Web service. It helps you to:
[Top]
CAAENOVWSProdStructConfigCppUseCase is a use case of the CAAENOVWS.edu framework that illustrates the ENOVWSProdStructConfigCpp CAA Web service capabilities. CAAENOVWSProdStructConfigCppUseCaseCar is also a member of he CAAENOVWS.edu framework.
[Top]
In this use case we build a concept engineering car as follows:
Basically, the first car(unit 1) is a front-wheel-drive, whose exhaust has a small-tail. And the last one(unit 100) is a rear-wheel-drive, whose exhaust has a large-tail. Basic unit 'effectivities' are applied to determine the configuration of each of the cars in between.
Even the best conceived designs are subjected to change, so include two more configurations (four-wheel-drive, and all-wheel-drive) to this concept design.
Of course you would want to capture all the changes on an Action in ENOVIA LCA.
Now let's dissect the CAAENOVWSProdStructConfigCppUseCaseCar use case.
First introduce a configured product in ENOVIA LCA
The big picture steps - process steps - are choreographed in CAAENOVWSProdStructConfigCppUseCase use case. Details are coded in methods of CAAENOVWSProdStructConfigCppUseCaseCar[7]. CAAENOVWSProdStructConfigCppUseCaseCar in turn calls web services in each domain's wrapper implementations. For instance CAAENOVWSProdStructConfigCppWrapper encapsulates web services for configuration capabilities in ENOVIA LCA. It will be helpful to follow along by reading the code for this use case. In particular CAAENOVWSProdStructConfigCppUseCaseCar[7].
Having performed the necessary preliminary steps to connect to ENOVIA LCA and having queried the PRC 'Concept CAR', this use case creates parts used to build the 'Concept CAR' in ENOVIA LCA.
Step 4 calls creatPartVersionObjects()[7] method to create parts in ENOVIA LCA. It also calls creatDocumentObjects()[7] to create an owner's manual to be added to the action manually.
Please note that only the exhaust is configured by the use case. The product 'Concept CAR' was configured in LCA.
Step 5 constructs Effectivity Mods, containing units, belonging to 'Concept CAR' at the first level.
This step also constructs Effectivity Mods, containing units, belonging to 'exhaust'. Since tail-small and tail-large are items under exhaust, we will say that they are at the second level. Children of product 'Concept CAR' are at first level. Refer to createModifications sample code for consumption details.
Resulting Mods in ENOVIA LCA:
Step 5 also created config handlers for units 1,40,51,80, and 91 by calling creatConfigHandlers()[7] method. Refer to createConfigHandler sample code for consumption details.
Step 6 creates an Action - PSCWSAction - in ENOVIA LCA. To capture changes in ENOVIA LCA Change Management during construction and configuration of 'Concept CAR', two methods are called. Namely, addAssociatedObjectsToCar()[7] and addAssociatedObjectsToExhaust()[7]. The first one adds configured PRC 'Concept CAR' as an Associated Object and attaches the first level Mods to it. These Mods will be used to configure children of 'Concept CAR'. Likewise, addAssociatedObjectsToExhaust()[7] ads exhaust as an Associated Object and attaches the second level Mods to it.
Step 7 builds the first level assembly. As you can see, the use case has constructed the first level - as was originally intended - by adding only a front-wheel-drive, a rear-wheel-drive, and an exhaust to the 'Concept CAR'.
Step 8 Get(s) and Resolve(s) Operations for the changes in the above steps. Since an Add was performed on each of the items above, the getOperations Web service will return three unresolved operations. For each of the unresolved operation, the use case furnishes a Mod, created prior, and uses resolveOperatiions to resolve them. The rear-wheel-drive-mod is sent in during resolve 'Add' operations for the rear-wheel-drive. And so on. The code matches the names of the Mods and the Items.
Step 9 and Step 10 performs add, and then resolves operations for children of exhaust.
Step 11 demonstrated Replace and Cut functions. First by replacing rear-wheel-drive with all-wheel-drive. And then by issuing a Cut on front-wheel-drive, and an Add for a four-wheel-drive in it's place. The resulting operations are resolved using the Mods created earlier.
Step 13 gets all the affected objects captured by PSCWSAction :
'Concept CAR' looks like so in the LCA Product Editor.
Step 14 generates BOM reports by calling an expand on 'Concept CAR' and passing in Config Handlers as follows:
[Top]
The CAAENOVWSDotNet1_1Client use case is made of several classes located in both CAAENOVWSDotNet1_1Client.m and CAAENOVWSDotNet1_1ClientBase.m modules of the CAAENOVWS.edu framework:
<Install>\CAAENOVWS.edu\CAAENOVWSDotNet1_1Client.m\src <Install>\CAAENOVWS.edu\CAAENOVWSDotNet1_1ClientBase.m\src |
<Install>
: the root directory where the CAA CD-ROM is installed.The CAAENOVWSDotNet1_1ClientBase.m module (library) contains the following resources:
<Source>\CAAENOVWSProdStructConfigCppProxy.cs |
<Source>
: <Install>\CAAENOVWS.edu\CAAENOVWSDotNet1_1ClientBase.m\src
.The CAAENOVWSQueryCppProxy.cs file contains the C# client binding generated using the wsdl.exe utility. A C# client binding consists of a proxy and several types definitions. The CAAENOVWSQueryCppWrapper.cs file contains a class that describes how to configure the generated proxy and how to invoke its methods.
The CAAENOVWSDotNet1_1Client.m module (executable) contains the following resources:
<Source>\CAAENOVWSDotNet1_1Client.cs |
<Source>
: <Install>\CAAENOVWS.edu\CAAENOVWSDotNet1_1Client.m\src
.The CAAENOVWSDotNet1_1Client.cs file contains the main program. It parses the command line inputs and starts up the use case. The CAAENOVWSProdStructConfigCppUseCase.cs file contains the sample use case scenario.
[Top]
To launch the CAAENOVWSProdStructConfigCppUseCase use case, you will need to set up a build time environment, build the code along with its prerequisites, set up a runtime configuration and then execute the use case. You can see [3] for details on how to perform these steps within the IRAD 6 environment.
This use case requires a configured product(PRC) to be in the LCA V5 database. The name of this product is passed in as a parameter described below.
The sample usage scenario delivered within this use case is launched from the
CAAENOVWSDotNet1_1Client
class. It defines
a main method that takes several options as parameters, as described below:
-w <URI> -e <ENOVIA username> -u
<Basic Authentication username> -p <Basic Authentication password> -t
CAAENOVWSProdStructConfigCppUseCase -r Concept_CAR |
<URI>
: is the root URI of the Web application where the ENOPosApplicationBinderImpl
CAA Web service is deployed,
<ENOVIA username>
: is a valid username declared in the ENOVIA P&O database,
<Basic Authentication Username> and <Basic Authentication Password>
:
are a valid set of credentials for authentication on the remote Web server.
Here follows a sample command, to be updated with your own environment configuration:
-w http://stophe1dsy.dsy.ds:9080/B17 -e cjk -u wpsadmin -p wpsadmin -t
CAAENOVWSProdStructConfigCppUseCase |
[Top]
The following section first explains how to generate the Java client binding for the ENOVWSProdStructConfigCpp CAA Web service demonstrated. The remaining sections then describe the code that must be written in order to consume this Web service. Not all service employed by this use case are detailed in this section. Only the one's that pertain to ENOVWSProdStructConfigCpp are detailed here.
[Top]
Please refer to [2] for details on how to generate the C# client binding using the wsdl.exe utility.
Here follows a sample command in order to generate the C# client binding for the ENOVWSProdStructConfigCpp CAA Web service:
wsdl /namespace:com.dassault_systemes.caaenovws.caaenovwsdotnet1_1clientgen.enovwsquerycpp /username:wpsadmin
/password:wpsadmin /out:CAAENOVWSProdStructConfigCppProxy.cs http://stophe1dsy.dsy.ds:9080/B17/wsdl?service=urn:com:dassault_systemes:ENOVWSProdStructConfigImpl:ENOVWSQueryImpl:ENOVWSProdStructConfigCpp |
The server name, port, and context root URI information must be updated to match the server where the
ENOVWSProdStructConfigCpp CAA Web service has been deployed. The /username
and /username
options are required to authenticate on the Web server hosting the Web service.
[Top]
In order to consume an implementation of the ENOVWSProdStructConfigCpp CAA Web service deployed on a target Web server, you first need to instantiate the proxy generated using the wsdl.exe utility. This proxy must then be configured in order to manage authentication on the remote Web server, timeout, and session management. Maintaining the HTTP session state is mandatory when consuming ENOVIA LCA V5 CAA Web services.
The generated proxy class is used in order to marshall method calls and objects to SOAP requests, and to unmarshall SOAP responses to objects. The following code describes how to instantiate and configure it:
public CAAENOVWSProdStructConfigCppWrapper( CookieContainer container, string uri, string credUser, string credPwd, int timeOut) { proxy = new CAAENOVWSProdStructConfigCppProxy(); // Compute the SOAP endpoint URI value that bounds to the deployed implementation of the // ENOVWSProdStructCpp CAA Web service proxy.Url = uri + "servicerouter?service=" + SERVICE_ID; // Required for HTTP session state management proxy.CookieContainer = container; // Required for the Basic Authentication mechanism ICredentials credentials = new NetworkCredential(credUser, credPwd); proxy.Credentials = credentials; // Increase the default client time-out proxy.Timeout = timeOut; } |
(1): in order to maintain the HTTP session state between successive calls performed
using either the same or multiple proxy instances, the CookieContainer
property must be
set on the proxy. This is mandatory in the context of ENOVIA LCA V5 CAA Web services,
(2): when security is enabled on the remote Web server, it is mandatory to set the
Credentials
property on the proxy. The values specified must match a valid set of credentials
for the Basic Authentication mechanism,
(3): the default timeout value can be increased in order to avoid potential issues
at runtime, such as losing the HTTP connection before receiving the SOAP responses. The value specified
in the code is in milliseconds.
[Top]
Create mod can be achieved using the following method, which is available through the generated proxy:
public Status
createModification(ConfigExpression iConfigExp, ENOVIAHolder
oResult)
|
This method accepts the following parameters:
[in] iConfigExp
|
The ConfigExpression to create mods. See [6] for details |
[in/out] oResult
|
Resulting mods |
The following code demonstrates the use of createModifications method:
public ENOVIA CreateModification(String iPartOrPRCId, String iConfigExpression) { Console.Out.WriteLine(">>> Invoking 'createModification' on ENOVWSProdStructConfigCpp CAA Web service proxy"); if (iPartOrPRCId == null) { throw new ApplicationException("iPartOrPRCId ID is null"); } else if (iConfigExpression == null) { throw new ApplicationException("configExpression is null"); } Console.Out.WriteLine("PRCId ID: " + iPartOrPRCId); Console.Out.WriteLine("configExpression name: " + iConfigExpression); ConfigExpression configExp = new ConfigExpression(); configExp.ConfigExpression1 = iConfigExpression; Identifier partOrPRCId = ToIdentifier(iPartOrPRCId); ENOVIA oResult = null; // Invoke create document on remote Web service try { Status status = proxy.CreateModification(partOrPRCId,configExp, ref oResult); Console.Out.WriteLine("Status: " + status.Status1); } catch (Exception e) { throw new Exception("Failed to create modification", e); } // Process output data if (oResult == null) { throw new Exception("Failed to create modification"); } return oResult; }
|
[Top]
Create Config Handler can be achieved using the following method, which is available through the generated proxy:
public Status
createConfigHandler(ConfigExpression iConfigExp, ENOVIAHolder oResult)
|
The method accepts the following parameters:
[in] iConfigExp |
The ConfigExpression for create config handler. See [6] for details |
[in/out] oResult
|
Resulting config handlers |
The following code demonstrates the use of createConfigHandler method:
public ENOVIA CreateConfigHandler(String iPRCId, String iConfigExpression) { Console.Out.WriteLine(">>> Invoking 'createConfigHandler' on ENOVWSProdStructConfigCpp CAA Web service proxy"); if (iPRCId == null) { throw new ApplicationException("PRC ID is null"); } else if (iConfigExpression == null) { throw new ApplicationException("configExpression is null"); } Console.Out.WriteLine("PRCId ID: " + iPRCId); Console.Out.WriteLine("configExpression name: " + iConfigExpression); ConfigExpression configExp = new ConfigExpression(); configExp.ConfigExpression1 = iConfigExpression; Identifier prcId = ToIdentifier(iPRCId); ENOVIA oResult = null; // Invoke create document on remote Web service try { Status status = proxy.CreateConfigHandler(prcId,configExp,ref oResult); Console.Out.WriteLine("Status: " + status.Status1); } catch (Exception e) { throw new Exception("Failed to create ConfigHandler", e); } // Process output data if (oResult == null ) { throw new Exception("Failed to create ConfigHandler"); } return oResult; }
|
[Top]
Get Operations can be achieved using the following method, which is available through the generated proxy:
public Status getOperations(Identifier iObjectId,
OperationStructureArrayHolder oResult)
|
The method accepts the following parameters:
[in] iObjectId |
The object identifier |
[in/out] oResult
|
Operations structure |
The following code demonstrates the use of getOperations method:
public OperationStructure [] GetOpers(String iPRCId) { Console.Out.WriteLine(">>> Invoking 'GetAllOperations' on ENOVWSProdStructConfigCpp CAA Web service proxy"); if (iPRCId == null) { throw new ApplicationException("PRC ID is null"); } Console.Out.WriteLine("PRCId ID: " + iPRCId); Identifier prcId = ToIdentifier(iPRCId); OperationStructure [] oHolderOperations = null; // Invoke create document on remote Web service try { Status status = proxy.GetOperations(prcId, ref oHolderOperations); Console.Out.WriteLine("Status: " + status.Status1); } catch (Exception e) { throw new Exception("Failed to GetOperations", e); } // Process output data if (oHolderOperations == null) { throw new Exception("Failed to GetOperations"); } return oHolderOperations; } |
[Top]
Resolve Operations can be achieved using the following method, which is available through the generated proxy:
public
Status resolveOperations(OperationStructureArrayHolder
iOperationStruct)
|
The method accepts the following parameters:
[in] iOperationStruct |
Operations structure |
The following code demonstrates the use of resolveOperations method:
public void ResolveOpers(String iMod, OperationStructure [] iOperations){ Console.Out.WriteLine(">>> Invoking 'ResolveOpers' on ENOVWSProdStructConfigCpp CAA Web service proxy"); if (iMod == null) { throw new ApplicationException("iMod ID is null"); } else if (iOperations == null) { throw new ApplicationException("iOperations is null"); } Console.Out.WriteLine("iMod ID: " + iMod); Identifier iEnovMod = ToIdentifier(iMod); try { Status status = proxy.ResolveOperations(iEnovMod, ref iOperations); Console.Out.WriteLine("Status: " + status.Status1); } catch (Exception e) { throw new Exception("Failed to resolveOperations", e); } } |
The following code depends on:
It demonstrates a sample usage scenario for an end to end product configuration, and change management functions.
public class CAAENOVWSProdStructConfigtCppUseCase { private string uri = null; private string credUser = null; private string credPwd = null; public CAAENOVWSProdStructConfigtCppUseCase(string uri, string credUser, string credPwd) { this.uri = uri; this.credUser = credUser; this.credPwd = credPwd; } public void RunSampleUsageScenario(string enoviaUser, string prcVID) { bool success = false; Exception exception = null; enoposapplicationbinderimpl.CAAENOPosApplicationBinderImplWrapper binderWrapper = null; enoposapplicationbinderimpl.SessionToken sessionToken = null; try { // ------------------------------------------------------------ // Step 1 - Instantiate and configure the proxies // ------------------------------------------------------------ Console.Out.WriteLine("STEP 1: Instantiating and configuring CAA Web services proxies"); // Create a CookieContainer object to maintain the HTTP session state accross proxies CookieContainer container = new CookieContainer(); // Instantiate the wrapper client classes int timeOut = 360000; binderWrapper = new enoposapplicationbinderimpl.CAAENOPosApplicationBinderImplWrapper(container, uri, credUser, credPwd, timeOut); enovwsquerycpp.CAAENOVWSQueryCppWrapper queryWrapper = new enovwsquerycpp.CAAENOVWSQueryCppWrapper(container, uri, credUser, credPwd, timeOut); enovwschgmgmtcpp.CAAENOVWSChgMgmtCppWrapper chgMgmtWrapper = new enovwschgmgmtcpp.CAAENOVWSChgMgmtCppWrapper(container, uri, credUser, credPwd, timeOut); enovwscntmgmtcpp.CAAENOVWSCntMgmtCppWrapper cntMgmtWrapper = new enovwscntmgmtcpp.CAAENOVWSCntMgmtCppWrapper(container, uri, credUser, credPwd, timeOut); enovwsprodstructcpp.CAAENOVWSProdStructCppWrapper prodStructWrapper = new enovwsprodstructcpp.CAAENOVWSProdStructCppWrapper(container, uri, credUser, credPwd, timeOut); enovwsprodstructconfigcpp.CAAENOVWSProdStructConfigCppWrapper prodStructConfigWrapper = new enovwsprodstructconfigcpp.CAAENOVWSProdStructConfigCppWrapper(container, uri, credUser, credPwd, timeOut); // ------------------------------------------------------------ // Step 2 - Open session with ENOVIA LCA V5 // ------------------------------------------------------------ Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 2: Opening session with ENOVIA LCA V5"); Console.Out.WriteLine("--------------------------------------------------------------------------------"); // Get user contexts string[] userContexts = binderWrapper.GetUserContexts(enoviaUser); Console.Out.WriteLine("Found {0} context(s) in database", userContexts.Length); Console.Out.WriteLine("Displaying list of available contexts:"); for (int i = 0; i < userContexts.Length; i++) { Console.Out.WriteLine("Context[{0}]: {1}", i, userContexts[i]); } // Log in using the first available context if (userContexts.Length == 0) { throw new ApplicationException("No context found for the user specified"); } sessionToken = binderWrapper.Login(userContexts[0]); //create unique string for repeated running of the scenario long t=System.DateTime.Now.Ticks; String uniqueStr = t.ToString(); // ------------------------------------------------------------ // Step 3 - query car PRC // Preq: car PRC with VID of "CAAPSCWS_CAR_PRC" has to be present in the ENOVIA database // ------------------------------------------------------------ Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 3: query car PRC"); Console.Out.WriteLine("--------------------------------------------------------------------------------"); //String configPRC = "DotNetCAAPSCWS_CAR_PRC"; passing PRC from command line Console.Out.WriteLine("---> Looking for product in LCA --> " + prcVID); String carPRC = null; carPRC=queryWrapper.GetProductRootClassUUID(prcVID); // ------------------------------------------------------------ // Step 4 - create objects (part version, document) for car components // // ------------------------------------------------------------ Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 4: create PV and Doc objects"); Console.Out.WriteLine("--------------------------------------------------------------------------------"); //instantiate a car CAAENOVWSProdStructConfigCppUseCaseCar car= new CAAENOVWSProdStructConfigCppUseCaseCar(carPRC, uniqueStr); car.CreatPartVersionObjects(prodStructWrapper); car.CreatDocumentObjects(cntMgmtWrapper);//Step 4 back // --------------------------------------------------------------- // Step 5 - create configuration objects (mods and config handlers) // --------------------------------------------------------------- Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 5: create configuration objects, Mods and Config Handlers"); Console.Out.WriteLine("--------------------------------------------------------------------------------"); car.CreatModsForCar(prodStructConfigWrapper); car.CreatModsForExhaust(prodStructConfigWrapper); car.CreatConfigHandlers(prodStructConfigWrapper);//Step 5 back // --------------------------------------------------------------- // Step 6 - Change Management // --------------------------------------------------------------- Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 6: change management "); Console.Out.WriteLine("--------------------------------------------------------------------------------"); car.CreatAction(chgMgmtWrapper); car.AddAssociatedObjectsToCar(chgMgmtWrapper); car.AddAssociatedObjectsToExhaust(chgMgmtWrapper); car.AddAffectedObjects(chgMgmtWrapper);//Step 6 back // --------------------------------------------------------------- // Step 7 - build car (assembly) // --------------------------------------------------------------- Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 7: build prodStruct first level"); Console.Out.WriteLine("--------------------------------------------------------------------------------"); car.BuildProdStructCAR(prodStructWrapper);//Step 7 back // --------------------------------------------------------------- // STEP 8: Get and Resolve Operation for Car // --------------------------------------------------------------- Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 8: Get and Resolve Operation for Car "); Console.Out.WriteLine("--------------------------------------------------------------------------------"); //carPRC car.GetAndResolveOperationsCAR(prodStructConfigWrapper);//Step 8 back // --------------------------------------------------------------- // Step 9 - build exhaust (assembly) // --------------------------------------------------------------- Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 9: build prodStruct second level"); Console.Out.WriteLine("--------------------------------------------------------------------------------"); car.BuildProdStructExhaust(prodStructWrapper);//Step 9 back // --------------------------------------------------------------- // STEP 10: Get and Resolve Operation for Exhaust // --------------------------------------------------------------- Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 10: Get and Resolve Operation for Exhaust "); Console.Out.WriteLine("--------------------------------------------------------------------------------"); //Exhaust car.GetAndResolveOperationsExhaust(prodStructConfigWrapper);//Step 10 back // --------------------------------------------------------------- // STEP 11: Make some modification on ProdStruct car // --------------------------------------------------------------- Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 11: Make some modification on ProdStruct car "); Console.Out.WriteLine("--------------------------------------------------------------------------------"); car.ModifyCar(prodStructWrapper);//Step 11 back // --------------------------------------------------------------- // STEP 12: Get and Resolve Operation caused by step 9 // --------------------------------------------------------------- Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 12: Get and Resolve Operation caused by step 11 "); Console.Out.WriteLine("--------------------------------------------------------------------------------"); car.GetAndResolveOperationsCAR(prodStructConfigWrapper);//Step 12 back // --------------------------------------------------------------- // STEP 13: Get affected objects on action resulting from steps 10 and 12 // --------------------------------------------------------------- Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 13: Get affected objects on action resulting from steps 6, 10 and 12"); Console.Out.WriteLine("--------------------------------------------------------------------------------"); car.GetAffectedObjects(chgMgmtWrapper);//Step 13 back // --------------------------------------------------------------- // STEP 14: Report car BOM by applying config handlers // --------------------------------------------------------------- Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 14: Report car BOM by applying config handlers "); Console.Out.WriteLine("--------------------------------------------------------------------------------"); car.ReportBOM(prodStructWrapper,queryWrapper);//Step 14 back success = true; } catch (Exception e) { exception = e; } finally { // ------------------------------------------------------------ // Step 15 - Terminate opened session // ------------------------------------------------------------ Console.Out.WriteLine("--------------------------------------------------------------------------------"); Console.Out.WriteLine("STEP 15: Terminating opened session with ENOVIA LCA V5"); Console.Out.WriteLine("--------------------------------------------------------------------------------"); // The session must be closed even if a call to a method on the ENOVWSQueryCpp // CAA Web service fails binderWrapper.Logout(sessionToken); } if (success) { Console.Out.WriteLine("================================================================================"); Console.Out.WriteLine("Use case execution successful"); Console.Out.Flush(); Console.Out.Close(); Environment.Exit(0); } else { Console.Out.Flush(); Console.Out.Close(); Console.Error.WriteLine("================================================================================"); Console.Error.WriteLine("Use case execution failed"); Console.Error.WriteLine(exception.Message); Console.Error.WriteLine("Details:"); if (exception.InnerException != null) { Console.Error.WriteLine(exception.InnerException); // handles ApplicationException launched from the use case } else { Console.Error.WriteLine(exception); // handles unexpected exception } Console.Error.Flush(); Console.Error.Close(); Environment.Exit(-1); } } } |
The following methods are implemented in CAAENOVWSProdStructConfigCppUseCaseCar.java class[7]
the source code can be found in:
<Install>\<Source>\<Package>\ CAAENOVWSProdStructConfigCppUseCaseCar
.java
|
<Install>
: the root directory where the CAA CD-ROM is installed,
<Source>
: \CAAENOVWS.edu\CAAENOVWSDotNet1_1Client
.mj\src,
<Package>\com\dassault_systemes\caaenovws\CAAENOVWSDotNet1_1Client.
[Top]
This use case explains how to use the Java client binding generated using the Axis WSDL2Java emitter in order to consume the ENOVWSProdStructConfigCpp Web service. It also gives an overview of the methods available for that particular CAA Web service:
createModification
:
Create a Enovia modification, given a configured object (Part Instance)
and configuration expression.
createConfigHandler
:
Create a Enovia config handler, given a configuration expression.
getOperations
: Get pending
operations on a product.
resolveOperations: Resolve
pending operations.
[Top]
Version: 1 [Feb 2006] | Document created |
[Top] |
Copyright © 1994-2006, Dassault Systèmes. All rights reserved.