Hi all,

Is there any way to read all the existing records of sections in the mobile app without setting up individual filters? If yes, how?

 

Thanks 

Like 0

Like

1 comments

The mobile application doesn't have a section that contains all data. However, it's usually not needed. Probably, it will be possible to give you more information if you describe the business task.

Show all comments

Hi Community,

In mobile application Conditional columns is not working in rule type requirement. Below is my code.

Terrasoft.sdk.Model.addBusinessRule("Case", {

    ruleType: Terrasoft.RuleTypes.Requirement,

    requireType : Terrasoft.RequirementTypes.Simple,

    events: [Terrasoft.BusinessRuleEvents.Save],

    triggeredByColumns: ["UsrIsClosed"],

    conditionalColumns: [

        {name: "UsrIsClosed", value: true}

    ],

    dependentColumnNames: ["UsrComments"]

});

I want column UsrComments to be required if column UsrIsClosed is true. The code above is not working, please suggest

 

Like 0

Like

7 comments

Eugene Podkovka,

Hi Eugene, Thanks for your reply

Module appears on the client end, manifest is also correct.

Using below code without conditionalColumns rule is working fine:

Terrasoft.sdk.Model.addBusinessRule("Case", {

    ruleType: Terrasoft.RuleTypes.Requirement,

    requireType : Terrasoft.RequirementTypes.Simple,

    events: [Terrasoft.BusinessRuleEvents.Save],

    triggeredByColumns: ["UsrComments"],

    columnNames: ["UsrComments"]

});

But the above code will not serve our purpose, we only require "UsrComments" to be mandatory if "UsrIsClosed" field is true.

That's why I created below code:

Terrasoft.sdk.Model.addBusinessRule("Case", {

    ruleType: Terrasoft.RuleTypes.Requirement,

    requireType : Terrasoft.RequirementTypes.Simple,

    events: [Terrasoft.BusinessRuleEvents.Save],

    triggeredByColumns: ["UsrIsClosed"],

    conditionalColumns: [

        {name: "UsrIsClosed", value: true}

    ],

    dependentColumnNames: ["UsrComments"]

});

Please suggest, how I can use "conditionalColumns" attribute for rule type requirement.

Fulgen Ninofranco,

The code seems like correct. Try to restart the application pool and synchronize the mobile application again. 

http://prntscr.com/oyo0vz

Eugene Podkovka,

Thanks Eugene.

We already did the restart and synchronize but still not working. I also noticed one thing in the documentation. "conditionalColumns" is not discussed here as part of the attributes of rule type requirements but from other rule type it is included. Please suggest how we can achieve our condition if "conditionalColumns" will not work.  

https://academy.bpmonline.com/documents/technic-sdkmob/7-12/business-rules-mobile-application

Eugene Podkovka,

Hi Eugene, any update on this. Thank you

Fulgen Ninofranco,

Try to debug the mobile application, find how business rules work and find how to adjust them according to your needs.

https://academy.bpmonline.com/documents/technic-sdkmob/7-12/mobile-application-debugging

Start from the executeApplicableRules method in the BusinessRulesManager module.

Hi, did you find a resolution to your issue? I am facing the same thing.

Show all comments

Other than the need for synchronization, are there differences in app functionality between online and offline mode? Our instance was in Offline mode by default. 

However, we're considering switching to Online mode because the case-sensitive search in Offline mode is a significant problem for our users. 

Before we switch, however, we'd like to know if Online mode will cause any other differences. (Aside from the need to synch.)

Thanks,

Jeff

Like 0

Like

1 comments

Hello Jeffrey,

Please refer to this Academy article regarding bpm'online mobile application architecture. The main difference between these two modes is that if you select the online operation mode, there is no need to synchronize the application manually. In this mode, the app synchronizes with the bpm'online server automatically, in real time. For example, if you add a task using the mobile application, the task will immediately display in the primary application and vice versa.

In the offline mode, the mobile app user should synchronize periodically with the primary bpm’online application. Changes made to the mobile application are saved on the bpm'online server only after synchronizing with the primary application.

There is also a table in the article provided which displays difference between these two modes.

In different mobile app operation modes, synchronization with bpm’online has different functions. In the online mode, the synchronization is required only to apply configuration changes. In the offline mode, the synchronization is required both to apply configuration changes and to synchronize the data between the mobile app and the bpm’online server.

So as a result Online mode should not cause any errors and it is not significantly different from Offline mode.

Regards,

Oscar

Show all comments

Hi,

 

I need to change background image of mobile home page.

Currently I able to show background image under sections (modified the object "UsrMobileCaseGridPageView") but its not reflected on home page.

 

Image is copied to this loaction (file:///C:/BPM/BPM_Mobile_simulator/7.14.6/appV2/Common/lib/SenchaTouch/resources/css/bg.png)

Please suggest the way it can be achieved. For testing I using mobile simulator.

 

Regards

Like 0

Like

3 comments

The question was discussed in the article by the link below.

https://community.bpmonline.com/articles/adding-custom-css-mobile-application

Hi Eugene,

Thank you, I tried Global CSS and its reflected except home screen which appearing just after successful login. Is it possible to apply custom css on home screen?

Muhammad Shajiuddin,

Unfortunately, it's not possible.

Show all comments

Hi Community,

Any idea in Mobile how can I add custom field in Case attachment. This custom field will be a lookup field, user is required to select value from this field before uploading the attachment. 

Like 0

Like

1 comments

Dear Fulgen,

Such business task requires advanced development in the system. We do not have a code snippet for such task, however, the algorithm for the case is the following:

1. You add a lookup filed to the CaseFile object. 

2. Add an attachment detail to the Case page via Mobile application wizard.

3. Create your custom generator for the file attachment functionality. You can take basic MobileFileAndLinksEmbeddedDetailGenerator as a reference and indicate it as a parent object for your custom schema.

4. Indicate this custom generator in the values section of detail insert diff, e.g.:

     "generator": "UsrMyControlGenerator.generateUsrMyControl",
 

5. Add filed to the case file page, make it required. You can make it required on object level, or override save method in the JS schema.

Regards,

Anastasia

Show all comments

Hi Community,

I have this scenario that I need to achieve in mobile

- In Case page I have "Department" lookup field, this "Department" lookup field is linked to "Department" object.

- "Department" object has "PrimaryContact" lookup field which is linked to "Contact" object

- Now when creating a case, once the user selects Department, the "Assignee" field should be auto populated based on the Department's PrimaryContact value.



Any idea how can i achieve this? Thanks in Advance

Like 0

Like

3 comments

Dear Fulgen, 

Please try the MUTUALFILTRATION rule in the mobile business rules from the academy page below:

https://academy.bpmonline.com/documents/technic-sdkmob/7-12/business-rules-mobile-application

Best regards, 

Dennis 

Dennis Hudson,

Thank you Dennis



Is there a way I can manipulate using esq and set the result directly to assignee field?

Dear Fulgen,

It’s possible to create a custom business rule for adding and deleting filtration. Please, use the academy article by the link below and check the second example:

https://academy.bpmonline.com/documents/technic-sdkmob/7-12/custom-business-rules-mobile-application

In order to set a query result directly to some field please use the function set(). Please feel free to read about the function in the beginning of the page from the article by the link above. Also it possible to use esq to manipulate data. Please find code example below. (Example 2)

 In order to apply the code create an empty module and insert the code to the module. Then use mobile wizard to create a replacing module of manifest and add the name of your module to attribute “PageExtensions” of corresponding page section. Please find code example below (in my case it’s section Activity, example 1).

Example 1:

{

                "SyncOptions": {

                                "SysSettingsImportConfig": [

                                                "DefaultMessageLanguage"

                                ],

                                "ModelDataImportConfig": [

                                                {

                                                                "Name": "Contact",

                                                                "SyncColumns": [

                                                                                "City"

                                                                ]

                                                },

                                                {

                                                                "Name": "City",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "SysLanguage",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "Activity",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "ActivityPriority",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "ActivityType",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "ActivityCategory",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "ActivityStatus",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "CallDirection",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "ActivityParticipant",

                                                                "SyncColumns": [

                                                                                "Activity",

                                                                                "Participant"

                                                                ]

                                                },

                                                {

                                                                "Name": "ActivityParticipantRole",

                                                                "SyncColumns": []

                                                },

                                                {

                                                                "Name": "ParticipantResponse",

                                                                "SyncColumns": []

                                                }

                                ]

                },

                "Modules": {},

                "Models": {

                                "Contact": {

                                                "RequiredModels": [

                                                                "Contact",

                                                                "City",

                                                                "SysLanguage"

                                                ],

                                                "ModelExtensions": [],

                                                "PagesExtensions": [

                                                                "MobileContactGridPageSettingsDefaultWorkplace"

                                                ]

                                },

                                "Activity": {

                                                "RequiredModels": [

                                                                "Activity",

                                                                "ActivityPriority",

                                                                "ActivityType",

                                                                "ActivityCategory",

                                                                "ActivityStatus",

                                                                "CallDirection",

                                                                "ActivityParticipant",

                                                                "Contact",

                                                                "ActivityParticipantRole",

                                                                "ParticipantResponse"

                                                ],

                                                "ModelExtensions": [],

                                                "PagesExtensions": [

                                                                "MobileActivityRecordPageSettingsDefaultWorkplace",

                                                                "UsrMobile1"(my module)

                                                ]

                                }

                }

}

Example 2:

Terrasoft.sdk.Model.addBusinessRule("Activity", {

    name: "ActivityResultByAllowedResultFilterRule",

    position: 1,

    ruleType: Terrasoft.RuleTypes.Custom,

    triggeredByColumns: ["Result"],

    events: [Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Load],

    executeFn: function (record, rule, column, customData, callbackConfig) {

        var store = Ext.create('Terrasoft.store.BaseStore', {

    model: 'ActivityResult'

                                });

                var queryConfig = Ext.create('Terrasoft.QueryConfig', {

    columns: ['Id'],

    modelName: 'ActivityResult'

                                                });

                store.loadPage(1, {

    queryConfig: queryConfig,

    filters: Ext.create('Terrasoft.Filter', {

        property: 'Id',

        value: '6CBD22D4-F36B-1410-5E98-00155D043204'

                }),

            callback: function (records, operation, success) {

                var loadedRecord = records[0];

                var allowedResult = record.get("AllowedResult");

                var filterName = "ActivityResultByAllowedResultFilter";

                if (!Ext.isEmpty(allowedResult)) {

                    var allowedResultIds = Ext.JSON.decode(allowedResult, true);

                    var resultIdsAreCorrect = true;

                    for (var i = 0, ln = allowedResultIds.length; i < ln; i++) {

                        var item = allowedResultIds[i];

                        if (!Terrasoft.util.isGuid(item)) {

                            resultIdsAreCorrect = false;

                            break;

                        }

                    }

                    allowedResultIds.push(loadedRecord.get("Id").toUpperCase());

                    if (resultIdsAreCorrect) {

                        var filter = Ext.create("Terrasoft.Filter", {

                            name: filterName,

                            property: "Id",

                            funcType: Terrasoft.FilterFunctions.In,

                            funcArgs: allowedResultIds

                        });

                        record.changeProperty("Result", {

                            addFilter: filter

                        });

 

                    }

                    else {

                        record.changeProperty("Result", {

                            removeFilter: filterName

                        });

                    }

                } else {

                    record.changeProperty("Result", {

                        removeFilter: filterName

                    });

                }

                Ext.callback(callbackConfig.success, callbackConfig.scope, [true]);

            },

            scope: this

        });

    }

});

 

Best regards,

Norton

 

Show all comments

hi,

Please find the below link that explains how to enable/disable fields based on condition in mobile app.

http://agiliztech.com/2019/06/24/agiliztechs-customization-bpmonline-enable-disable-field-mobile-app/

 

Like 0

Like

Share

0 comments
Show all comments

Hi Community,

 

I have this scenario in Mobile, I have a custom page. I added this custom page as detail in case page. I manage to add all the fields of my custom page using Mobile application wizard->page setup but aside from that, I want also to add the attachment of this page, how can i possibly do this, any idea?

Like 0

Like

5 comments

Dear Fulgen,

Could you please confirm if I understood you correctly. You've created an object and based on it you've added the detail on a case page? Now you want to be able to attach the files to this custom detail? Thank you beforehand.

Looking forward to your reply.

Dean

Dean Parrett,

Thanks Dean,



Yes Dean, this is what i meant. How can I possibly achieve this?

Thank you so much. 

Is this detail embedded or standard? I mean, this custom page is placed in case page or it has own list, own preview page, etc?

Alina Kazmirchuk,

Hi Alina,

Yes, this custom page is placed in case page.

Unfortunately, there is no opportunity to attach files to an embedded detail. However attaching the files is possible to a standard detail. So if there are no restrictions to use only embedded detail please use the standard one. Please find more information in the article below.

https://academy.bpmonline.com/documents/technic-sdkmob/7-12/adding-standard-detail-section-mobile-application

Show all comments

Hi Community,

Any idea how we can customize the BPM mobile layout, including background

Like 0

Like

1 comments

Dear Fulgen,

You can apply your custom styles to the mobile application. Styles (CSS) can be changed in the configuration. To do this, use the Terrasoft.writeStyles method. Presumably, an example is available in MobileActivityGridPageV2. 

Here is more about customization possibilities within mobile application in the thread:

https://community.bpmonline.com/questions/customization-capabilities-mobile-plataform

Regards,

Anastasia

Show all comments

Hi Community,

Just like overriding the save button save() and onsave() method in web, how we can do it in bpm mobile?

 

Like 0

Like

3 comments

Dear Fulgen,

The corresponding method for mobile application is onSaveButtonTap(). Also, you can check onDataSavedSuccessfully() method, which executes after data saved.

Regards,

Anastasia

Thank you Anastasia,

Is there any available examples in OOB?

 

Fulgen Ninofranco,

Please take a look at MobileSocialMessageEditPage schema. There you can find the realization of the onSaveButtonTap method.

 

Regards,

Anstasia

Show all comments