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 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 */ >> /* fields on a vendor forms can be attached. >> */ >> /* >> */ >> /********************************************************************* >> ********/ >> >> 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 */ >> ) >> { >> //dummy tæller >> int antalElementer = 1; >> >> //initialiser structs >> mapping->numItems = antalElementer; >> mapping->mappingList = >> calloc(mapping->numItems,sizeof(ARFieldMappingStruct)); >> >> dataType->numItems = antalElementer; >> dataType->intList = calloc(dataType->numItems, sizeof(int)); >> >> limit->numItems = antalElementer; >> limit->fieldLimitList = >> calloc(limit->numItems,sizeof(ARFieldLimitStruct)); >> >> //første felt (char) >> mapping->mappingList[0].fieldType = AR_DATA_TYPE_CHAR; >> memcpy(mapping->mappingList[0].u.vendor.fieldName, >> "DummyChar",9); >> >> limit->fieldLimitList[0].dataType = AR_DATA_TYPE_CHAR; >> limit->fieldLimitList[0].u.charLimits.maxLength = 200; >> //limit->fieldLimitList[0].u.charLimits.lengthUnits = 1; >> //limit->fieldLimitList[0].u.charLimits.storageOptionForCLOB = >> 0; >> //limit->fieldLimitList[0].u.charLimits.pattern = "$ALPHA$"; >> >> dataType->intList[0] = AR_DATA_TYPE_CHAR; >> >> //andet felt (int) >> /* mapping->mappingList[1].fieldType = AR_DATA_TYPE_INTEGER; >> memcpy(mapping->mappingList[1].u.vendor.fieldName, >> "DummyInt",8); >> >> limit->fieldLimitList[1].dataType = AR_DATA_TYPE_INTEGER; >> limit->fieldLimitList[1].u.intLimits.rangeLow = -100; >> limit->fieldLimitList[1].u.intLimits.rangeHigh = 100; >> >> dataType->intList[1] = AR_DATA_TYPE_INTEGER; */ >> >> return AR_RETURN_OK; >> } >> >> _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: "Where the >> Answers Are"_ > > _______________________________________________________________________________ > UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum > Sponsor:rmisoluti...@verizon.net ARSlist: "Where the Answers Are" > > _______________________________________________________________________________ > UNSUBSCRIBE or access ARSlist Archives at www.arslist.org > Platinum Sponsor:rmisoluti...@verizon.net ARSlist: "Where the Answers Are" > _______________________________________________________________________________ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: "Where the Answers Are"