Re: ARDBC plugin development again
In version 7.1 there was added support for creating plugins in java. On your server in the api/javaplugins there are some samples. -- Jarl 2009/6/12 Jonas Stumph Stevnsvig jonas.stumph.stevns...@bec.dk: Thanks for the response Jarl. You said that you would do it the Java way today? As far as I have read, ARDBC plugins for vendor forms must still be in dll form? Or have I missed something? with regards, Jonas Stumph Stevnsvig Remedy Developer BEC Phone (+45) 46 38 20 08 Mobile (+45) 61 56 20 08 jonas.stumph.stevns...@bec.dk becrem...@bec.dk -Oprindelig meddelelse- Fra: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] På vegne af Jarl Grøneng Sendt: 11. juni 2009 17:03 Til: arslist@ARSLIST.ORG Emne: Re: ARDBC plugin development again This is how I used this. Its a few years since I wrote this, and would definitly do it the Java way today: ARPLUGIN_EXPORT int ARDBCGetMultipleFields( void *object, /* IN; plug-in instance */ ARCompoundSchema *schema, /* IN; form containing the data */ ARFieldMappingList *mapping,/* OUT; list of fields */ ARFieldLimitList *limit, /* OUT; corresponding field limits */ ARUnsignedIntList *dataType,/* OUT; corresponding data types */ ARStatusList *status /* OUT; status of the operation */ ) { /* verify that the form name is the one we know about otherwise */ /* we will ignore this request */ if (schema-schemaType == AR_SCHEMA_VENDOR strcmp(schema-u.vendor.tableName, VENDOR_FORM_NAME) == 0) { /* fill the field mapping list with the three fields other than */ /* the id field that we are exposing */ mapping-numItems = 3; mapping-mappingList = (ARFieldMappingStruct *) malloc(sizeof(ARFieldMappingStruct) * mapping-numItems); if (mapping-mappingList == NULL) return AddErrorMessage(status, NULL, AR_RETURN_ERROR, PLUGIN_ERROR_MEMORY, ); mapping-mappingList[0].fieldType = AR_FIELD_VENDOR; strcpy(mapping-mappingList[0].u.vendor.fieldName, employee_name); mapping-mappingList[1].fieldType = AR_FIELD_VENDOR; strcpy(mapping-mappingList[1].u.vendor.fieldName, employee_phone); mapping-mappingList[2].fieldType = AR_FIELD_VENDOR; strcpy(mapping-mappingList[2].u.vendor.fieldName, employee_email); /* fill the field limit list (in case the Admin Tool uses it someday) */ limit-numItems = 3; limit-fieldLimitList = (ARFieldLimitStruct *) calloc(limit-numItems, sizeof(ARFieldLimitStruct)); if (limit-fieldLimitList == NULL) return AddErrorMessage(status, NULL, AR_RETURN_ERROR, PLUGIN_ERROR_MEMORY, ); limit-fieldLimitList[0].dataType = AR_DATA_TYPE_CHAR; limit-fieldLimitList[0].u.charLimits.maxLength = 50; limit-fieldLimitList[0].u.charLimits.menuStyle = AR_MENU_APPEND; limit-fieldLimitList[0].u.charLimits.qbeMatchOperation = AR_QBE_MATCH_ANYWHERE; limit-fieldLimitList[0].u.charLimits.fullTextOptions = AR_FULLTEXT_OPTIONS_NONE; limit-fieldLimitList[1].dataType = AR_DATA_TYPE_CHAR; limit-fieldLimitList[1].u.charLimits.maxLength = 20; limit-fieldLimitList[1].u.charLimits.menuStyle = AR_MENU_APPEND; limit-fieldLimitList[1].u.charLimits.qbeMatchOperation = AR_QBE_MATCH_ANYWHERE; limit-fieldLimitList[1].u.charLimits.fullTextOptions = AR_FULLTEXT_OPTIONS_NONE; limit-fieldLimitList[2].dataType = AR_DATA_TYPE_CHAR; limit-fieldLimitList[2].u.charLimits.maxLength = 50; limit-fieldLimitList[2].u.charLimits.menuStyle = AR_MENU_APPEND; limit-fieldLimitList[2].u.charLimits.qbeMatchOperation = AR_QBE_MATCH_ANYWHERE; limit-fieldLimitList[2].u.charLimits.fullTextOptions = AR_FULLTEXT_OPTIONS_NONE; /* fill the data type list */ dataType-numItems = 3; dataType-intList = (unsigned int *) malloc(sizeof(unsigned) * dataType-numItems); if (dataType-intList == NULL) return AddErrorMessage(status, NULL, AR_RETURN_ERROR, PLUGIN_ERROR_MEMORY, ); dataType-intList[0] = AR_DATA_TYPE_CHAR; dataType-intList[1] = AR_DATA_TYPE_CHAR; dataType-intList[2] = AR_DATA_TYPE_CHAR; } return AR_RETURN_OK; 2009/6/11 Jonas Stumph Stevnsvig jonas.stumph.stevns...@bec.dk: ** Hi listers I'm currently in the process of creating a hello world in remedy, based on the ardbcskl.c Unfortunately my efforts are not going well.. I'm getting an error 129 - which i have resolved to Field limit definition is invalid. The field limit specified for this field is invalid. For a numeric field, make sure that the high range is greater than the low range. For a character field, make sure
Re: ARDBC plugin development again
This is how I used this. Its a few years since I wrote this, and would definitly do it the Java way today: ARPLUGIN_EXPORT int ARDBCGetMultipleFields( void *object, /* IN; plug-in instance */ ARCompoundSchema *schema, /* IN; form containing the data */ ARFieldMappingList *mapping,/* OUT; list of fields */ ARFieldLimitList *limit, /* OUT; corresponding field limits */ ARUnsignedIntList *dataType,/* OUT; corresponding data types */ ARStatusList *status /* OUT; status of the operation */ ) { /* verify that the form name is the one we know about otherwise */ /* we will ignore this request */ if (schema-schemaType == AR_SCHEMA_VENDOR strcmp(schema-u.vendor.tableName, VENDOR_FORM_NAME) == 0) { /* fill the field mapping list with the three fields other than */ /* the id field that we are exposing*/ mapping-numItems = 3; mapping-mappingList = (ARFieldMappingStruct *) malloc(sizeof(ARFieldMappingStruct) * mapping-numItems); if (mapping-mappingList == NULL) return AddErrorMessage(status, NULL, AR_RETURN_ERROR, PLUGIN_ERROR_MEMORY, ); mapping-mappingList[0].fieldType = AR_FIELD_VENDOR; strcpy(mapping-mappingList[0].u.vendor.fieldName, employee_name); mapping-mappingList[1].fieldType = AR_FIELD_VENDOR; strcpy(mapping-mappingList[1].u.vendor.fieldName, employee_phone); mapping-mappingList[2].fieldType = AR_FIELD_VENDOR; strcpy(mapping-mappingList[2].u.vendor.fieldName, employee_email); /* fill the field limit list (in case the Admin Tool uses it someday) */ limit-numItems = 3; limit-fieldLimitList = (ARFieldLimitStruct *) calloc(limit-numItems, sizeof(ARFieldLimitStruct)); if (limit-fieldLimitList == NULL) return AddErrorMessage(status, NULL, AR_RETURN_ERROR, PLUGIN_ERROR_MEMORY, ); limit-fieldLimitList[0].dataType = AR_DATA_TYPE_CHAR; limit-fieldLimitList[0].u.charLimits.maxLength = 50; limit-fieldLimitList[0].u.charLimits.menuStyle = AR_MENU_APPEND; limit-fieldLimitList[0].u.charLimits.qbeMatchOperation = AR_QBE_MATCH_ANYWHERE; limit-fieldLimitList[0].u.charLimits.fullTextOptions = AR_FULLTEXT_OPTIONS_NONE; limit-fieldLimitList[1].dataType = AR_DATA_TYPE_CHAR; limit-fieldLimitList[1].u.charLimits.maxLength = 20; limit-fieldLimitList[1].u.charLimits.menuStyle = AR_MENU_APPEND; limit-fieldLimitList[1].u.charLimits.qbeMatchOperation = AR_QBE_MATCH_ANYWHERE; limit-fieldLimitList[1].u.charLimits.fullTextOptions = AR_FULLTEXT_OPTIONS_NONE; limit-fieldLimitList[2].dataType = AR_DATA_TYPE_CHAR; limit-fieldLimitList[2].u.charLimits.maxLength = 50; limit-fieldLimitList[2].u.charLimits.menuStyle = AR_MENU_APPEND; limit-fieldLimitList[2].u.charLimits.qbeMatchOperation = AR_QBE_MATCH_ANYWHERE; limit-fieldLimitList[2].u.charLimits.fullTextOptions = AR_FULLTEXT_OPTIONS_NONE; /* fill the data type list */ dataType-numItems = 3; dataType-intList = (unsigned int *) malloc(sizeof(unsigned) * dataType-numItems); if (dataType-intList == NULL) return AddErrorMessage(status, NULL, AR_RETURN_ERROR, PLUGIN_ERROR_MEMORY, ); dataType-intList[0] = AR_DATA_TYPE_CHAR; dataType-intList[1] = AR_DATA_TYPE_CHAR; dataType-intList[2] = AR_DATA_TYPE_CHAR; } return AR_RETURN_OK; 2009/6/11 Jonas Stumph Stevnsvig jonas.stumph.stevns...@bec.dk: ** Hi listers I'm currently in the process of creating a hello world in remedy, based on the ardbcskl.c Unfortunately my efforts are not going well.. I'm getting an error 129 - which i have resolved to Field limit definition is invalid. The field limit specified for this field is invalid. For a numeric field, make sure that the high range is greater than the low range. For a character field, make sure that the pattern is within the size limit of the field. Also, verify that the specified character menu, the menu style setting, and the match operation setting are legal. For a selection field, verify that the value is a legal value for the field. Using the 7.5 error messages guide (I get Message not in catalog; Message number = 129 DummyChar, 129, TEST:JSS:HB2) When i try to save the form. I get another error if I try to make an integer field - any help is appreciated (ARS7.5, MSSQL 2005 DB, WIN2k3) /*/ /* */ /* ARDBCGetMultipleFields */ /* */ /*/ /* */ /* Description: This is used to get a list of candidate fields to which