FLEXSCHE Version 20
FLEXSCHE version 20.0 was released on June 24, 2021. Version 20 is a commemorative release marking the 20th anniversary of FLEXSCHE Corporation, featuring over 215 enhancements. Here are some of the main features. (Differences between version 19.0 and version 20.0)
FLEXSCHE DataTuner
Facilitates the easy realization of improved scheduling accuracy and validity
"Creating highly accurate plans that align with reality" is one of the major challenges in production scheduling. To achieve this, it is essential to "appropriately allocate" the capacity of each process.
However, it is not always possible to grasp the capacity of all processes from the start, which can be a challenging issue in many implementation projects. Moreover, most processes have temporal "fluctuations," making it necessary to repeatedly measure to determine reasonable values.
The new product FLEXSCHE DataTuner, released alongside version 20, contributes to the creation of highly accurate and reasonable plans by accumulating sample data of operation times based on operation results daily and presenting estimated values derived from statistical processing.

Update Capacity Values Based on Estimates
After the operation of FLEXSCHE DataTuner begins, a sufficient number of sample data will accumulate over time, allowing for analysis. The relationship between the current capacity values, newly estimated capacity values, and the distribution of sample values is visualized, and the "recommendation level" of the new capacity values is also presented, enabling users to quickly and intuitively update capacity values.
DataTuner Console (Left) and DataTuner Panel (Right)
(If capacity is parameterized by skills or numerical specifications, it is analyzed in multiple dimensions)
It is common to assign a common capacity value to multiple machines considered to have the same performance, only to find significant capacity differences upon actual use. FLEXSCHE DataTuner detects this difference and visualizes and presents a division proposal, allowing for easy capacity definition division with simple operations.

Before (Left) and After (Right) Capacity Value Division
Confirm the coexistence of resources with different capacities and divide them with just a double-click operation
By utilizing these mechanisms, it is possible to initially assign rough capacity values and gradually subdivide and detail them, lowering the barrier to building a production scheduling system.
In Conjunction with FLEXSCHE CarryOut
Statistically reasonable plans form the foundation for appropriate plan execution, but they are not sufficient on their own.
This is because the aforementioned "fluctuations" hinder manufacturing according to the plan. It is important to accept and adapt to these "fluctuations" while executing the plan, and FLEXSCHE CarryOut provides the mechanism for this. Proper operation of FLEXSCHE CarryOut naturally yields accurate result information, creating a complementary relationship that is mutually beneficial.
Provision Method of FLEXSCHE DataTuner
In addition to being sold as a standalone optional product, it is also offered as part of the cost-effective FLEXSCHE CompletePack.
Note that sample data can be accumulated regardless of whether you have a license for FLEXSCHE DataTuner.
New HTML Embedding Functionality
It is now possible to embed rich HTML content into FLEXSCHE.
Previously, it was possible to embed HTML views in FLEXSCHE as a DHTML feature, but the embedded browser did not support new features, making it impossible to create rich pages.
This time, by incorporating a new browser compatible with HTML5, it is possible to create more advanced web applications on FLEXSCHE using features realized by HTML5.
Since it is possible to access FLEXSCHE objects from web applications, you can freely build systems by accessing them to send commands or creating input forms to reflect in records.
Simple Control Panel

The feature added using this new functionality is the Simple Control Panel.
As a web application, it accesses FLEXSCHE objects to retrieve scheduling rules and EDIF definitions and displays them on buttons. Pressing the buttons executes the respective rules or EDIF.
Since HTML code is provided, you can also add features based on it.
Scheduling/Modeling
Operation-driven Dispatching Method
Dynamic Operation Splitting by Resource Volume

It is now possible to set volume as a constraint for resources. Whether an operation fits within the volume is determined by considering the density of each item. Operations can also be automatically split to fit within the volume. For example, if the link quantity of an operation is set to mass, while the capacity of the resource is essentially limited by volume (not mass), it becomes necessary to change the limit value according to the density of the item being stored, unlike traditional capacity constraints that attempt to constrain by converting to mass.
By using volume directly as a resource constraint, the setup becomes simpler.
Enhanced Exploration by Resource Route
When exploring process constraints by resource route, it is now possible to limit route extraction to only major tasks. This improves scheduling efficiency in cases where there are many sub-resource options or constraints that chain across multiple processes.
Additionally, a "Resource Route Selection" page has been added to the method settings, making it easier to specify evaluation criteria for each route.
Specification of Planning Period Start Time
It is now possible to specify the planning period start time individually for each operation assignment. For example, you can easily set a confirmed planning period for each resource to prevent new operations from being assigned within that period.
Enhancement of Operation Results
Difference Results in Operation Result Subdivision

It is now possible to specify information on individual fragments from the start (or resumption) to the interruption (or end) of a result operation as Operation Result Subdivision records (Type: RI).
The detailed times are also reflected in the Resource Gantt Chart. Additionally, if you specify the progress rate ("Interval Progress Rate") for each difference, the manufacturing pace for that portion is reflected in the Inventory Level Chart.

Result Quantity Backflush
When specifying the result manufacturing quantity for an operation, you can now uniformly update the quantity of each consumed item in the operation according to the original manufacturing-to-consumption ratio. This is convenient when there are many items consumed in the operation, making it difficult to specify the result quantity for each one individually.
Special Key
There are now more variations in specifying various special keys. What previously required notation in a formula can now be achieved with special formats selectable from a menu.
Special Key String as Numerical Specification Key
When specifying the numerical specifications of related objects (primary resources, linked items, etc.) as special numerical specification keys for operations, there are now more variations in special key specifications. Various objects can now be referenced as numerical specification keys.
- General: Process Code
- General: Process Local Code
- General: Order Item Code
- Specification Key: Order Item Specification Comment
- Task Key: Task Resource Code
- Comment Key: Task Primary Resource Comment
For example,作業において「主資源の数値仕様<キー:オーダー品目コード>」to表すExpressionは、従来は
.AssignedResource.NumSpec(.Order.Item.Code)
had to be expressed as
.NumSpec('#tnsp.%oi')
but now it can be expressed as

using a special numerical specification key, and it can also be specified as a special format selectable from the key selection integrated into the GUI.
Enhance Indirect Reference with Special Skill Key
It is now possible to specify the following new skill keys.
- Process Comment
- Process Specification
- Process Specification Comment
Modeling such as putting a skill pattern you want to reference in the process comment can be easily realized.
Workshop Planning
Link Workshop Area Constraints with Sub-Resources
When there are sub-areas within a workshop, it is now possible to limit the areas that can be placed according to the sub-resources of the operation. This can be applied to various cases. For example, if there is a weight limit for each sub-area, you can easily achieve this by preparing sub-resources corresponding to the sub-areas and setting the resource quantity to weight.
Resource-Driven Workshop Planning
It is now possible to plan placements in workshops using the Resource-driven Dispatching Method.
User Interface
Job Viewer
The job view of the Operation Viewer (which graphically displays the network of operations) can now be displayed as an independent view.
When you want to display a large operation graph, the docked Operation Viewer may render it small or require scrolling, making it difficult to view. With a separate view, you can display it larger and easily use full-screen display in a multi-monitor environment.
Additionally, you can create multiple job views simultaneously, allowing you to view various operation graphs side by side.
Merge Display of Multiple Projects
It is now possible to consolidate and display data divided into multiple projects in a single window.
By importing snapshot files output from each project into one project and using automatic row configuration rules that reference them, you can freely create a timeline chart with mixed chart rows of each data.
Add [Full Search by Record] in Various Places
Previous VersionThe "Batch Search Function" added in the previous version has been enhanced, allowing full record searches from various locations (e.g., task pop-up menu in the Resource Gantt Chart).
For example, if you search for an operation, records can be found in various places such as the Resource Gantt Chart, Order Gantt Chart, Operation Data, and Operation Viewer.
The search results are displayed in a list on a panel, allowing you to quickly jump to each location.
Renewal of Splash Window
The screen displayed when starting FLEXSCHE or checking version information has been graphically renewed, and the displayed information has been increased.
Manage Scheduling Panel with Folders

It is now possible to create folders arbitrarily on the Scheduling Panel. You can place subfolders and rules within the folders. You can freely categorize and manage scheduling rules according to their processing content and purpose.
Display Pegging Destination in Order Gantt Chart
In the Order Gantt Chart row, it is now possible to display operations of other orders connected by order pegging or operation connection. This includes further upstream of the upstream pegging destination and further downstream of the downstream pegging destination. This makes it easier to grasp the assigned dates and times of operations related to other orders.

Operations of other orders can be displayed on the same rack, on a different rack, or even specified individually.
Propagate Operation Split Downstream
When splitting a single operation, it is now possible to apply the same split process to downstream operations. It can also be applied to downstream operations connected by split operations. The same applies to merge operations, allowing downstream operations to be merged together.

Additionally, the same functionality has been added for automatic splitting by the Split Operations Method. Although it was possible by devising two Split Operations Methods and the Mark Operations Method, it is now easier to apply splits to downstream operations.
FLEXSCHE EDIF
New Filter in EDIF Configuration Tool
In addition to the conventional table mapping filter by EDIF group, it is now possible to filter with FLEXSCHE tables and external tables associated with that table mapping. You can easily filter things like only table mappings related to processes or only those linked with specific CSVs.

Expand Flexibility with Expressions
It is now possible to specify expressions for keyed fields in EDIF import. For example, when importing numerical specifications into a single field, the conventional method required preparing data in a predetermined format like "100/NS1;200/NS2", but now you can specify expressions to import without processing by referencing multiple fields with expressions.
Additionally, expressions can now be specified for key specifications in EDIF field separation. For example, when importing multiple numerical specifications in sequence, you can simplify the mapping definition by referencing the iteration variable in the key with an expression to import the specified number of times determined by the iteration variable.

Data to be Imported
FLEXSCHE WebViewer
SSL Support for Server
The FLEXSCHE WebViewer server now supports SSL. By specifying a certificate, secure communication can be achieved.
Expression
Parallel Execution of Expressions
In the automatic planning of schedules, the search process for operation assignment, which occupies a significant weight, is executed in parallel to improve performance. However, when operation times and time constraints were defined using expressions, these calculations were not executed in parallel.
By parallelizing this, scheduling time has been reduced even in cases where such master settings are used.
Sample Case
- Number of Operations: 10,000
- Number of Candidate Resources: 50
- Specify expressions for manufacturing time and minimum time constraints
Parallelization Off 8.0 seconds Parallelization On 6.4 seconds Achieved a 20% speed increase
Editing Expressions
Enhancement of Expression Editing Screen

In addition to traditional comments, constants and strings are now color-coded for better visibility during editing. Also, when a function is selected and the help button is pressed, the help page for the function opens.
Multiline String Syntax (Here Document)
When you want to output a string that includes line breaks, you can now represent it as is, without concatenating the string with line break characters. Prefix the string with "@".
Detailed Error Information
When an error occurs during the testing of expressions, detailed error information is now displayed. Details of syntax errors and runtime errors are shown, and if the location of the error can be identified, you can jump to that location.
Executing Scriptlets in Expressions
While a lot can be done with traditional expressions, there are insurmountable barriers due to data protection and structural reasons. For example, access to resource table objects with complex array and tree structures is almost impossible.
By using the Script function added in version 20, scripts that fully access FLEXSCHE's COM model (only JScript) can be used within expressions. Compared to the traditional solution of "external functions," there is no need to prepare a separate script file, and it is also advantageous in terms of performance.
* "Scriptlet" means "a small script."
There are two notations for scriptlets: a "simple notation" using a single evaluation expression in JScript, and a "complete notation" that includes control structures and function definitions, returning results with a return statement.
In the following example, the simple notation returns the number of timeline elements of the context resource (which cannot be obtained with traditional expressions).
Long.Script("=_arg1.PrimaryTimeSeries.Count",$_object)
The following example uses the complete notation to check if the resource table of the context process contains a capacity value that is not proportional to the link quantity.
Bool.Script(@" var procRec = _arg1; var cBOR = procRec.CountOfBORRecs; for(iBOR=0;iBOR<cBOR;iBOR++) { var borRec = procRec.BORRec(iBOR); var cTasks = borRec.CountOfTasks; for(iTask=0;iTask<cTasks;iTask++) { var cUsables = borRec.CountOfUsables(iTask); for(iUsable=0;iUsable<cUsables;iUsable++) { var cUTs = borRec.CountOfUsingTimes(iTask,iUsable,SDTaskPart.SDTPartManufacture); for(iUT=0;iUT<cUTs;iUT++) { var method = borRec.UsingTimeMethod(iTask,iUsable,SDTaskPart.SDTPartManufacture,iUT); if(method==SDUTCMethodDuration||(method==SDUTCMethodCapacity&& (borRec.CapacityUnit(iTask,iUsable,SDTaskPart.SDTPartManufacture,iUT) &SDBCUnitPer_Mask)==SDBCUnitPer_None)) return true; } } } } return false",$_object)
While scriptlets are powerful, they can also have effects, making them a "double-edged sword" that can potentially damage internal states. Please use them only when absolutely necessary, with a correct understanding of programming in FLEXSCHE.
S-Curve Functions
In manufacturing, nonlinear calculations are often required, such as the phenomenon where unit costs decrease with cumulative production volume, known as the "experience curve effect." As shown in the diagram, when mass production begins, efficiency is low due to unfamiliarity, but as mass production progresses, efficiency gradually increases, eventually reaching close to the theoretical upper limit.
To reflect the above situation in production planning, several S-curve takt functions, including Math.Logistic, have been added. For example, in the case of a Logistic curve, the following takt expression
$y := Math.Logistic(x, x_0, L, k)
returns the function value of the independent variable x for a curve with parameters (x_0, L, k). The parameters (x_0, L, k) control the Logistic curve as shown on the right above.
By using the above takt function and aggregating cumulative production volume with stored variables, it should be possible to reproduce "improvement in production efficiency with increased cumulative production volume."
In addition, functions representing S-curves such as Math.Erf and Math.Tanh have been added.
List of Added Functions
The number of functions available in expressions has increased, further expanding what you can do.
For Developers
Reduce Frequency of Script File Reloading
The advantage of scripts is that they can be easily modified and experimented with on the spot, but there was unnecessary overhead because they were reloaded every time to reflect changes.
Therefore, we improved it to reload only when necessary by checking the last update time of the script file. This significantly speeds up cases where compact processing, like external functions, is repeatedly executed.
Other
Guide to License Setup When Opening as Evaluation Version
When starting to use FLEXSCHE as a product version, it is necessary to set up the license, but the items and locations to be installed differ depending on the type of license, which can make the procedure complicated.
If license information is not found when starting FLEXSCHE, you can choose to start as an evaluation version or set up as a product version. The setup wizard screen allows you to complete the setup smoothly by following the guidance.

