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"

Reply via email to