In the documentation for message start event, it states:  "as well as object or page event. For example, when you click a button or open a right-click menu, a corresponding message is sent to the process of the corresponding object or page."

Can anyone show an example in the product where this is implemented?

Like 0

Like

4 comments

Open [Process library] section list Here you will find many examples

The section folder tree is displayed in the [Process library] section b default. In addition to standard folders, the tree contains folders that are generated automatically, based on the processes currently available in the library.

All standard folder functions are available in the [Process library] section.

By default, the folders in the [Process library] section contain folders that group the processes by the type of their starting event. These folders have unique icons to visually distinguish them from regular folders. These folders cannot be edited.

The folders that group business processes by the type of their starting events are displayed only if corresponding processes exist in the library.

These folders also have automatically generated subordinate folders that further group the processes by their starting event parameters:

In the “Run by object signal” folder, further grouping is done by objects that trigger processes (Fig. 3).

In the “Run by timer” folder, further grouping is done by the timer settings.

Grigoriy,

I was asking about Message Start Event, not Signal.  I have not been able to find any example in the product where it is used.  I am quite comfortable with Signal and Timer start events, and have used message start events in other products.  i would like to understand better how they can be used in bpm'online.

Message Start Event used in many event subprocesses of objects (Practically in every subprocess of an object they are used. Event processing is implemented on them just inside objects). For example, open the Activity object. from Base Package and go to the additional / open process

Thanks

Show all comments

 

Hello community!

How are you?

I have a lookup that is displayed in the "List" mode,

I need to add / remove values ​​from this list dynamically based on the value of another field.

The same value in the list can be displayed for more than one value in this last field.

How can I do that?

Regards

 

Like 0

Like

5 comments

Dear Raul,

This target can be achieved with the help of the business process that will add data to the field if another field is filled in with some data.

For example you need to insert value "1" in the "List" lookup when the value of field "Field" is modified to "2". In this case you should create a business process with "Signal" start element which will be triggered if the field "Field" is changed to value "2". After that there should be "Read data" element which should read the object where the "List" lookup is present. Then "Add data" element should go which will add data to "List" lookup and you can also specify that you need to add value "1" there.

Another issue: you need to add data to the "List" if the added record has been added with the specific value of "Field". In this case the business process is similar to the previous except of the start signal: it should be "Signal" -> "Record added" and after that you should add "Read data" and "Modify data" elements.

As a result you will have your list filled in automatically with new data or existing data based on the value of another field. You can also read more about business process deign in the academy article here.

Best regards,

Oscar

Dear Oscar,

I expressed wrong.

I have two type list fields

 

 

 

 

 

 

The field named "Contexto Sospecha", should filter  its values in base to "Tipo Sospecha Vulneracion" field value. But it is not a simple FILTRATION BUSINESS RULE. A same value of "Contexto Sospecha" field can belong to more than one value of the other field. Is a N to N relation. I create a table with the relation of both fields, 

How can i filter the values based on that table

i tried to configure filters but I was not succesful

Any idea?

Regards,

Ezequiel

Maybe an article from the academy "Using filtration for lookup fields. Examples" will help you.

You can also use the business rule filtering (without programming using the wizard)

Hello!

The above-mentioned articles

( https://academy.bpmonline.com/documents/technic-sdk/7-13/using-filtrati…

https://academy.bpmonline.com/documents/technic-sdk/7-12/filtration-rul… )

should indeed help you out with achieving your task.

Best regards,

Matt

Show all comments

I'm trying to translate a custom section named Reports and failing so far. I used the translation page, searched for untranslated strings with the English name Reports and translated them. I also manually updated SysModuleLcz to put my translated name there. The sections still only displays its English name. Do you know what should I do to fix it?

Like 0

Like

2 comments

Hi! Can you please send more detailed description (link to the instance ect) on support@bpmonline.com so we could investigate this? 

Ok, never mind. It seems I had to restart the server for the changes to show.

Show all comments

I'm trying to insert a custom button on a section page my code looks like that:

{
	"operation": "insert",
	"name": "DailyReportButton",
	"parentName": "SeparateModeActionButtonsLeftContainer",
	"propertyName": "items",
	"values": {
		"itemType": Terrasoft.ViewItemType.BUTTON,
		"style": Terrasoft.controls.ButtonEnums.style.BLUE,
		"caption": {"bindTo": "Resources.Strings.DailyReport"},
		"click": {"bindTo": "generateDailyReport"},
		"classes": {
			"textClass": ["actions-button-margin-right"],
			"wrapperClass": ["actions-button-margin-right"]
		},
	}
}

It works but I don't know how to specify exactly where the button should be placed. In this case I want it to be between New and Actions buttons. I tried experimenting with setting values.index but it didn't seem to change anything. Do you know how to do that?

Like 0

Like

1 comments

Dear Carlos,

You can find detailed description on our Academy. You will need this part: 

                    // Setting the location of the button.
                    "layout": {
                        "column": 1,
                        "row": 6,
                        "colSpan": 1
                    }
                }
 
Show all comments

Someone tried to connect third-party report generators such as FastReport ro StimulSoft?

Like 0

Like

1 comments

What is the difference between the elements diff

"classes": {

                "wrapperClass": [".."],

                "wrapClassName": [..]

            },

"wrapClassName": [..],

"wrapClass": [..],

You can find out the entire list of styles used for elements?

In particular, it is very necessary set the background color for the lookup!

Like 0

Like

2 comments

Hello Grigoriy,

You can find the descriptions of there properties in the documentation - https://academy.terrasoft.ru/api/jscoreapi/7.12.0/

The 'wrapClassName' is defined in the Terrasoft.enums.ReorderableContainer. 

The 'wrapClass' is defined in the Terrasoft.controls.ControlGroup. It specifies the name of the CSS class for the wrapper element of the control.



If you need to set the background color for the lookup element, you need to:

1. Create a module 

2. Find selector for the element you would like to apply the style

3. Write you custom CSS styles in the LESS tab. Leave the source code for the module empty

4. Create a replacing schema module and include your module with styles step as a dependency

 

If you need to change the style for the element, based on some condition, I believe this article will be helpful for you - https://community.bpmonline.com/questions/how-add-custom-style-control-…

Tetiana Markova, 

Thank you, Tetiana

Show all comments

Hello, I need some help in printables . I want printable to be enabled based on Status . Example if status of selected record is Completed then printable must be enabled.

I have override  "isSectionPrintFormEnabled" method in my section page as i noticed it is the method which bind to enabled value in "initSectionPrintForms" method in PrintReportUtilities . It is not working as expected as printable is always showing as disabled.

Thank You.

Like 0

Like

3 comments

Dear Sushma,

Please find the example of button being enable in the Order section.

1. You need to override your section schema.  

2. Modify the diff of the button. Add "enabled" property to it. Bind it to your custom attribute. e.g.

{
	"operation": "merge",
	"parentName": "RightContainer",
	"propertyName": "items",
	"name": "PrintButton",
	"values": {
		itemType: Terrasoft.ViewItemType.BUTTON,
		"caption": {"bindTo": "Resources.Strings.PrintButtonCaption"},
		"classes": {"wrapperClass": ["actions-button-margin-right"]},
		"controlConfig": {"menu": {"items": {"bindTo": "CardPrintMenuItems"}}},
		"visible": {"bindTo": "IsCardPrintButtonVisible"},
		"enabled": {"bindTo": "IsPrintableEnabled"}
		}
}

3. Add the attribute, which default value is set to false. e.g.

"IsPrintableEnabled": {
	"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
	"dataValueType": Terrasoft.DataValueType.BOOLEAN,
	"value": false
}

4. Add custom method, which will set the attribute value to true after status check on initialising the page. e.g.

methods: {
	onEntityInitialized: function() {
		this.callParent(arguments);
		this.checkStatus();
	},
	checkStatus: function() {
		var status = this.get("Status").value;
		if (status !== "1f3ad326-effd-4ac3-a3e2-957e7def3684") {
		   this.set("IsPrintableEnabled", true);
	    }
    }
}

Hope you will find it helpful.

Regards,

Anastasia

Anastasia Botezat,

Thank you for reply, I implemented the example as you have suggested.

It seems that when I am opening the record from my section view, it is still displaying the PRINT button. However, once the record is open, when I reload the same page, it's disabling the button - as expected.



My reasoning is 'onEntityInitialized' method is not available in the section page to change the status of the "IsPrintableEnabled" attribute.

Dear Sushma,

in this case I would like to offer you to return to the approach overriding the PrintReportUtilities schema. Particularly draw your attention to getRowPrintButtonVisible method. It is responsible for displaying Print button in the rows, when clicking on records. As I understood this is of your interest. Please override this method to add status validation. The idea is that this method should return false in case status does not allow printables.

Also, you might be also interested in getCardPrintButtonVisible method responsible for the button in the section header.

Regards,

Anastasia

Show all comments

Hi Community,

I have here a scenario below

 

Scenario:

I want to override Account communication options ( NUI ) detail for me to add field validation on its fields.

 

My replacing client module

 

But upon overriding setValidationConfig(), I got this error

How could I fix this? or is it posible to override setValidationConfig() inside a detail or the setValidationConfig() only works inside an edit page?

Thanks

 

Like 0

Like

2 comments

Give your code with a call setValidationConfig

But I think it's better case override  BaseCommunicationDetail and overriding addItem() 

And add your validator by analogy as there is added duplicate checking and number checking:

this.addColumnValidator("Number", newItem.validateField, newItem);
this.addColumnValidator("Number", newItem.checkCommunicationDuplicates, newItem);
 

:

Grigoriy,

Thanks Grigoriy, I got an idea.

Show all comments

I have an entity with a BLOB column. In a script task I get a C# byte array. Now I would like to save that array in the object using Add data block. The problem is that I don't know how to pass that data since I cannot find any process parameter type for binary data.

As an alternative I tried to convert the binary data to Base64 and save it in Unlimited length text column. In this case the problem was that the unlimited length column was limited and only part of the string got saved to the database.

Do you know how to deal with those problems?

Like 0

Like

2 comments

if the process is interpreted then use in scriptask method

Set ("component name. Property name", value)

The value needs to be serialeze to string

But it is better to use InsertQuery or UpdateQuery or esq as

Stream stream = new MemoryStream(UTF8Encoding.UTF8.GetBytes(serializedString));
stream.Position = 0;
var manager = UserConnection.GetSchemaManager("EntitySchemaManager") as Terrasoft.Core.Entities.EntitySchemaManager;
	var entitySchema = manager.GetInstanceByName("FileContactVisa");
	Entity entity = entitySchema.CreateEntity(UserConnection);
	var valueColumn = entitySchema.Columns.GetByUId(StoringColumnUId);
	entity.SetStreamValue("Blob", stream);
	entity.Save();
 
or
 
var _caseFile = new Terrasoft.Configuration.CaseFile(UserConnection);
_caseFile.FetchFromDB(recordId); 
_caseFile.SetStreamValue("Blob", memo);
_caseFile.Save();

 

Grigoriy,

Ok, I used ESQ. Thanks.

Show all comments

I noticed that you can put tag and markerValue properties on a button but I was unable to find out what are those used for. Do you know what's their purpose?

Like 0

Like

2 comments

markerValue  - for automated testing,

tag - can be used in the event handler. for example, assign one method to several buttons and, using this property, understand which element caused the event

Grigoriy,

Ok, thank you for the explanation.

Show all comments