FlexSim Knowledge Base
Announcements, articles, and guides to help you take your simulations to the next level.
Sort by:
FlexSim 2026 is now available for download.   You can view the Release Notes in the online user manual.   FlexSim 26.0.0 Release Notes   If you have bug reports or other feedback on the software, please create a new post in FlexSim Forums.
View full article
Attached is an example model and user library comprising commands to return an array of objects whose bounding boxes intersect, and a Collision Detection object to drop into your model. The Collision Detection has a ticker interval label to adjust the frequency of checks and will switch the colliding objects to selected. It looks for two groups - "Obstacles" containing static objects in the scene (which may be overlapping and not recorded as collisions) and "Colliders" which are the objects navigating the scene and should be checked for intersecting bounding boxes. In the example model I'm adding the flowitem when it is created using Group("Colliders").addMember(item) The detector code is on its FlexScript label, 'analyseScene', which is first scheduled to run by the object's reset trigger. collisionDetection3.fsm BBCollisionDetection2.fsl
View full article
FlexSim licenses can either be standalone or network-based. Each license model has its pros and cons. Learn more about these two different license models. You're here because you've chosen network licensing and you're ready to get started. A license manager by any other name FlexSim is licensed using technology from Revenera's FlexNet. FlexNet is one of the top software licensing technologies and is used by many large software companies, including several others in the engineering software space. FlexNet offers two different license managers: lmtools and lmadmin. You decide which platform will work best for your organization's needs. (Spoiler alert: we like lmtools best). lmtools Hosting your FlexSim licenses with lmtools lmtools is a simple utility for creating and managing the licensing service that will serve your FlexSim licenses to your organization's client PCs. This basic utility isn't installed - it is a simple executable. It has no 3rd party dependencies. For maximum security, compatibility, and simplicity, FlexSim recommends using lmtools. Many organizations that add FlexSim to their toolkit already use lmtools for managing their license hosting services for other software, so using lmtools to manage your FlexSim licenses just makes sense. Even if your FlexSim purchase marks the first time your org has set up a license manager, lmtools is a great way to go, and is our recommended license manager. Visit Hosting your FlexSim licenses with lmtools for a complete reference on configuring your license server using lmtools. lmadmin Hosting your FlexSim licenses with lmadmin lmadmin is FlexNet's newer, shinier license manager. It includes a web-based front end, so all the administration is done from your web browser. It is more complex than lmtools, serving both the licensing service and a management front end, and lmadmin relies on Java, which you will need keep up to date with patches and security updates. FlexSim usually does not recommend lmadmin, mainly because of the more complex configuration needed to host and manage the web front end (including additional firewall considerations, an extra username and password, etc.), its reliance on Java, and the fact that many FlexSim users already host other software licenses using lmtools. Visit Hosting your FlexSim licenses with lmadmin for a complete reference on configuring your license server using lmadmin.
View full article
The instructions below are for offline/Manual XML licensing. If your server successfully connects to the Internet and to FlexSim's main license server, you can try our simpler online license activation instructions. Getting ready If you're configuring a new license server, please stop now and follow the complete license server installation instructions. This shorter guide just focuses on one piece of the installation instructions: license activation. We've broken the activation step out into this standalone article for convenience in subsequent licensing procedures, like upgrading your license server. These instructions assume that: you followed the steps outlined in our license server installation instructions including download of all required files and installation of the FlexNet Licensing Service; FlexSim's license server files were extracted to the location C:\FlexSim_LMTOOLS. When should I use XML/offline licensing? If your license server cannot connect to the Internet or is blocked from direct communication with FlexSim's license activation servers then you will need to activate your license manually . This article guides you through the manual activation steps. If you're not sure, go ahead and try an online activation first. Activating your license server online is faster and simpler. If online activation fails due to communications on your license server being blocked, you can fall back to this offline activation guide. Activate your license NOTE: If this is the first time a license has been activated to this license server you must first configure trusted storage. On your license server, run the flexsimserveractutil.exe program (C:\FlexSim_LMTOOLS\flexsimserveractutil\flexsimserveractutil.exe) by right-clicking and selecting Run as Administrator. Create manual activation requests In the FlexSim ServerActUtil program, go to Tools > Manual Activation > Generate Request. Enter a valid Activation ID. Enter a Count (seat quantity) for your license. NOTE: If you have a 20-seat license but want to host 12 seats on this server and 8 seats somewhere else, you can do so. Simply enter 12 for the Count value. Browse to select an Output File. Press Generate. You've just saved a new XML activation request to the location you selected. Repeat steps 1-5 above to generate an activation request for all license codes you intend to activate on this license server. Submit your manual activation requests Transfer your XML activation requests to a computer with Internet access. From your Internet-connected computer, open a web browser and login to your FlexSim Account. Click the Licenses link in the header, then choose Manual XML in the Licenses submenu. Upload your XML files by dragging them onto the drop zone. Your uploaded XML requests will be processed. Upon completion, you will be prompted to download each XML response. Process your manual activation responses Transfer your downloaded XML activation responses to the offline license server you are licensing. In the FlexSim ServerActUtil program, go to Tools > Manual Activation > Process Response. Browse to an XML activation response file. Press Process. FlexSim should give you an indication of successful processing of your activation, and activation for that XML request will be complete. Successfully Processed Response Repeat steps 1-5 to process the XML activation responses for any other XML activation requests. Is this a license server upgrade? If this license activation is part of upgrading the license on your license server, don't forget to reread license files. If you have any questions or problems, please search our Answers Community for possible solutions. There is a good chance someone else has already asked your question. Still not finding what you're looking for? Submit a new question and we'll check it out. If you're including any confidential information, such as license codes, be sure to mark your question as private! You can also contact your local FlexSim distributor for live phone, web, or email help.
View full article
This article lists off application models of Warehouse examples: Warehouse Systems, Order Fulfillment and Logistics, Logistics and Supply Chain.
View full article
FlexSim 2025 Update 2 is now available for download.   You can view the Release Notes in the online user manual.   FlexSim 25.2.0 Release Notes   If you have bug reports or other feedback on the software, please create a new post in FlexSim Forums.
View full article
Node-locked   Node-locked can only be activated once. Be sure that you install the license where you would like it to be installed for the next year. FlexSim can assist with one migration for extenuating circumstances, such as a crashed computer, but there will be fees for any additional migrations. Please contact your distributor to receive assistance with moving your license. The node-locked license feature of terminal server usage (remote desktop) is disabled and cannot be enabled.   Transferable   There is no limit to the number of times a license seat can be activated and returned. If the transferable license is not a network license, then by default the license feature of terminal server usage (remote desktop) is disabled.    Please reference other articles or our documentation for further information about licensing.
View full article
Open FlexSim Software. Click Help in the main menu. Choose License Activation. Click the Return tab. Each of your activated licenses will be listed in the dropdown selector. Select a license you want to return. Click the Return button. Please wait while your FlexSim Software communicates with the license server. The status text will update, and should end with an indication of success. Repeat to return any other Activation IDs that need to be returned.
View full article
Flexsim 2021 Update 2 is now available for download. You can view the Release Notes in the online user manual. For more in depth discussion and videos of the new features, check out the official software release page. If you have bug reports or other feedback on the software, please email [email protected] or create a new idea in the Development space.
View full article
Background   The method for licensing a single-user client PC saves client PC license settings to the Windows profile data of the signed in user, so license settings are saved on a per-user basis.   In cases where the exact number or identity of PC users is not predetermined, such as in a university computer lab, it is impractical to license users individually in this manner. Another use-case for this method is when FlexSim Software is automatically pushed or deployed to client PCs. Having the licensing as part of the deployment is useful.   For this mult-user method we'll use a license file on the client PC to license FlexSim software generally for any user of the PC.   Use a license file   Create a plaintext license file   On the client PC create a plaintext license file named flexsim.lic with the following 2 lines (exclude any line numbers):   SERVER 127.0.0.1 ANY 26914 USE_SERVER   If your Windows settings do not show file extensions, it is possible that your flexsim.lic license file is actually named flexsim.lic.txt, which will not work. Be sure to show file extensions and make sure your license file ends with the .lic file extension. The actual name of the file is not important (it could be helloWorld.lic, for instance), but it needs to end in .lic.   Modify   On the client PC, modify your new license file with the following changes:   On line 1 change "127.0.0.1" to the IP address or fully qualified domain name of your license server. If you modified your license server with custom port numbers, on line 1 replace the default port 26914 with your custom port number.   Install   With FlexSim software installed on a client PC, your new license file should be copied into FlexSim’s installation directory in the following location:   C:\Program Files\FlexSim <version>\program\   Your exact folder path could differ based on custom installation locations or FlexSim version, but it should be placed into FlexSim’s program\ folder.   Multiple license servers?   If your FlexSim licenses/seats are spread across multiple license servers, you can configure your client software to try to pull a license from any of your multiple license servers. Simply create a new license file for each possible license server and save each to the same program\ folder. In this scenario, in your program\ folder you would have multiple license files listed, like this:   flexsim1.lic flexsim2.lic flexsim3.lic etc. Each license file should reference a different license server and its port number.   Next   Check out the next article to learn how to verify that your client PC is licensed, and what to do if it isn't: License Server - Verify client PC licensing.  
View full article
We have released a beta version of our Emulation module. The Emulation module adds a tool that enables communication between FlexSim and OPC / Modbus Servers and PLCs. Help files are included in the FlexSim User Manual to assist you. This beta version must be installed with FlexSim 2017 Update 1. 32-bit and 64-bit installers can be downloaded through the downloads section in the Modules tab of the FlexSim website: FlexSim Downloads The following are known issues: Asynchronous Write for OPC Connections is not working. The option has been disabled. Please post any feedback or bug reports either as a comment to this article or you can email them to [email protected]
View full article
Not sure about the differences between network and standalone licenses? No worries! Read on for an in-depth explanation of each license model:   Standalone Licensing (Client-Activatable) Network Licensing (Server-Concurrent)   You can also download our printable reference, which includes some example scenarios: Standalone vs Network Licensing.pdf.   Standalone Licensing (Client-Activatable)     Once a standalone license is activated to a PC it remains there permanently until it is returned. The PC could be rebooted, taken offline, or even have FlexSim uninstalled - the license remains on the PC.   The steps to activate and return a license are user-accessible from within FlexSim software. Once FlexSim is installed, there are no special PC permissions required to activate or return licenses.   See our licensing procedures article for instructions for managing your standalone licenses (activate, return, repair, upgrade).   User-managed license movement   The ability for the user to activate and return their license at will is a big advantage. It allows teams the freedom to share a license, while still giving individuals the freedom to take a license off-site or off-Internet. As long as a team sharing a license communicates effectively, the license can be passed around to whoever needs it at the moment, by returning the license from one PC and activating to another.   History Log   FlexSim's main license server logs a license's activation/return history, including who last activated (in case you need to contact someone about returning it!). The license history log can be viewed by any FlexSim account that can view the license. This includes the license owner and any account the owner has shared with.   Your activation IDs (the license codes copied into FlexSim to activate your license) can be shared and visible - including the activation history - with every member of your group. See the Sharing tab on your FlexSim account's Licenses page.   Trusted Storage   Your standalone FlexSim licenses are activated to a special holding area on your computer called Trusted Storage, which exists outside and independently of FlexSim software. FlexSim's activation process will authenticate your computer with our main license server and store your license credentials in Trusted Storage, completely outside of any FlexSim installation.   You could uninstall FlexSim, but your license will still reside in your computer's Trusted Storage. You would need to reinstall FlexSim in order to access the return functionality to move your license off of your computer.   So, you can go ahead and use ANY version of FlexSim to activate ANY version of your license so that it will be stored in your computer's Trusted Storage. Whether the activated license will enable features in your version of the software is a separate question - and as a quick reminder, FlexSim's licenses are backward-compatible, meaning that if you have a 21.2 license, you can use that with any version of the software up to version 21.2.x, including all older versions back to 5.0.   The crux is, your standalone license can be accessed by any version of FlexSim installed on your computer, regardless of what version was used when activating the license, because all versions just put your license into Trusted Storage, and all versions check license rights by reading out of Trusted Storage.   Standalone pros   User-level control of the license gives flexibility in who has the license at any given moment. FlexSim maintains the license server, so you don't have to (avoids complexity of installing, configuring, maintaining, and upgrading your own separate license server). Online tools to see the license history and who currently has the license (via your FlexSim Account). In-software auto-upgrades makes upgrading your license easy.   Standalone cons   People sharing the license need to coordinate who will use it when and remember to return the license when unused. Lost, stolen, or broken licenses require interaction with your local FlexSim rep to fix.     Network Licensing (Server-Concurrent) Let's begin with an overview of the setup (simplified from our license server installation instructions) :   Provision a computer/VM to act as the license server. It should remain powered on and attached to the network at all times. Activate your FlexSim licenses to your local license server. Install and configure the license manager software. Configure firewalls and permissions on the server and/or network to allow communication with FlexSim client PCs.   Next, the client PCs:   Install FlexSim on the client PC. Configure licensing settings in the client software to point to the license server. Configure firewalls and permissions on the client PC and/or network to allow communication with the license server. The network connection between client and server must be maintained throughout use of FlexSim software. If the network connection breaks, FlexSim software reverts to the feature-limited Express mode.   This sort of setup is great for computer labs at universities, for instance, where there are many client PCs, and license server hardware or virtual machine is easy to obtain or already exists. Also, where the client PCs are stationary and always on the network, and where network topology makes it easy for the clients to stay connected to the server.   Opening FlexSim software requests a seat from the organization's license server. Closing the software returns the seat.   Network pros   Allows for management of many licenses (seats) from a single location. Some server settings are customizable (Options files can be quite powerful - see chapter 13). Licenses can never become lost or stranded on client PCs. If a client PC loses its connection to the server, the server will reclaim the seat after a timeout period (default timeout is 15 minutes).   Network cons   Complexity of installing, configuring, maintaining, and upgrading a separate license server. Client PCs must maintain a constant connection to the server. No online record of activations/returns (but you can examine your own raw server logs).  
View full article
Flexsim 2021 Update 1 is now available for download. You can view the Release Notes in the online user manual. For more in depth discussion and videos of the new features, check out https://www.flexsim.com/news/flexsim-2021-update-1-pre-built-agv-logic-bottle-shapes-and-more/ If you have bug reports or other feedback on the software, please email [email protected] or create a new idea in the Development space.
View full article
In addition to the animations that are on the Operator and Person flowitem by default, you can easily download and add more animations from Mixamo. Below are the steps to do that. If you want to create new characters with animations, see Bone Animations 1. Download the attached two files: FlexSim_Operator.fbx and FlexSim_F_Operator.fbx. These are the versions of the male and female operator shapes as exported from Mixamo originally, before they were modified and optimized in 3ds Max. 2. Log into your account at https://www.mixamo.com and press the Upload Character button in the Characters section of the site. 3. Drag the FlexSim_Operator.fbx or FlexSim_F_Operator.fbx shape from step 1 onto the window that appears. A progress bar will appear as the shape uploads to Mixamo's server. Once it is finished uploading, press the Next button: 4. On the Animations section of the site, select an animation you want to apply. Adjust the parameters as desired and press the Download button: 5. Select "Without Skin" in the Skin section and press the Download button. This will download just the animation file rather than the animation, the mesh, and the bones. The mesh and bones are already in the software so you only need the animation if you are editing the standard male or female operator shapes. 6. In FlexSim, edit the Animations for an Operator or a Person flowitem: 7. In the Animations and Components window, select Edit Animation Clips: 8. In the Animation Clips window, press the Plus button to add the animation you downloaded in step 5 above. Optionally, you can edit the animation clip's name and press Apply. You can also edit the clip's length or split the animation into multiple clips using this window. 9. Close the Animation Clips window when you are done. 10. In the Animations and Components window, add a new Animation and name it. Then add an Animation Clip to that animation. Then select the clip and set its Animation and Clip values to the animation/clip set in step 8: 11. Now you can use the new animation in your model on this operator or person flowitem.
View full article
FlexSim 2022 Update 2 Beta is now available. (Updated July 18) FlexSim 22.2.0 Release Notes To get the beta, log in to your account at https://account.flexsim.com, then go to the Downloads section, and click on More Versions. It will be at the top of the list. The More Versions button does not appear when logged in as a guest account. Subsequently the beta is available only to licensed accounts and accounts that have a license shared with them. Learn more about downloading the best version of FlexSim for your license here. If you have bug reports or other feedback on the software, please email [email protected] or create a new idea in the Development space.
View full article
One of the most powerful commands in FlexSim is the query() command. It allows you to run SQL-like queries on virtually any data structure in the tree. If you don't know what that means, or what SQL is, or why it would be good to have SQL in FlexSim, this article is for you. If you have general ideas, but you would like to know more, then this article is for you. This article is not about connecting FlexSim to an external database. If that is your goal, then this article is not for you. Basics - Tables Data is often arranged in a table, which very loosely means that data is organized into rows and columns. However, SQL (and therefore the query() command) was designed to work only on certain kinds of tables, that look something like this: Name Age Fur Color Scooter 6 Brown Spot 3 Brown Whizby 4 Black Notice the following points about this table: Each column has a unique name There are no row headers (although if your table in FlexSim has data in the row header, that's okay; we'll get to that later) The table is a list of things, and each row in the table represents a single thing. The columns tell you the data that is stored about each thing. In this table, each thing is a pet, and each row stores the name, age, and hair color (the columns) of each pet. If our data included another pet, it would make another row in the table. In database lingo, a row in a table is called a record. One other thing you need to know about this table is that it has a name (in this case, "Pets"). All tables in SQL have a name, and follow the format described previously. Basics - Tables In FlexSim FlexSim has several different ways you can store data. Most users employ Global Tables and Lists (found in the toolbox) to manage data in their model. More advanced users sometimes create tables or bundles on labels. Then there's the model itself, which stores your object's locations in a tree data structure. All the data about where and object is, and how big it is, is stored in the model tree. So which of these data structures meet the standards for a SQL table? As far as the query() command is concerned, all of them do. The query() command is flexible enough to handle any data structure. The trick is to imagine your data as a table. To do this, you need to be able to answer the following questions: How many rows are there? What columns will the table have? How do you get the data for each cell? Phrased another way, given a row and a column, how do you put data in the table cell? If you can answer these questions, you can use the query() command. Let's apply these questions to two data structures in FlexSim: the Global Table, and the Global List. For the Global Table, the answers are very straightforward, but follow along to get the hang of it: Q: How many rows are there? A: The number of rows in the Global Table. Q: What columns with the table have? A: The same columns as in the Global Table. Q: How do you get the data for each cell? A: Given the row and column, look up the value in the Global Table For the Global List, things get a little more interesting: Q: How many rows are there? A: The number of entries on the list. Q: What columns with the table have? A: There is a value column, and there is a column for each field on the list. Q: How do you get the data for each cell? A: Remember that each row represents an entry on the list. For the value column, I get the value that was pushed on to the list to create the entry. For each field column, I get the value of the field for that entry. For example, suppose you have this list: Then supposed that you pushed a 5, 23, -12, 7, and 2 on to this list. When you view the entries on the list, you can see the data on this list laid out as a table: Notice that the value column has the values that were pushed on the list. The field columns (Doubled, Tripled, OddOrEven, and IsNegative) are each filled with the values of that field. The query() command has built-in support for Global Tables and Global Lists. However, it is always important to remember that to the query() command, the data is laid out in a table. If the data is not laid out in a table, you can still use the query() command, but you will need to use the methods explained in the Explicitly Defined Tables section. Basics - Queries SQL stands for Structured Query Language, so we can guess that it is a language for making queries. So what is a query? In a general sense, a query is a question. In SQL, a query is a question with two parts: who are you asking, and what do you want to know? There is a general answer to both parts of the question, and this is where tables come in. The answer to the first part (who are you asking?) is always a table. A SQL query is always directed at one (or more) tables. The answer to the second second part (what do you want to know?) is usually a new table. A SQL query takes in a table, and gives back a new table. The power in SQL comes from the new tables you can make. You can make a table that is a sorted version of the old table, like sorting data in excel. For example, if you have a list of items that need to be processed, you can sort that list by the item's priority. You can also make a table that is a filtered version of the old table, meaning you only kept certain rows. For example, if certain operators can only do certain tasks, you can make sure to only include the tasks that operator can do. In fact, you can make a table that is filtered, sorted, and modified in several other ways all with one query statement. Basics - Queries in FlexSim Let's look at examples of the query() command. You can follow along using the attached model ( numberlist.fsm). That model has a script that pushes values on to the list, and then queries the list. It also puts the result into the Global Table called QueryResult. Let's look at the line of that script with the query() command: int newTableRows = query("SELECT value FROM NumberList"); This line has a lot of new material. You can see that the query() command takes at least one argument, which is the text of a SQL query. We'll discuss the query itself in a moment. The query() command takes in the SQL query, and creates an internal (and invisible) temporary table that contains the result of the SQL query. It then returns the number of rows in the temporary table. Since you can't readily see the new table made by the query() command, you may want to copy the temporary table to a global table, using the dumpquery() command, as the script does: dumpquery(reftable("QueryResult"), 1); The temporary table lasts until you run the query() command again. Now for the query itself. You can see two parts of this query. The question "What do you want to know?" is answered by the SELECT statement. The question "Who are you asking?" is answered by the FROM clause. In this case, the FROM clause just lists one table, the NumberList. Recall that even though the NumberList isn't technically a table, you can visualize it's data as a table, which is what the query() command does (you can always right-click the NumberList in the Toolbox and choose the "View Entries" option to see the data as a table). In this example, the SELECT statement lists a column name. This means that the resulting table will have 1 column, because only one is required by the SELECT statement. When you run the script, it will put the result of the query in the QueryResult table: Notice that this table has only one column, the value column. If you look at the NumberList entries, you will see that this column is identical to the value column in that table. Examples To give you a general idea of what you can do with queries, these examples show a few common tasks. The examples all query the NumberList, which can be visualized as the following table: Selecting Multiple Columns SELECT value, IsNegative FROM NumberList Filtering SELECT value, IsNegative FROM NumberList WHERE IsNegative == 1 SELECT value, OddOrEven FROM NumberList WHERE value >= 5 Sorting SELECT value, Doubled FROM NumberList WHERE value >= 5 ORDER BY value Advanced - Callback Values It is often necessary to create a dynamic query. In FlexSim (not in regular SQL), you can do this by replacing a value in a query with a $n variable. This variable corresponds to additional parameters in the query() command. If you specify $1, then the value in the query will be the first additional parameter in the query() command, $2 will correspond to the second, and so on, up to $9. For example: query("SELECT Col1, Col2 FROM MyTable WHERE Col1 > $1 AND Col2 < $2", 10, 20) This query creates a table with Col1 and Col2, but only the rows where Col1 is greater than 10, and Col2 is less than 20. It is possible to include the values 10 and 20 in the query text. However, the $ variables allows you to easily change the value in the query, and replace them with more complicated expressions. Note that using callback values in a query where the FROM value is a Global List is not supported before versions 16.0.6/16.2.1. Advanced - Explicitly Defined Tables and the $iter() command Another FlexSim-specific feature of the query() command is the ability to explicitly define a table. This means you can query data that isn't arranged in the table format. In order to do so, you will need to answer the questions posed above, but shown again here: How many rows are there? What columns will the table have? How do you get the data for each cell? Once these questions are answered, the query() command can treat your data like a table. Each of the following subsections will answer these questions in detail. Defining the Number of Rows Let's start with a simple example: query("SELECT 1 FROM $1", 5) Notice that we are selecting from a number, not a Global Table or Global List. When the query() command sees a number instead of a table in the from statement, it assumes that you are querying a table with that number of rows. The statement above yields the following table (after a call to the dumpquery() command): This table has five rows, because $1 (the first additional parameter) evaluates to 5. All the rows have the value 1 because SELECT can handle expressions as well as column names (or expressions involving column names). Note that defining a table will only work if you use callback variables. A from statement like FROM 5 is not valid. To determine the number of rows in the table, use callback variables in the FROM statement. Defining the Columns To define the columns of your table, use the SELECT statement. Each expression in the SELECT statement will result in a column. When you are explicitly defining a table, you will often use callback variables as columns. This is where we can take advantage of the query() command. The query() command is very different from most other commands, because most commands only evaluate their parameters once. The query() command, however, can evaluate its parameters as many times as it needs to. Let's look at another example: query("SELECT $2 FROM $1", 5, normal(0, 1)) The result of this query is the following table: Notice that the second parameter, corresponding to $2, was re-evaluated as many times as the query needed it. Getting the Value in Each Cell Finally, we need a way to access the correct value for a given row and column. To do that, we need a way to know which row we are currently dealing with. This is where the $iter() command comes in. For example: query("SELECT $2 FROM $1", 5, $iter(1)) The $iter() command accepts an argument. That argument should match the value of the callback variable, e.g. if you used FROM $1, then the $iter() command should take a one as an argument. The $iter() command is linked to the query() command, so that its return value depends on which row is being evaluated. The above query results in the following table: Notice that $iter(1) returned the row number for each row. Now we can begin to query the tree, as if it were a table. Let's start with a simple example. Suppose you wanted a table of all the names of the first-level subnodes of the model tree. Let's start by answering the three questions: Q: How many rows are there? A: The number of first-level subnodes of the model Q: What columns with the table have? A: A column for the name of each of those subnodes Q: How do you get the data for each cell? A: Given the row number, get the name of that object Let's translate those answers into a query. First, we need to query something that isn't in table format already, so we know we need to use callback variables in the FROM statement: query("SELECT ... FROM $1", ..., ...) Next, we need a column for the names of all the subnodes, so we add one to the select statement: query("SELECT $2 FROM $1", ..., ...) Next, we need to answer the question of how many rows there are. Since this is the number of subnodes, you can write that as content(model()): query("SELECT $2 FROM $1", content(model()), ...) Finally, we need a way to get the name of each of the subnodes. We know that $iter(1) will give us the values from 1 to content(model()), so we can use those values in the rank() command, and we can pass the result of the rank() command to the getname() command: query("SELECT $2 FROM $1", content(model()), getname(rank(model(), $iter(1))) ) After dragging in a few random objects into the model, you can run that query. If you use the dumpquery() command, you can get a table like this: In the previous example, we used the value from $iter(1), and passed it in to rank(), and from rank() to getname(), all to get the name of the nth subnode of the model. Since querying a node in this way is fairly common, the query() command also allows you to specify a node as a table, rather than a number. In this case, $iter(1) will iterate over all the subnodes of $1, rather than the values 1 to $1. This makes our query much simpler: query("SELECT $2 FROM $1", model(), getname($iter(1))) Advanced - Flattening Data There is another option for what you can query in a FROM statement. If you use a callback variable (like $1) as your table, then you can use flattening syntax, shown in the following example: query("SELECT $3, $4 FROM $1x$2", 3, 2, $iter(1), $iter(2)) This query makes the following table: Notice that for every possible value of $1, there is a row for every possible value of $2. That is the purpose of the x (called the flattening operator); it ensures that there is a row for each permutation of all the callback variables involved. A query containing FROM $1x$2x$3x$4 would produce a table with enough rows for each unique combination of $iter(1), $iter(2), $iter(3), and $iter(4), and then execute the query on that table. The user manual contains an excellent example of when flattening syntax might be helpful, shown in the help manual in Miscellaneous Concepts > SQL Queries > Example.
View full article
Failed to connect to the license server   Have you ever encountered this error?   ERROR: flxActAppActivationSend - (50041, 41143, 34) "Failed to connect to the license server or Operations server. Recover: check connection and that server is operational."       This error indicates that your computer is not able to communicate with FlexSim's license server.   If your computer is purposely air-gapped, please use the Manual XML licensing methods listed at the bottom of this article.   Protocols, ports, and addresses   A license activation or return will attempt to make HTTP (port 80) and HTTPS (port 443) connections, currently with the following servers:   flexsim-fno.flexnetoperations.com license.flexsim.com www.flexsim.com sw.flexsim.com sw1.flexsim.com   Make sure these communications are allowed on your network.   To make sure you maintain compatibility with any possible future changes to our server configurations, consider configuring your network to allow communication with any *.flexsim.com subdomain.   Troubleshooting   Any of the following could prevent your FlexSim software from communicating with FlexSim's license servers:   Your computer is air-gapped or otherwise blocked from communicating over the Internet. The FlexSim software is not allowed to communicate over the Internet. FlexSim's above-listed addresses are blocked on your network or computer. Your network communicates through a proxy service but you haven't configured the proxy server settings inside FlexSim. FlexSim's license server may be down due to some outage or maintenance.   Let's look at solutions for each possibility:   1. No communication / connection issues   If your computer is disconnected from the Internet, you will need to connect in order to activate or return a license online. If this is not possible, please use the Manual XML licensing methods listed at the bottom of this article.   You may also see this error if you're on a flaky wi-fi connection, or a slow network connection. The communication must be solid enough that it does not time-out, where the client software is able to receive a response in a timely manner. If you are connected to the Internet but on a slow or unreliable connection, you can fall back to the Manual XML licensing methods, or you can retry the online activation multiple times - it may eventually complete successfully after several attempts.   2. FlexSim's communications are blocked   If your computer is connected and you can visit other sites, but FlexSim's licensing actions are still blocked, it could be due to an anti-virus solution or other security measure preventing the FlexSim Software's communications. Work with your IT team to disable such measures and test if FlexSim is allowed to communicate. If so, configure your security measures to allow FlexSim to communicate for licensing purposes, or if that is not possible, use the Manual XML licensing methods listed at the bottom of this article.   3. FlexSim's license server is blocked   Perhaps one or more of FlexSim's license server addresses (listed above) is blocked on your network. This could be a deliberate blocking of a specific address, or more likely a general block of a wider range of sites or IP addresses. Work with your IT team to determine if this is the case and if the block can be removed. If that is not possible, use the Manual XML licensing methods listed at the bottom of this article.   4. Proxy is not configured   If your network settings require that FlexSim communicates through a proxy server, you'll need to configure the software to do so.   For FlexSim version 23.0 and higher you'll do this directly in the software. From FlexSim's main menu, navigate to Help > License Activation > Advanced > Proxy Details. Fill in your proxy server information and click the Apply button.     If you're using an older version of FlexSim, you can download this attached model. This is an older model file compatible with FlexSim version 5.0 and up. It has a Model Control GUI that is an extension to the License Activation window that includes this extra tab where you can put proxy details.   proxy-details-v5.fsm   5. License is already activated but fulfillment is broken   The license you're trying to activate may already be activated on your computer, but in a broken or unusable state.   Follow the instructions for your license hosting situation to remove the broken fulfillments:   Standalone - Delete fulfillment License Server - Delete fulfillment   6. License server offline   There are circumstances when FlexSim's main license server can go offline. Most commonly this is due to regular updates or patches being applied. In this case the server will return to normal operation shortly. Please be patient and try again in a few minutes.   In cases where longer maintenance is planned you will find a notification at the top of this community indicating the purpose, date/time, and expected duration of such maintenance. This notification will be given as early as possible to help you plan around such downtime.   In rare circumstances an outage could be caused by a failure in one or more of the license server's databases, operating system, server hardware, networking, or data center. When such an outage occurs, we will post a notice at the top of this community and work to restore service as quickly as possible.   Help! I need support!   If none of the above suggestions work for you, please open a support ticket and include as many details as possible about what you've already tried and what you see happening.   Please be aware that if FlexSim's license server is online and other clients are able to activate and return their licenses successfully, that the issue is within your organization's network or on your computer. The proper place to turn to for support will be to your own internal IT teams. The above information, including the protocols, ports, and addresses and the different troubleshooting suggestions should be enough information to solve the issue.   Manual XML licensing   If you are not able to allow FlexSim to communicate over the Internet, please use our manual XML activation/return methods for offline systems:   Standalone - Activation - XML / Offline Standalone - Return - XML / Offline License Server - Activation - XML / Offline License Server - Return - XML / Offline  
View full article
Introduction to lmtools   This article is a sort of table of contents to the various articles that will take you from start to finish in installing, licensing, configuring, and running your FlexSim license server using the lmtools license manager.   background info   Server-based vs Standalone licensing - Learn the differences between these two license models, and when you might choose one over the other. License managers - lmadmin vs lmtools - FlexSim supports these two FlexNet license managers. Learn the differences, and why FlexSim recommends lmtools.   Let's get started   When installing a new license server, start here at the top and work your way down the list of articles linked below. By the end you should be in good shape to properly host and serve your FlexSim licenses.   Each link should open in its own browser tab, so once you complete a sub-task just close that tab. Then back here in this main tab click the link to the next step.   The list of links below might seem intimidating, but conceptually it's just 4 main things we're about to work through:   Preparation and Prerequisites Activate licenses to your license server Configure the licensing service Configure client PCs   If you run into any problems, you can also find additional helpful resources linked at the end of this article:   Troubleshooting Related links     1) Preparation and Prerequisites   System Requirements - almost any Windows computer could act as your license server. Click inside for the details. Download files - download the required lmtools files and extract them to an appropriate folder on your license server. FlexNet Licensing Service 64 - FlexSim is licensed using Revenera's industry-standard FlexNet licensing platform. This article prepares your license server with the background service necessary for hosting your FlexSim licenses.   2) Activate licenses to your license server   Choose the right steps below to license your server, depending on whether or not your license server can communicate over the internet directly with FlexSim's main license server.   • Online, Internet-enabled systems   License Server - Activation - Online - Activate your FlexSim licenses to your license server directly over the Internet. Should be easy-peasy. • Secure / Offline / Air-gapped systems   If your license server will not connect to the Internet (or if for any reason it cannot communicate with FlexSim's license servers) there are a few extra steps to get up and running. You've got this!   Configure Trusted Storage - Your new license server has a secure storage area for holding license info, but first it must authenticate with FlexSim's main license server. License Server - Activation - XML / Offline - the manual steps to activate your FlexSim licenses onto your license server.   3) Configure the licensing service   Configure your license service - use FlexNet's lmtools license manager to create and configure the service that will serve up your FlexSim seats. Add Windows Firewall exceptions - your licensing service needs to communicate with other PCs on the network. This will get you started.   4) Configure client PCs   With your license server installed and configured, it's finally time for your license server to fulfill its destiny and serve licenses to your client PCs.   Make sure you know the IP address or fully qualified domain name for your license server, as well as the license service port number (see #1 under Check the service status). You'll use your server's address/name and service port when configuring the client PCs.   FlexSim Version Numbering - your FlexSim license is for a particular version of FlexSim. If your software maintenance is not current, you may need to use an older version of the software. In this article you'll learn how licensing works for a given version number and where to download an appropriate version of FlexSim that will work with your license. With an appropriate version of FlexSim installed on the client PCs, you're ready to configure them to communicate with your license server. There are two ways a client PC can be configured. Choose the method below that most closely matches the main use case for your client PC:  Single-user client PCs - this method configures settings that are saved on a per-user basis. Multi-user client PCs - usually appropriate for a university computer lab or other shared-PC situation, where the configuration should be computer-based. Verify client PC licensing - Not sure if your client PC is getting licensed properly? Dive in to find out how to tell your client PC is successfully getting a license from your new license server   Troubleshooting   Isn't there a law in the universe that if something can go wrong, it will? If you're stuck in a licensing black hole, these tips might be just the thing to help you get moving.   Client/server connectivity - if the client PC and the license server can't communicate, the client PC won't be able to get a license. Troubleshooting tips - when you're pretty certain that connectivity isn't an issue, but your client PC still isn't getting a license, check here for some ideas.   Related Links   FlexSim's license file - your new licensing service uses a license file to specify port numbers. Get more background on license files and ports here.  
View full article
Introduction Several times per year we release a new feature-version of FlexSim Simulation Software. In order for your PCs to be able to run a licensed version of the upgraded software, you'll need to upgrade your standalone FlexSim license. Licenses with a current maintenance subscription are eligible to be upgraded to the new version. If you don't understand how licensing works for different FlexSim versions, please review our Answers article FlexSim Version Numbering. Overview After installing your new version of FlexSim, there are 3 main steps to upgrading your standalone license: Return the licenses you intend to upgrade Upgrade your licenses Activate the upgraded license Several of these steps have their own fully documented procedures. We'll link you to those resources below. 1. Return the licenses you intend to upgrade The steps to return a standalone license are fully documented. Choose the link below that best matches your needs, depending on whether your PC can connect to the Internet: Standalone - Return - Online Standalone - Return - XML / Offline Be sure to return ALL licenses you wish to upgrade. 2. Upgrade your licenses NOTE: Licenses with expired maintenance will not upgrade. Timed licenses do not upgrade. Only permanent (not timed) licenses under current maintenance can be upgraded. Log in to your FlexSim Account. If you were already logged in to your FlexSim Account, in the top navigation menu hover over your initials icon and choose Reload Account. Now in the top navigation menu, choose Licenses > List. Check that the available seat count is equal to the total. All of a license’s seats should be returned for it to upgrade. Click on the Upgrade Licenses button. If you have several licenses to upgrade and all are owned by or shared with your FlexSim Account, they will all be upgraded at once. Please be patient while the upgrade process works in the background. When the page refreshes, eligible licenses will have a new activation ID for the latest version of the software. Your license code indicates its version at the end of the code to help you know what versions your license will properly activate. Review license code format. You'll be able to use the upgraded license codes in the next step. 3. Activate the upgraded licenses The steps to activate a standalone license are fully documented. Choose the link below that best matches your needs, depending on whether your PC can connect to the Internet: Standalone - Activation - Online Standalone - Activation - XML / Offline If you have any questions or problems, please search our Answers Community for possible solutions. There is a good chance someone else has already asked your question. Still not finding what you're looking for? Submit a new question and we'll check it out. If you're including any confidential information, such as license codes, be sure to mark your question as private! You can also contact your local FlexSim distributor for live phone, web, or email help.
View full article
FlexSim 2024 Update 2 is now available for download. You can view the Release Notes in the online user manual. FlexSim 24.2.0 Release Notes For more in-depth discussion of the new features, check out the official software release page: FlexSim 2024 Update 2: Curve Fitter, Process Flow Breakpoints, and more If you have bug reports or other feedback on the software, please create a new idea in the Bug Report space or Development space.
View full article
Top Contributors