Did any one work with Branch using anylogic? - branch

I'm modeling a consumer's behaviour using statechart. I used "branch" to model two options which are :
1) buy a product if it does exist
2) leave the retailer if it doesn't exist.
However, when I simulate, It tells me NullPointException Java.lang.NullPointerException. When I click on it, I find that the problem is into the branch (described in pictures below),
Has anyone gone through this, or does any one have some solutions ?
Pictures below show in detail what I 've written and what I got as a result
Thanks ^^
My statechart that represents the behaviour of consumer
what I got when I click on Consumer.java:321 in the console
What I got when I click on Consumer.java:408 in the console

it means that retailer is null... which means that at that point in time, you variable retailer has no value in it
Debug your model with the objective of being sure that you are assigning a value to the retailer variable.

Related

Why is PrestaShop redirrecting to a random product when selecting variations from front-end?

I have an online shop in development, all went well until I decided to do SEO on the shop. After this, if I chose a product variation from front-end it just redirects me to a random product.
This picture describes the first state. The default product load.
This picture describes what is happening after you select a variation. As you can see the product name stays the same, but the link indicates that a totally different product is displayed.
If I have the debug mode enabled when selecting a variation it throws "An error occurred while processing your request" and in the request file I can see that besides some errors (Deprecated: array_key_exists(): Using array_key_exists()) it shows the request for a different product.
I can't understand why this is happening, so I am in dying need of your help.
That's the way Prestashop 1.7 works :
First time a customer lands in a multi-variation page, the default attribute will be loaded,
URL will show only the ID product.
Once you choose an attribute , an AJAX call will refresh the page
with the current attribute and URL will change with id_product-id_product_attribute value.
Not sure what you mean by "random product" as in both of your examples I see an attribute
being selected.
Anyway there are several (paid) modules to change this behaviour in a better SEO perspective,
this is definitely one of the most famous :
https://addons.prestashop.com/en/url-redirects/16633-pretty-urls-seo-friendly-url-remove-ids-numbers.html
EDIT: Just noticed that the ID product is different in the two screenshot, this could be related to some DB issues with attribute too, you should check if you have some not coherent values between id_product and id_product_attribute(s)
I found a fix for this. Apparently or appeared because I was using the duplicate function for uploading products. I don't know why but on some products it makes this behavior.
I've spent over 12 hours to find a explanation for this and I was unable to find one. The PrestaShop forum straight up banned me for posting this topic.
My advice is to NOT USE PRESTASHOP it's and old sistem and full of bugs, the support is expensive and I get the impression that even they don't understand their system.
If you find yourself in this situation, know this. Don't duplicate and upload products using "add new" function.
And I can't state this enough, do yourself a favour and don't use Presta, with all the expenses the time to invest and what the product looks like at the end of the road, is just a waste of time. Even after you finish is guaranteed to break in 1-2 years, any updates will break your store and you will need to invest even more more to fix it. It's an old, slow and buggy CMS. It's days are numbered.
Thanks a lot for help.
Best regards, Daniel.

Any info on unstable GROUP permissions when sending another user a modifiable box with a no-mod script inside it?

I am trying to send a modifiable box with a no-mod script inside it to another user and cannot get the hoped for result. What I was hoping for is that the recipient could modify the box but not the script. Sadly that is not what happens.
What happens is that the user receives the box, and upon opening it, it shows the MOD box checked, and even says "You can modify this object". Good. And, indeed, the user can change the texture of the box, save it to inventory, re-rez it and the texture survives unchanged. Still good.
BUT, when the user changes the GROUP the box belongs to, with the box rezzed, they can do it and it seems to work. But as soon as they take the box back into inventory three things happen.
(1) where it used to say, in inventory (no copy) it now says (no copy) (no modify) and
(2) when they rez it again, the GROUP reverts to what it was when I sent out the box, and
(3) curiously, the texture does not revert.
I looked for any further posts here regarding permissions.
I found and read with interest an Oct 14 thread: Modify permissions changed when sending items in a box in the Second Life Community Forum.
Of course I found the overall result of that problem to be basically: "Second Life does that sometimes".
I imagine this is relatively easy for someone else to replicate on some different sim, with
different avatars and different box, on a different day if any of that changes things.
Advice? Links to the best place on-line to read up on permissions?
Links to other discussion forums where I might find assistance such as StackOverflow?
Thank you.
Afterthought #1 -- Yes I did set modify BOTH with the box Rezzed and with it in inventory.
The permissions shown in inventory are the most restrictive permissions on the object and its contents. The object is still modifiable but the inventory listing will show no modify if a script inside the object is no modify.
The group is set to the active group of the person rezzing it (or, in viewers with "rez under land group" enabled, the land group, should the person rezzing it be a member). Groups are not stored when the object is taken back into your inventory; it has nothing to do with the group you set it to.

Fields not being hidden despite a business rule

In this thread I verified that the correct approach for hiding some individual fields from a composite field is done correctly. That seems to be confirmed by other sources as well. However, despite a rule defined like so:
I still get the stupid fields to show up when on account form. It looks as the following image depicts and is a high level annoyance and reason for my teeth grinding. What am I missing? (Yes, I did activate the rule and I reloaded the form.)
If there are any issues with business rule (i.e. when attempting to hide a field not present on the targeted form, as is the case, due to mix-up between country and county), it wouldn't proceed, the execution will stop but there won't be any complaints or any errors thrown.
Credits to #Daryl for: "I've had issues where hidden fields were the first field on the form and the method the MS uses to select the first field, made it visible."

Asserting on data that is derived from a previous step

When a piece of data that I want to assert on in a later test is derived from an earlier step, is there an accepted method of storing and recalling that data later on in the scenario?
For example:
Scenario: Recently viewed product
Given I am on a product category page
And I click on the first product
When I am on a product category page
Then the recently viewed products should list the product I just viewed
On the step And I click on the first product can I somehow persist the product name so that I can assert that I am actually seeing that product in the last step? The reason I can't specify an actual product name in the feature file is that this could and will become out of sync with live product data.
Thanks!
It's entirely up to you how you implement this. The simplest way is in your "I click on the first product" step definition store the clicked product information in a static variable (or as a global variable) and then use it in "the recently viewed products should list the product I just viewed" step to verify it's present.
Store the values you need to persist between steps as FeatureContext class properties.
Don't forget to clear them when the Scenario ends, or before each new Scenario.

How to decide whether to split up a VB.Net application and, if so, how to split it up?

I have 2 1/2 years experience of VB.Net, mostly self taught, so please bear with me if I seem rather noobish still and do not know some of the basics. I would recommend you grab a cup of tea before starting on this, as it appears to have got quite long...
I currently have a rather large application (VB.Net website) of over 15000 lines of code at the last count. It does not do retail or anything particularly complex like that - it is literally just a wholesale viewing website with admin frontend, catalogue / catalogue management system and pageview system.
I don't really know much about how .Net applications work in the background - whether they are all loaded on the same thread or if each has its own thread... I just know how to code them, or at least like to think I do... :-)
Basically my application is set up as follows:
There are two different areas - the customer area and the administration frontend.
The main part of the customer frontend is the Catalogue. The MasterPage will load a list of products but that's all, and this is common to all the customer frontend pages.
I tend to work on only one or several parts of the application at a time before uploading the changes. So, for example, I may alter the hierarchy of the Catalogue and change the Catalogue page to match the hierarchy change whilst leaving everything else alone.
The pageview database is getting really quite large and so it is getting rather slow when the application is first requested due to the way it works.
The application timeout is set to 5 minutes - don't know how to change it, I have even tried asking this question on here and seem to remember the solution was quite complex and I was recommended not to change it, but if a customer requests the application 5 minutes after the last page view then it will reload the application from scratch. This means there is a very slow page load whenever it exceeds 5 minutes of inactivity.
I am not sure if this needs consideration to determine how best to split the application up, if at all, but each part of the catalogue system is set up as follows:
A Manager class at the top level, which is used by the admin frontend to add, edit and remove items of the specified type and the customer frontend to retrieve a list of items of the specified type. For example the "RangeManager" will contain a list of product "Ranges" and will be used to interact with these from the customer frontend.
An Item class, for example Range, which contains a list of Attributes. For example Name, Description, Visible, Created, CreatedBy and so on. The form for adding / editing loops through these to display relevant controls for the administrator. For example a Checkbox for BooleanAttribute.
An Attribute class, which can be of type StringAttribute, BooleanAttribute, IntegerAttribute and so on. There are also custom Attributes (not just datatypes) such as RangeAttribute, UserAttribute and so on. These are given a data field which is used to get a piece of data specific to the item it is contained in when it is first requested. Basically the Item is given a DataRow which is stored and accessed by Attributes only when they are first requested.
When one item is requested from a specific manager is requested, the manager will loop through all the items in the database and create a new instance of the item class. For example when a Range is requested from the RangeManager, the RangeManager will loop through all of the DataRows in the Ranges table and create a new instance of Range for each one. As stated above it simply creates a new instance with the DataRow, rather than loading all the data into it there and then. The Attributes themselves fetch the relevant data from the DataRow as and when they're first requested.
It just seems a tad stupid, in my mind, to recompile and upload the entire application every time I fix a minor bug or a spelling mistake for a word which is in the code behind (for example if I set the text of a Label dynamically). A fix / change to the Catalogue page, the way it is now, may mean a customer trying to view the Contact page, which is in no way related to the Catalogue page apart from by having the same MasterPage, cannot do so because the DLL is being uploaded.
Basically my question is, given my current situation, how would people suggest I change the architecture of the application by way of splitting it into multiple applications? I mean would it be just customer / admin, or customer / admin and pageviews, or some other way? Or not at all? Are there any other alternatives which I have not mentioned here? Could web services come in handy here? Like split the catalogue itself into a different application and just have the masterpage for all the other pages use a web service to get the names of the products to list on the left hand side? Am I just way WAY over-complicating things? Judging by the length of this question I probably am, and it wouldn't be the first time... I have tried to keep it short, but I always fail... :-)
Many thanks in advance, and sorry if I have just totally confused you!
Regards,
Richard
15000 LOC is not really all that big.
It sounds like you are not pre-compiling your site for publishing. You may want to read this: http://msdn.microsoft.com/en-us/library/1y1404zt(v=vs.80).aspx
Recompiling and uploading the application is the best way to do it. If all you are changing is your markup, that can be uploaded individually (e.g. changing some html layout in an aspx page).
I don't know what you mean here by application timeout, but if your app domain recycles every 5 minutes, then that doesn't seem right at all. You should look into this.
Also, if you find yourself working on various different parts of the site (i.e. many different changes), but need to deploy only some items in isolation, then you should look into how you are using your source control tools (you are using one, aren't you?). Look into something like GIT and branching/merging.
Start by reading:
Application Architecture Guide