Issue when calling from Fiori Launchpad a flavor based on main menu - sap-fiori

Experimenting with Fiori Lauchpad and have already deployed a few tiles based on Personas flavors, most of them using a generic invocation (calling transaction /personas/launch and passing as parameter the flavor ID), all of them work.
Just tried to add another tile, passing as parameter a flavor based on the SAP main menu (SMEN). As soon as I click the tile, I get the message "Transaction SMEN is locked", something of course that does not apply, since I can use the flavor normally and it's (apparently) unlocked when viewing via SM01. Any ideas?

Answer below
"Check whether the following KBA applies to your case:
2786421 - Fiori Launchpad Tile to launch Backend transaction SMEN no longer works"
Personas/health reports all green but seems that this is not classified as a personas issue

Related

How do you save the Slack modal view ID for future updates?

I'm using Slack's modals + their new BlockKit interactive actions. I have a modal dialog with several section's that include select menu accessories. When one of those accessories changes (ex: user preference goes from Yes -> No), I want to update the modal's view to reflect the change in some contextual text.
The docs outline two ways to update a model. Because I'm not using the traditional modal inputs, I have to update the modal via the API and not via response_action. Proof: I don't even receive a view_submission payload at all... I receive a blockkit_action payload.
The docs conflict a bit. In the above link they say that to update a view you must pass in the returned ID of the view when it was opened:
Remember the view.id that was included in the success response when
you used views.open earlier? We hope you kept it, because you can now
use it to update that view.
But when you look at the docs for the views.open and views.update, it appears there is a second option: external_id. The views.update docs say this:
A unique identifier of the view set by the developer. Must be unique
for all views on a team. Max length of 255 characters. Either view_id
or external_id is required.
Initially I got everything working really nicely by choosing an external ID of myapp-mymodal-[userID]. But as soon as I tried opening the modal simultaneously on my Desktop + Mobile client, I started getting internal_error responses and have been unable to open the modal since!
So I started looking into saving the view ID, per the first quote. My problem is: that ID changes every time the modal opens. I don't understand how I am expected to possibly keep track of the 0-2 "active" view IDs that might be taking place across a user's Desktop + Mobile clients (or more than 2 if they have an iPad, a second laptop, etc).
I tried to look for some sort of unique client ID that I could either use to include in the external_id or in my view_id persistence logic, but given that Slack's API appears to be sesssion-less I couldn't find any such thing.
How do others solve this problem?
Try using the private_metadata field in the View
I initially did the same thing you did, which worked, but I wanted to avoid that edge case if possible. What I figured out, is that I could pass the external_id that I created when opening the view into the view's metadata, and then retrieve it when I receive an interaction.
When I set the external_id I set it to the userID + the current time (so it's always unique, even if the user opens the modal from different devices)
externalID := UserID + time.Now().String()
and pass that both as the external_id for the view, and as a string into the private_metadata.
PrivateMetadata string `json:"private_metadata"`
When the user interacts with one of my blocks and Slack sends me the interactive message, I retrieve the metadata like this:
Request.Payload.View.PrivateMetadata
I wrote my Slack app in Go, but I tried to make it clear for any language. Let me know if anything is unclear or needs expanding on - this is my first time giving back to the Stackoverflow community.

How to find out team name from BPM instance id

Is there a way to get the team an instance is assigned to from the instance id in BPM 8.5.6 version? before a user from the team claims the task I need to auto select some fields on the coach. Is there a way I know which team an instance or a task is assigned to? IS there a way other than REST API.
It doesn't appear in the API documentation, but the TWTask appears to have an attribute "displayName". So the following seems to work -
tw.system.findTaskByID(68507).assignedTo.displayName
That gave me the expected value, where as "name" gives the internal name which has a GUID on it. Mine was assigned to "All Users". YMMV depending on if it is assigned to a Team, a Role, or a Participant Group.
As it isn't in the JS-API documentation you might want to get an official support statement from IBM. I've seen working items like this stop working, and when you file an issue they point out that the item was not documented, so the fact that it broke is not technically a regression.
There is a REST API available, under REST interface for BPD-related resources --> Process Instance Resource --> Current State. This api will provide all the details for the instance including the vairable, tasks (open & closed).
https://www.ibm.com/support/knowledgecenter/SSV2LR/com.ibm.wbpm.ref.doc/rest/bpmrest/rest_bpm_wle_v1_process_instanceid.htm

Disable multi-tab browsing for single session/user

[Disclaimer: I'm not sure if this kind of question is accepted here as it is about a piece of software deployed already. Rest assured I didn't drop any confidential information. Also do tell me if I violated any rules in SO by posting this so I can take it down immediately]
I have a working Learning Management System web application and I recently received a bug report about a button not showing. After investigating, I have proved that the user was not using the web app as intended. When taking an exam, he was opening multiple tabs to exploit the feature that informs him whether the answer was correct or not. He then will use this information to eliminate the wrong answers and submit all the right answers in another tab/window.
I'm using Rails 4.2. Is there a way to prevent multi-tab browsing? I'm thinking like if a user is signed in and he attempted to open a new tab of the webapp, he should see something like "Please use one tab" and all the features/hyperlinks/buttons are disabled.
Here's a screenshot of how I proved he was using multiple tabs. Notice that there are multiple logs of the same attempt # because the current implementation allows saving a study session and resuming later (this is the part that's exploited). The opening of multiple tabs searches for the most recent attempt session and continues from there. This is also the reason why most of the sessions don't have a duration value -- the user only finishes a study session for one tab (by clicking a button that ends the study session). The system cannot compute for the duration because the other sessions don't have an end timestamp.
-
This is what a single-tab user looks like:
This is more of an application misuse issue more than a bug.
You should add protection not only from multi tab, but for multi browsers aw well, so it can't be purely FrontEnd check.
One of the solutions could be using ActionCable to check if a user has an active connection already and then act accordingly.
Another, for example, generate a GUID in JS and pass it with every answer. If its different from previous answer, it means user opened a new window.
But of course the solution would depend on your current architecture, without knowing how do you currently organise client-server communication it's hard to give exact and optimal solution.
I found an answer here. I just placed this js in the application view to prevent any extra instance of the website.
Thanks for everyone who pitched in.

TFS 2012 Add custom Dictionary

We're about to implement TFS 2012 and I've been having some fun customizing some work items to aid us in our reporting. One issue we have is our reporting based on clients.
Our Product Backlog Items keep our requirements, however, we need to report our requirements per client (government regulations). Some requirements will affect all clients, some will only reflect certain ones. I've been able to add a global list of clients along with a multi-select option and that part is working great.
The issue is we need to also note the requirement number for each selected client. I know I can go in and add a field for each 'Client Requirement', but as that list gets bigger, that screen will be insanely huge.
Does anybody know of such a way to implement something of the sort?
One option would be to create a custom Work Item Type for Clients. Then link your PBI's to the appropriate client WI's. When you create a link you can enter a link comment also which you could use to capture the client-specific requirement number.
I would create a custom "Client Requirement" work item that has the list of clients to select and includes a field for Client ID. You can then either use the related link type or create your own, maybe "Implements \ Implemented By" so that you can create a Reporting Services report that pulls the ID's

what analytic tool can I use for tracking exactly what users click

Please advise what tool can I use to track what user is exactly clicking i.e. click-streams – to view the actual click-stream of each visitor.
I came across "rail stat" but it seems outdated (09'). I also saw "clicky" but am unsure if I can see click streams with it?
So what other analytic tool can I use to view click streams?
Every answer would be greatly appreciated!
You could try the "event tracking" part of google analytics which allows you to track interactions with your site (clicks etc etc) rather than just the normal per-page.
Here is a snippet from the Event Tracking docs:
Event Tracking Overview
Event Tracking is a method available in the ga.js tracking code that you can use to record user interaction with website elements, such as a Flash-driven menu system. This is accomplished by attaching the method call to the particular UI element you want to track. When used this way, all user activity on such elements is calculated and displayed as Events in the Analytics reporting interface. Additionally, pageview calculations are unaffected by user activity tracked using the Event Tracking method. Finally, Event Tracking employs an object-oriented model that you can use to collect and classify different types of interaction with your web page objects.
By contrast, tracking web page objects using the urchin.js tracking code requires virtual URL creation and provides no object hierarchy. With the legacy urchin.js code, user interaction with page objects is calculated and displayed as part of total page views to your site, and no distinction is made between actual and virtual pageviews.
With ga.js, you would commonly apply Event Tracking to:
Any Flash-driven element, like a
Flash website, or a Flash Movie player
Embedded AJAX page elements
Page gadgets
File downloads
Load times for data
Another option is Open Web Analytics, which includes an option to both record a user's DOM stream for later playback and to record a heat map.
OWA is a standalone PHP app that is able to monitor multiple domains. It is under active development with version 1.5 out any day now.
HTH

Resources