Settings
This section covers Portal role, permissions and some settings.
Configure Portal settings
To manually configure Portal settings, refer to HowTo: Update Portal settings.
Portal settings are stored as Variables.
In development, it is a quite tedious task to configure Portal settings after restarting Designer. You could update value of Variables in
PortalKit/config/variables.yaml
for the settings that you want to configure, it could survive after restarting Designer.
Language settings
Below is applied language setting precedence:
If user email language setting is application default, language would be applied by application email language setting.
If user selects a language in email setting, language would be appplied by this selection.
To configure languages of Portal applications, refer to Language settings.
For multiple languages, the CMS key
/AppInfo/SupportedLanguages
must exist in your application. This CMS entry is in Portal Style. It contains list of all languages supported by your application, separated by comma.Must not contain spaces
Same as display name of Locale
Separated by comma
Process model version, which has this CMS, must active
To add new language to Portal, what you have to do is
Add new language locale to cms entry of Portal Style
/AppInfo/SupportedLanguages
Export all CMS entries of Portal Style to excel file
Add translation of new language for all CMS entries
Import file excel back, then redeploy Portal Style
This is sample how to add new Spanish to portal
Role configuration
PortalKit roles |
Rights |
---|---|
AXONIVY_PORTAL_ADMIN |
User belong to this role can handle AdminUI page, configure the internal role properties, create public filters. Users who own this role need some permissions. |
Permission settings
Permissions can be configured in Cockpit. In the security area, you will find all these permission in the Group “PortalPermissions”
Task permission
Add note
User needs permission:
PortalPermission.TASK_CASE_ADD_NOTE
.Delegate
To show delegate action, user needs permission:
PortalPermission.TASK_DISPLAY_DELEGATE_ACTION
.To delegate personal or group tasks, user needs permission:
TaskWriteActivatorOwnTasks
(This permission belongs to Portal permission group and it is not assigned to role Everybody by default).To delegate all tasks in task list, user needs permission:
IPermission.TASK_WRITE_ACTIVATOR
.Important
Task state cannot be one of the following values: CREATED, DONE, DESTROYED, RESUMED, FAILED.
Reset
To show reset action, user needs permission:
PortalPermission.TASK_DISPLAY_RESET_ACTION
.To reset task, user needs permission:
IPermission.TASK_RESET_OWN_WORKING_TASK
orPortalPermission.TASK_RESET_READY_FOR_JOIN
orIPermission.TASK_RESET
.Important
Task state has to be one of following values: RESUMED, PARKED, READY_FOR_JOIN, FAILED.
Delete
User needs permission:
IPermission.TASK_DESTROY
.Important
Task state isn’t DESTROYED or DONE.
Reserve
To show reserve action, user needs permission:
PortalPermission.TASK_DISPLAY_RESERVE_ACTION
.To reserve task, user needs permission:
IPermission.TASK_PARK_OWN_WORKING_TASK
.Important
Task state has to be one of following values: CREATED, RESUMED, SUSPENDED.
Change description
User needs permission:
IPermission.TASK_WRITE_DESCRIPTION
.Important
Task state cannot be one of following values: DONE, DESTROYED, FAILED.
Change deadline
User needs permission:
IPermission.TASK_WRITE_EXPIRY_TIMESTAMP
.Important
Task state cannot be one of following values: DONE, DESTROYED, FAILED.
Change priority
User needs permission:
IPermission.TASK_WRITE_ORIGINAL_PRIORITY
.Important
Task state cannot be one of following values: DONE, DESTROYED, FAILED.
Display additional options
To show additional action, user needs permission:
PortalPermission.TASK_DISPLAY_ADDITIONAL_OPTIONS
.
Case permission
Add note
User needs permission:
PortalPermission.TASK_CASE_ADD_NOTE
.Delete
User needs permission:
IPermission.CASE_DESTROY
.Important
Case state must be RUNNING.
Change description
User needs permission:
IPermission.CASE_WRITE_DESCRIPTION
.Important
Case state cannot be DESTROYED.
See related tasks of case
To show related tasks action, user needs permission:
PortalPermission.SHOW_ALL_TASKS_OF_CASE
.To see related tasks, user needs permission:
IPermission.TASK_READ_OWN_CASE_TASKS
orIPermission.TASK_READ_ALL
.Important
Case state cannot be DESTROYED.
Display show detail link
User needs permission:
PortalPermission.SHOW_CASE_DETAILS
. This permission is not assigned to role Everybody by default.
Administrator permission can see all tasks/cases in the application
Normal users can only see their tasks/cases they can work on.
Administrator can see all tasks/cases in the application.
Permissions needed: IPermission.TASK_READ_ALL
,
IPermission.CASE_READ_ALL
.
Administrator permission can interact with all workflows in the application
Normal user can update and delete workflow which created by him and can interact with workflow’s task which assigned to him.
Administrator can create, update and deletes all workflows in the application.
Other permissions
Action |
Permission required |
|
---|---|---|
Absence |
Read |
|
Create, edit |
|
|
Delete |
|
|
Read, add, delete absences of all users |
|
|
Substitute |
Manage substitute |
|
Document |
Upload, delete |
|
Express |
Create Express workflow |
|
Statistics |
Add dashboard |
|
Analyze, filter tasks and export data to excel for advanced analysis |
|
|
Portal permission |
Access to full process list, it’s “Processes” on the left menu and link “Show all processes” on Dashboard |
|
Access to full task list, it’s “Tasks” on the left menu and link “Show full task list” on Dashboard |
|
|
Access to full case list, it’s “Cases” on the left menu |
|
|
Access to statistic, it’s “Statistics” on the left menu and link “Show all charts” on Dashboard |
|
|
Add note to task/case |
|
|
Display show more note |
|
|
Create public external link, all other users can see that link in full process list and can also add it to User Favorite |
|
Virus Scanning Setting
PrimeFaces is delivered with one implementation of that interface that uses VirusTotal. To enable VirusTotal you need to create a community account at the VirusTotal website. You receive an API key once you have an account. To configure the API key add the following snippet to the configuration/web.xml file:
<context-param> <param-name>primefaces.virusscan.VIRUSTOTAL_KEY</param-name> <param-value>PUT YOUR API KEY HERE</param-value> </context-param>
By default after configured context-param in the web XML file, the Virus
Scanning is enabled. You could update the value of the variable
EnableVirusScanner
to false
in PortalKit/config/variables.yaml
that
you want to disable.
Reference: How to check if uploaded files contain a virus.
Global variables
Variables
These variables are storing as key, value. Can edit in the cockpit only.
Variable |
Default value |
Description |
---|---|---|
PortalStartTimeCleanObsoletedDataExpression |
0 0 6 * * ? |
Cron expression define
the time to clean up data
of obsoleted users. E.g.:
expression for at 6AM
every day is
|
PortalDeleteAllFinishedHiddenCases |
false |
If set to |
PortalHiddenTaskCaseExcluded |
true |
By default, Portal will
query tasks and cases
which don’t have hide
information. Set it to
|
PortalLoginPageDisplay |
true |
By default, Portal will redirect to Login Page if login is required and user is unknown. Set it to false to redirect to login error page and hide Logout in User menu when you are using external authentication and the user is not created in your application user list. |
Configuration
These variables are storing in JSON format, can edit on the cockpit, or using the UI on the Portal Admin setting.
Portal.Announcement
The standard announcement for Portal included general information (e.g. Downtime, Changes, etc.). This message can be seen by all portal users.
Filename: variables.Portal.Announcement.json
Data model:
{ "contents": [{
"language": "en",
"value": "The announcement content in english"
}],
"enabled": false
}
contents
: list of supported languages and content for each language.language
: the language code such asen
,de
,es
, andfr
value
: the announcement content of that language
enabled
: the status of the announcement, true shows the announcement
Portal.ThirdPartyApplications
You can define your custom menu item via this JSON file. It will be included on the left menu.
Filename: variables.Portal.ThirdPartyApplications.json
Data model:
[{ "id": "284352a58c7a48a2b64be8a946857c7a",
"displayName": "{\"de\":\"AxonIvy ger\",\"en\":\"AxonIvy\"}",
"menuIcon": "fa-group",
"menuOrdinal": 1,
"name": "{\"de\":\"AxonIvy ger\",\"en\":\"AxonIvy\"}",
"link": "https://developer.axonivy.com/download",
}
]
id
: the identification number of a third-party application, auto-generated by UUIDdisplayName
: the display name of the app that shows in the left menu, support multi-languagemenuIcon
: the style class of app icon that shows in the left menumenuOrdinal
: index of app that uses to sort menu items in the left menuname
: the name of third-party applink
: the URL of third-party app
Portal.StatisticCharts
You can define the standard statistic charts via this JSON file. It will be shown as the default charts on the statistic page.
Filename: variables.Portal.StatisticCharts.json
Data model:
[{ "id": "42e2d9afd9824abc8d3a70b9d9867dba",
"names": [{
"locale": "en",
"value": "Task chart"
}],
"type": "TASK_BY_EXPIRY",
"filter": {
"timePeriodSelection": "LAST_WEEK",
"createdDateFrom": null,
"createdDateTo": null,
"selectedCaseCategories": ["Alpha_Company"],
"selectedRoles": ["Everybody"],
"isAllRolesSelected": false,
"selectedCaseStates": ["RUNNING"],
"isAllCaseStatesSelected": false,
"selectedTaskPriorities": ["HIGH"],
"isAllTaskPrioritiesSelected": false,
"customFieldFilters": {
"CustomVarCharField": ["Request for new computer"],
}
},
"position": 6
}]
id
: the identification of chart, auto-generated by UUIDnames
: the display name of the chart, support multi-language by defined locale and valuetype
: type of chart such asTASK_BY_PRIORITY
,CASES_BY_STATE
,CASES_BY_FINISHED_TASK
,CASES_BY_FINISHED_TIME
,TASK_BY_EXPIRY
andELAPSED_TIME_BY_CASE_CATEGORY
filter
: list filters apply for each charttimePeriodSelection
: type of period filter such asCUSTOM
,LAST_WEEK
,LAST_MONTH
andLAST_6_MONTH
createdDateFrom
: start time for custom period filtercreatedDateTo
: end time for custom period filterselectedCaseCategories
: case category filterselectedRoles
: role filterisAllRolesSelected
: indicator to inform that selected all roles or notselectedCaseStates
: case state filterisAllCaseStatesSelected
: indicator to inform that selected all states or notselectedTaskPriorities
: task priority filterisAllTaskPrioritiesSelected
: indicator to inform that selected all priorities or notcustomFieldFilters
: list CustomField name filters, define byICase.customFields()
CustomVarCharField
: name ofICase.customFields()
position
: position index of chart that uses to sort chart in the UI
Portal.Dashboard.FavoriteProcesses
You can include your custom application favorites processes via this JSON file. It will be shown as the processes in the application favorite section.
Filename: variables.Portal.Dashboard.FavoriteProcesses.json
Data model:
[{ "id": "234152a58c7a48a2b63be8a946e5731b",
"processType": "IVY_PROCESS",
"processName": "Alpha Company Task",
"icon": "fa-building",
"processId": "Portal/portal-developer-examples/Start Processes/ProcessHistoryComponent/createAlphaCompany.ivp",
"index": 1
}]
id
: the identification of a process, auto-generated by UUIDprocessType
: type of a process such asEXPRESS_PROCESS
,EXTERNAL_LINK
,IVY_PROCESS
processName
: the display name of a processicon
: the style class of the process iconprocessId
: the process id of the process start in ivyindex
: the index number to sort the processes in the dashboard
Portal.Processes.ExternalLinks
The standard external links of Portal.
Filename: variables.Portal.Processes.ExternalLinks.json
Data model:
[{ "id": "01322912db224658a222804802844a7b",
"name": "Download latest Axon Ivy",
"link": "https://developer.axonivy.com/download",
"creatorId": 2,
"icon": "fa-paperclip",
"description": "https://developer.axonivy.com/download"
}]
id
: the identification of a link, auto-generated by UUIDname
: the display name of a linklink
: the URL of the linkcreatorId
: the user id who create the linkicon
: the style class of the link icondescription
: the description of a link
Portal.Processes.ExpressProcesses
The standard express processes of Portal.
Filename: variables.Portal.Processes.ExpressProcesses.json
Data model:
[{ "id": "f281e1ee7fb54bcda8d7a0c64ba46fc8",
"processName": "Portal Express process",
"processDescription": "Process",
"processType": "AHWF",
"processPermissions": ["Everybody"],
"processOwner": "#portaladmin externalId:889",
"processFolder": "8e9870b2-0179-46eb-bdb8",
"readyToExecute": true,
"processCoOwners": ["#demo externalId:9CA"],
"icon": "fa-codepen",
"taskDefinitions": [{
"type": "USER_TASK",
"responsibles": ["Everybody"],
"subject": "Express user task",
"description": "Express user task",
"taskPosition": 1,
"untilDays": 2,
"formElements": [{
"elementID": "Input area2020-09-07 04:57:05",
"label": "Input area",
"required": true,
"intSetting": 7,
"elementType": "InputTextArea",
"optionStrs": [""],
"elementPosition": "HEADER",
"indexInPanel": 0
}]
}, {
"type": "EMAIL",
"responsibles": [],
"taskPosition": 2,
"untilDays": 3,
"email": {
"recipients": "wawatest@ivy.io",
"responseTo": "wawa@mail.io",
"subject": "Verify Express process",
"content": "<p>Email content</p>",
"attachments": [],
"empty": false
}
}
],
"ableToEdit": true,
"useDefaultUI": false
}]
id
: the identification of an express process, auto-generated by UUIDprocessName
: the display name of an express processprocessDescription
: the description of an express processprocessType
: type of express processes such asAMWF
andAHWF
processPermissions
: the process permissions who can see this express processprocessOwner
: the user information who create this express processprocessFolder
: the folder id where the express process use to store datareadyToExecute
: indicator to inform that process can start or notprocessCoOwners
: the user information who can see this express processicon
: the style class of express icontaskDefinitions
: list tasks of the express processtype
: type of the express task such asUSER_TASK
,USER_TASK_WITH_EMAIL
,APPROVAL
, andEMAIL
responsibles
: responsible for the express task who can work on the tasksubject
: the name of an express taskdescription
: the description of an express tasktaskPosition
: the index of a task in the express workflow stepsuntilDays
: the expiry day of an express taskformElements
: list forms on the UI of the express taskelementID
: auto-generatedlabel
: the label of the elementrequired
: indicator to inform that form element is required or notintSetting
: auto-generatedelementType
: type of elementoptionStrs
: select options of an elementelementPosition
: the position of an element on UIindexInPanel
: auto-generatedemail
: define an email taskrecipients
: the recipients of the emailresponseTo
: response to the emailcontent
: the content of the emailattachments
: list attachmentsempty
: indicator to inform that attachment is empty
ableToEdit
: indicator to inform that express can edituseDefaultUI
: indicator to inform that express process is using default UI elements