Specific links to CAX systems may require the implementation of specific userexits. For an easy usage via ECI it is then necessary to call them with the standard ECI functionality.
![]() |
Using the ECI function eci_lgv_run you may already call decision tables which call userexits within Agile e6. Additional ECI function, which supports userexit calls: eci_usx_cal, eci_sel_usx, eci_nos_usx, eci_sel_men, eci_nos_men. |
Here an example of how a customer specific ECI function (ecc_test_usx) is integrated via a shared library.
The ECI function ecc_test_usx issues a message in the Agile e6 window. This ECI function is announced to the EDC administrator with the function EciEcc_Entry by calling edb_add_function.
![]() |
Creating an ECI function (source file eci_ecc.c) |
/************************ INFORMATIONAL PART *****************************/ /* */ /* MODULE : ECI_ECC */ /* PROJECT : ECC-CAX-Interface for Agile e6 */ /* AUTHOR : SCR, Agile Software GmbH, Karlsruhe */ /* DATE : 01.01.00 */ /* DESCRIPTION : Sample how to declare a new ECI function in */ /* Agile e6 */ /* */ /*************************************************************************/ /* */ /************************ DECLARATIONAL PART *****************************/ /* */ /************************ INCLUDED FILES *********************************/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include "fncdef.h" #include "ecipar.h2" #include "eci.h2" #include "eci.h1" #include "dux.h" /************************ IMPLEMENTATIONAL PART **************************/ /* */ /************************ Start of the function **************************/ static int ecc_test_usx(char *cp_Connection, eci_param *fun_par, char **cpp_RetCode, eci_param *ret_par) /*************************************************************************/ /* INPUT: */ /* cp_Connection - connection identifier */ /* fun_par - input parameter for */ /* ECI-function ecc_test_usx */ /* IN/OUTPUT : */ /* OUTPUT : */ /* cpp_RetCode - return code */ /*(success: name of called function, here */ /* ecc_test_usx function failed: eci_error) */ /* ret_par- return parameter of ECI-function */ /*************************************************************************/ /* RETURN-CODE: 0 = o.k. */ /* DESCRIPTION: Prints message stored in */ /* Agile e6 with key "ABC" */ /* REMARKS : */ /* EXAMPLE : */ /* SEE ALSO : */ /* AUTHOR : SCR */ /* CHANGES : */ /*************************************************************************/ { static char *cp_FuncName = "ecc_test_usx", *cp_EciError = "eci_error"; /*************************** CODING PART *********************************/ *cpp_RetCode = cp_FuncName; mes_wri("ABC", NULL, NULL, NULL); return (0); } /*000********************** END OF FUNCTION ecc_test_usx *****************/ /*********** PUBLIC ******************************************************/ /************************** START OF FUNCTION ****************************/ /*************************************************************************/ int EciEcc_Entry (Dux_Event eEvent) /*************************************************************************/ /* INPUT */ /* eEvent - event to process */ /* IN/OUTPUT : */ /* OUTPUT : */ /*************************************************************************/ /* RETURN-CODE: 0 = o.k. */ /* >0 = error */ /* */ /* DESCRIPTION: This function add userexits by calling the Agile e6 */ /* functions */ /* Dux_open() and Dux_AddCustomUsx() */ /* If this function returns an error, it MUST close the */ /* handle to release the userexits added so far by calling */ /* Dux_close() */ /* Possible events are: */ /* Dux_EVENT_INIT - library loaded, userexits may be */ /* added */ /* Dux_EVENT_EXIT - library will be unloaded immediately */ /* Dux_EVENT_BATCH - batch Agile e6 session started */ /* Dux_EVENT_ALPHA - alphanum. Agile e6 session started */ /* Dux_EVENT_GRAPH - graphic Agile e6 session started */ /* */ /* REMARKS : Only functions of the DUX interface may be called inside */ /* the INIT event: Agile e6 initialization is not */ /* finished at this point. */ /* If the function receives an unknown event, it should */ /* return zero to be compatible with future event codes. */ /* EXAMPLE : */ /* SEE ALSO : */ /* AUTHOR : */ /* CHANGES : */ /*************************************************************************/ { int i_Rc = 0, i; char *cp_FuncName = "EciEcc_Entry"; /**************************** CODING PART ********************************/ if (getenv("EDB_DEBUG")) fprintf(stderr, "[EciEcc]: Entry function called (event = %d)\n", eEvent); /* examine events */ switch (eEvent) { case Dux_EVENT_INIT: i_Rc = edb_add_function("ecc_test_usx", ecc_test_usx, "ECIECC"); break; case Dux_EVENT_EXIT: break; case Dux_EVENT_BATCH: break; case Dux_EVENT_ALPHA: case Dux_EVENT_GRAPH: break; default: break; } return (i_Rc); } /*000************ END OF FUNCTION EciEcc_Entry ***************************/ /*************************************************************************/ /*************************** END OF MODUL ********************************/ /*************************************************************************/ |
|
![]() |
Create .exp and .def files (e.g. copy .exp/.def) eci_ecc.def: EciEcc_Entry |
![]() |
Create "shared library" libeci_ecc.so with makefile (created by copying the makefile in the custom directory). |
# this is only a sample from our development environment, # you have to adapt it to your environment include $(axalant_root)/dev/make/make.env # Put objects to a local directory, the lib goes to EDB_HOME PathOBJ = obj/$(EDB_MACH) PathBIN = $(edb_home)/bin/$(EDB_MACH) PathLIB = $(edb_home)/lib/$(EDB_MACH) SHARED_LIB = eci_ecc SHR_ARCHIVE = 0 OBJS = $(PathOBJ)/eci_ecc.o SRCS = eci_ecc.c ENTRY = EciEcc_Entry IMPORTS = -ledb$(edb_ver) \ -lepshr$(epshr_ver) \ -ldtv \ -lepq$(epq_ver) LOCAL_CC_FLAGS= include $(axalant_root)/dev/make/make.common.shr # DO NOT DELETE THIS LINE -- make depend depends on it. |
|
![]() |
The "shared library" must be stored in the directory $axalant_home/bin/$EP_MACH (UNIX) or %axalant_home%\bin\%EP_MACH% (Windows). |
![]() |
Enter the new library in the environment configuration: Start Agile e6 setup tool, "Configure environment/Customizing libraries" |