Quantcast
Channel: Preactor International - Knowledge Base
Viewing all 69 articles
Browse latest View live

Preactor Express and SQL Server Express 2012

$
0
0
Preactor Express leverages user instances on Microsoft SQL Server 2005 to 2008 R2 Express versions (see further information). In SQL Server 2012 Express, user instances have been replaced by LocalDB (see further information). Preactor Express is compatible with LocalDB, although it currently requires its use in the context of a named SQL instance with the name SQLEXPRESS.

To use Preactor Express with Microsoft SQL Server Express 2012, install SQL Server Express with Advanced Services. Follow the procedure for the SQL Express installation described in the Preactor Express documentation, and at the Feature Selection page ensure that the option LocalDB is selected, then install Preactor Express normally.



Creating Rules and Tools in Visual Basic .NET

$
0
0
Visual Studio project templates are provided in the SDK directory of the Preactor installation folder. Instructions for use can be found in the Preactor API documentation. If you prefer to make your own projects, follow these instructions.

Prequisites:

Visual Basic 2008 Express Edition or a full edition of Visual Studio
Preactor Primary Interop assembly (will eventually be installed with Preactor).

If you are using Vista you will need to run Visual Studio as an administrator for the dll registration to succeed.

Instructions:

1. Create new Class Library Project.


2. Open the project properties window.



3. On the Application tab select ‘Assembly Information...’ check the ‘Make Assembly Com-Visible’ toggle

4. Select the Signing tab. Check ‘Sign the Assembly’ Select ‘New ‘ from drop down and give it a name. Add a password if you wish. This ensures it is possible to register the assembly.


5. Go to the Project menu and select add references. You need to add two references:
Choose the '.NET' tab. Select the Preactor.Interop.



Select Add References again and choose the ‘COM’ tab. Select the Preactor Type Library and Planning Board type library



6. Rename the source file: (e.g. Change Class1.vb to PreactorCustomActions.vb) this will also change your class name.



7. Open your source file.

8. Add at the top of the source file:

Imports Preactor
Imports Preactor.Interop.PreactorObject

9. Set the class property COM Class to true.



This is the simplest way of getting this to work, if you wish to maintain binary compatibility you will need to do some extra work.

10. Add method to class, e.g.:

Public Function CustomAction(ByRef p As PreactorObj, ByRef pesp As Object, ByVal s As String) As Integer     End Function

11. Within the method add :

        Dim preactor As IPreactor = PreactorFactory.CreatePreactorObject(p)

This will allow you to use the Preactor object in your code.

For Express editions of Visual Studio

If you are not using the Express Editions of Visual Studio you can ignore these steps.

In order to be able to register the dll and debug the code Save and close the project, then open the project file in Notepad

12. Add

<RegisterForComInterop>true</RegisterForComInterop>

to the sections entitled

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">

and

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

13. Add Preactor debugging info to the section

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<StartAction>Program</StartAction><StartProgram>C:\Program Files\Preactor International\Preactor10\preactor.exe</StartProgram><StartArguments>/SELECT</StartArguments>

This will result in the Preactor configuration selector opening when you start running the project in debug mode.

14. Re-open your Project, it is now ready for use.

For Full editions of Visual Studio

  • On the project properties page, check the box that says 'Register for COM Interop'
  • Open the Project properties page, open the Debug tab. Select Start executable program and enter:
     C:\Program Files\Preactor International\Preactor10\preactor.exe
    In the arguments type:
/SELECT





Creating Rules and Tools in C# .NET

$
0
0
Visual Studio project templates are provided in the SDK directory of thePreactor installation folder. Instructions for use can be found in thePreactor API documentation. If you prefer to make your own projects,follow these instructions.

Prequisites:

Visual C# 2008 Express Edition or a full edition of Visual Studio
Preactor Primary Interop assembly (will eventually be installed with Preactor).

If you are using Vista you will need to run Visual Studio as an administrator for the dll registration to succeed.

Instructions

1. Create new Class Library Project



2. Using the file menu, save your solution.

3. Open the project properties page. (Right click on the project in the project explorer window, and select properties)


4. Select the Build tab. Tick box that says 'Register for COM interop'.


5. Select the Signing tab. Tick ‘Sign the Assembly’ Select ‘New ‘ from drop down and give it a name. Add a password if you wish. This ensures it is possible to register the assembly.




6. Add 3 references to the Preactor COM Type Libraries and the .NET Interop assemblies:

Right click on the Project in the Project explorer window and select add reference:



Choose the '.NET' tab. Select Preactor.Interop. Click OK.


Right click on the Project in the Project explorer window and select add reference:



Choose the ‘COM’ tab. Select the Preactor Type Library and the Planning Board type library. Click OK.


Once all the required references are added correctly, the references node in the solution explorer should look like this:



7. Rename the existing source file: (e.g. Change Class1.cs to PreactorCustomActions.cs) this will also change your class name.



8. Open your source File (PreactorCustomActions.cs)

9. To the top of your source file add the following lines:

using Preactor;using Preactor.Interop.PreactorObject;

10. Create a public interface for your class, define your methods:

public interface IPreactorCustomActions{    int MyCustomAction(ref PreactorObj preactorComObject);}

The methods must take the PreactorObj as a ref param and it must also return an integer.

11. Implement your interface on your concrete object. Your source file should end up looking something like this:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using Preactor;using Preactor.Interop.PreactorObject;namespace PreactorTool{    public interface IPreactorCustomActions    {        int MyCustomAction(ref PreactorObj preactorComObject);    }    public class PreactorCustomActions : IPreactorCustomActions    {        public int MyCustomAction(ref PreactorObj preactorComObject)        {            return 0;        }    }}

12. Add attributes required by COM to your interface and concrete object:

...[ComVisible(true)][Guid("9C30CF27-C793-4469-BBB3-B02765CD06E8")]public interface IPreactorCustomActions...[ComVisible(true)][Guid("F213BD5A-B81D-48DC-8170-A773E9D0A245")][ClassInterface(ClassInterfaceType.None)]public class PreactorCustomActions : IPreactorCustomActions...

The Guids must be unique. If you are using an express edition of Visual Studio you will need to find a Guid generator on the internet (http://createguid.com). If you are using a full version of Visual Studio, you will find a Create Guid tool in the tools menu.

13. Now create an instance of the .NET wrapper preactor interface using the PreactorFactory object

IPreactor preactor = PreactorFactory.CreatePreactorObject(preactorComObject);

For Express editions of Visual Studio

If you are not using the Express Editions of Visual Studio you can ignore these steps.

In order to be able to debug the code Save and close the project, then open the project file in Notepad

14. Add Preactor debugging info to the section

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<StartAction>Program</StartAction><StartProgram>C:\Program Files\Preactor International\Preactor10\preactor.exe</StartProgram><StartArguments>/SELECT</StartArguments>

This will result in the Preactor configuration selector opening when you start running the project in debug mode.

14. Re-open your Project, it is now ready for use.

For Full editions of Visual Studio

  • Open the Project properties page, open the Debug tab. Select Start executable program and enter:
     C:\Program Files\Preactor International\Preactor10\preactor.exe
    In the arguments type:
     /SELECT























Preactor Crashes When Creating a Package

$
0
0

Symptom

Preactor crashes when creating a package within Preactor.

The contents of the preactorError.log file in the local temp directory include the following:

Exception Type: System.IO.FileNotFoundException

Exception Message: C:\Program Files\NVIDIA Corporation\CoProcManager\_etoured.dll

Cause

This error is caused by NVidia graphics drivers which ship with Dell laptops and the file _etoured.dll not named correctly.

Solution

Rename the file as detailed below:

For 32 bit versions of Windows:

Rename the file called 'detoured.dll' to '_etoured.dll' in the 'C:\Program Files\NVIDIA Corporation\CoProcManager' location.

For 64 bit versions of Windows:

Rename the file called 'detoured.dll' to '_etoured.dll' in the 'C:\Program Files (x86)\NVIDIA Corporation\CoProcManager' location.

OPENING STOCK and OPENING STOCK TIME Features Not Working

$
0
0

Symptom

Preactor will not allow any operations to be scheduled if the value specified in the OPENING STOCK TIME field is greater than the start of the scheduling horizon.

Cause

OPENING STOCK and OPENING STOCK TIME features have not been updated to work with secondary resource calendars when new calendar features were introduced in Preactor v10.

Solution

Add the following field to the 'Secondary Constraints' table in the Preactor.prtdf file:

Max. Value,0,INTEGER

SUBSTITUTE(0->"Follow Shift Pattern")

GRAPH HIGH VALUE:

Use the above 'Max. Value' field to define the maximum value for opening stock secondary constraints.  This is the value that is used as the constraint and what populates the plot.  The Max. value label detailed on the secondary resource plot is taken from the Max. Value defined for the Secondary Resource calendar, so you will want to make sure that the value specified in the Secondary Resource calendar matches what is specified in the 'Max. Value' field in the 'Secondary Constraints' table for the label on the plot to be correct.

Strictly speaking, the GRAPH HIGH VALUE classification is deprecated.  However, its use allows the OPENING STOCK and OPENING STOCK TIME features to operate correctly when a date within the calendar horizon is specified.  It is likely in the future that the GRAPH HIGH VALUE classification will be fully deprecated, and that future versions of Preactor will allow secondary resource calendars to be used in conjunction with OPENING STOCK and OPENING STOCK TIME and that a time within the calendar horizon can be specified.

 

Why are Resources Being Displayed in Red?

$
0
0

Symptom

Preactor is displaying resources in red text in the Sequencer Overview.

Cause

Setup Start, Start Time and End Time values are set as NULL in underlying SQL table, but a value has been assigned to the 'Resource' field.

Solution

Create a query in SQL that corrects the data.  The query should set the value in the 'Resource' field to NULL for all records where the 'Resource' field has a value and the Setup Start, Start Time or End Time fields are set as NULL.

Example>

UPDATE [TableName].UserData.Orders

SET [Resource]=NULL

WHERE[SetupStart]ISNULLAND [Resource] ISNOTNULL

The problem is most likely caused by bad import data.  This could happen where data intended for 'Required Resource' field has accidentally been imported into the 'Resource' field.  Another way this could possibly happen is that operation completion data has not been imported correctly.  Import data should be examined and corrected to prevent this problem from happening again.

Network Licenses not selectable from activation dialog (v12)

$
0
0
Symptoms/Observed behaviour
When choosing the 'Select the license you wish to use' option from the Activate Preactor wizard, Network Licenses that are active on the server do not appear in the list of selectable licenses.

Cause
The installed version of the Network License Manager (NLM) is earlier than 12.x. 

Resolution
The licenses on the server can still be used, but the .prcdf license details will need to be manually modified.

Alternatively, upgrade the NLM so that the licenses are selectable. On the license server, un-install the old version of the NLM and download and install the latest version from here.




Intermittent failure to load COM component on Windows XP

$
0
0

Symptoms/Observed behaviour

On Windows XP, on launching Preactor, an exception can occur with the message that it is failing to find a method in a dll library.

For example:  PrCost.EntryPoint, PreactorMultiCheckServer.EntryPoint.

Resolution

Download and install the attachment from Microsoft KB943232.


 

 


Flexnet License Conflict with Other Software

$
0
0
If another Flexnet licensed product is active on the Preactor Network License server, it can cause conflict issues and prevent Preactor from being able to access the licenses correctly. Conflicts can also arise from some anti-virus software being present.

To resolve this, Flexera's own license manager (LMTools) can be installed to manage all licenses - both Preactor and the other software. This entails removing the existing Preactor license manager service and creating a new one. We only recommend this as a last resort, as the UI and functionality is reduced when using LMTools rather than the Preactor Network License Manager. Refer to the troubleshooting and firewall configuration articles to see if a resolution can be found in them first:

If the issue remains, please contact support@preactor.com

-1 Error in Copy Control Licensing

User Procedure for Upgrading Licenses to Preactor 12

$
0
0

This article explains the procedure for users with versions of Preactor earlier than 11.1 who wish to upgrade. As of this version, a different type of license is required, and therefore arrangements need to be made to return your existing licenses before new licenses can be issued.

Follow the steps below to upgrade your license to 12.

1. Download and install the latest version of Preactor from http://www.preactor.com/Support/Downloads/Software.aspx. As of Preactor 11.1, a 30 day trial license is included with the software, so you can get up and running immediately. It is recommended though that you continue with the following steps to ensure that your full license entitlement is in place before that trial period expires.

2. Fill out the end user registration form on the Preactor website at http://www.preactor.com/Misc/End-User-Registration-Form.aspx.

3. You will be contacted by a Preactor support representative, who will issue an update for your existing licenses to apply a 30 day timeout. The procedure for applying this update varies depending on whether you have a software license or hardware license.  Each procedure is outlined below:

Software Licenses
When instructed to do so, you will need to request a license update. To do this, open the Preactor License Site Manager found in the Start Menu under Preactor International > Preactor > Utilities. In the License Site Manager right-click the appropriate licences and select 'Request License Activation / Update'. Shortly after you have sent the generated e-mail message, you will receive a response e-mail. Double-click the .prkey attachment to apply the 30-day time-out to your existing license. For confirmation that the update has been successfully applied, click the 'E-mail Support' button on the results dialog. Once we receive this confirmation, we will issue an activation ID for 12 which, once applied, will activate your 12 license with your full license entitlement.

Hardware Licenses
A support representative will e-mail you a .prkey file which, once applied, will set the license with a 30 day timeout date. Double-click the .prkey file to apply it to your existing license. Confirmation needs to be supplied to show that update has been successfully applied to your hardware license/HASP key.

If you have a network hardware license please run:
Start -> All Programs -> Preactor International -> Preactor x -> Utilities -> netHASP Key Status

If you have a local hardware license then run:
Start -> All Programs -> Preactor International -> Preactor x -> Utilities -> memoHASP Key Status.

Take a screen shot of the resulting dialog. To do this, make sure that the status dialog is the currently active window, and press Alt-PrtScn. This will create an image of the dialog in your clipboard, which you can then paste into an e-mail and send to support@preactor.com. After we have verified that the hardware license update applied successfully, an activation ID will be issued for 12 which, once applied, will activate your 12 license with your full license entitlement.

4. You now need to use your license activation ID to activate your license for 12. If you have requested a local license, you can activate your license in Preactor on startup, or using the License Utility. If you have requested a network license, you must have the Preactor Network License Manager installed, and activate the license using the Network License Utility.

In either case, select 'Activate Now' and click 'Next', then copy your activation ID into the field. Activation over the internet is the quickest and easiest way to activate. If you have no direct access to the internet, choose offline activation; you will need to save the generated files from this process and e-mail them to support@preactor.com. Complete the wizard to activate the product.

On clients that need to use a network license, you can select 'Activate now' when prompted, then select 'Network license'. Enter the name of the server with the Network License Manager installed to use the license on that server.

 

Your product should now be fully activated.

We ask that you return any de-activated hardware licenses to the following address:

Preactor International,
Cornbrash Park,
Bumpers Way,
Chippenham,
Wiltshire,
SN14 6RA,
UK.

Ops Being Left Unscheduled When they Should be Scheduled Using Backward Sequencing

$
0
0

Symptom

Operations are left unscheduled when scheduling backwards with constraint set as Increment from Start and Decrement from End.

Cause

Default high and low values are not defined, therefore a maximum and minimum of 0 is used.  The final check on the constraint is violated between 'time zero' and the scheduling horizon start because it exceeds the maximum allowed value.

Solution

Add two fields to the 'Secondary Constraints' table in the 'Preactor.prtdf' file defined as follows:

Max. Value,0,INTEGER,

GRAPH HIGH VALUE

DIALOG ONLY:

 

Min. Value,0,INTEGER,

GRAPH LOW VALUE

DIALOG ONLY:

Supported Setup for Existing 300 FCS Made From Users

$
0
0

The MADE FROM classification is deprecated and is no longer supported.  The MADE FROM classification specified in the Products table is no longer a supported setup.  A generic tool* has been created to accomodate existing users who may still be using MADE FROM specified in the 'Products' table.  The tool will copy links defined in the 'Products' table to an EXPLICIT MADE FROM INTERNAL field specified in the 'Orders' table.

The following files are attached to this article to provide guidance on how to make the required changes.

Conversion Process.doc - includes instructions for converting a configuration that had MADE FROM in 'Products' table to supported setup with links held in 'Orders' table.

300 FCS Made From (Supported Setup).zip - includes the changes specified in the 'Conversion Process.doc'.  This file needs to be renamed with .prpkg file extension.

P300MadeFromSetup.zip - Includes P300MadeFromSetup.msi file to install a tool that copies links.  This file needs to be run as detailed in the 'Conversion Process.doc'.

P300MadeFromCustomActions.cs.txt - Code that is from the P300MadeFromSetup.msi'

* Only to be used for existing users with MADE FROM specified in 'Products' table.  400 APS with EXPLICIT MADE FROM to be used with new users.

Not a legal OleAut date

$
0
0

Symptom

The following error occurs in the Sequencer:

'Unexpected error 5.

Not a legal OleAut date.Do you want to continue?

Cause

This error will happen when trying to save and there are invalid numeric values in a date field ('TIME').  The value must be between -657435.0 and 2958465.99999999.  The most likely scenario is having 999999999 in some fields, although obviously any number outside this range will cause the error.

Solution

Check any custom code where values are being written to 'TIME' type fields and make sure that they are within the valid range.

Migration Fails on Schema Upgrade to 11.13.1.0

$
0
0

Symptom

Migration Fails on Schema Upgrade to 11.13.1.0

Error message:

Detailed Exception Information:

The task 'Upgrade schema to version 11.13.1.0' failed. Details of the error are included below.

System.InvalidOperationException

================================

This SqlTransaction has completed; it is no longer usable.

Program Location:

   at System.Data.SqlClient.SqlTransaction.ZombieCheck()

   at System.Data.SqlClient.SqlTransaction.Rollback()

   at Preactor.StorageMapping.SchemaUpgradeTask.RunImpl()

   at Preactor.Task.Run()

   at Preactor.StorageMapping.SchemaUpgradeTask.Run()

   at Preactor.WinForms.Controls.TaskRunner.TaskRunner.a(Object A_0, DoWorkEventArgs A_1)

This SqlTransaction has completed; it is no longer usable.

Cause

Package migration encounters an issue when trying to delete a large SecondaryResourceAnalysis table in the schema update system.

Resolution

The work around is to run the following SQL statement against the database:

DELETE FROM ScheduleAnalysis.PrimaryResourceAnalysis

WHERE ScheduleAnalysis.PrimaryResourceAnalysis.DatasetId NOT IN (SELECT dataset_id FROM dbo.DatasetsSequencerOperations)

DELETE FROM ScheduleAnalysis.SecondaryResourceAnalysis

WHERE ScheduleAnalysis.SecondaryResourceAnalysis.DatasetId NOT IN (SELECT dataset_id FROM dbo.DatasetsSequencerOperations)

 


Software License Update Failure

$
0
0

Symptom

When attempting to run an update file to update the CopyControl (software) licensing system, a dialog displays: This Key Update file is designed for an earlier version of PR_KEY, please contact your system supplier.




Cause

This may be due to corruption of the update file during transit from the automated licensing server.


Resolution

Contact Preactor Support to ask that the update be issued again as a zip file.

Alternative Resolution

This error is also known to be caused by an earlier version of pr_key.exe. Download the latest version from http://download.preactor.com/support/Pr_Key.zip and extract the contents of Pr_Key.zip to the Preactor installation folder

Vb6Extensions.FormatAsDate has thrown an exception

$
0
0
Symptom

When running an import script the following error occurs:

System.ArgumentException

Vb6Extensions.FormatAsDate has thrown an exception: The specified Date Format MM/dd/yyyy can not be applied to the Date: 1/18/2000





Cause

This error is due to incorrect date formatting in the import data compared to what has been specified in the import script. 

Example:

Due Date in import data is being imported into Due Date field in Preactor. 

The date format of data being imported has been specified as mm/dd/yyyy (this is specified on Import Field Mapping screen of import script on Due Date field). 

Import data:

06/05/2014
6/5/2014

The data above would cause a formatting error because the 6/5/2014 does not conform to the mm/dd/yyyy date format.  The import data should be changed to this:

06/05/2014
06/05/2014

Resolution

Update import data so that any dates that are being imported conform to the date format that has been specified against the Preactor field/s in the Import / Export Wizard, Import Field Mapping dialog.

Ticks must be between DateTime.MinValue.Ticks and DateTime.MaxValue.Ticks

$
0
0
Symptom

When running an import script the following error occurs:

Ticks must be between DateTime.MinValue.Ticks and DateTime.MaxValue.Ticks.
Parameter name: ticks



Cause

The Preactor import only supports ticks between the range: 0 and 9999999 milli seconds.

Resolution

Convert the ticks to decimal days before importing into Preactor.

Upgrade schema to version 11.17.3.4 Value cannot be null

$
0
0
Symptom

Upgrade schema to version 11.17.3.4 error occurs when trying to run an older configuration in 12.1 SP1.

Contents of the error message:

Detailed Exception Information:

The task 'Upgrade schema to version 11.17.3.4' failed. Details of the error are included below.

System.ArgumentNullException
============================

Value cannot be null.
Parameter name: key

Program Location:

   at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
at Preactor.StorageMapping.NativeModel.EntityCollection`1.get_Item(String name)
at Preactor.StorageMapping.NativeModel.SchemaCollection`1.get_Item(String name)
at Preactor.StorageMapping.DbModel.ComputedColumnBuilder.a(String A_0, String A_1)
at Preactor.StorageMapping.DbModel.ComputedColumnBuilder.a(IFieldReference A_0, Boolean A_1, String A_2)
at Preactor.StorageMapping.DbModel.ComputedColumnBuilder.FieldStringToString(IFieldReference fieldReference, String primaryKeyText)
at Preactor.StorageMapping.DbModel.ComputedColumnBuilder.BuildExpression(IExpressionBase expressionBase, String primaryKeyText)
at Preactor.StorageMapping.DbModel.ComputedColumnBuilder.BuildExpression(IExpressionBase expressionBase, String primaryKeyText)
at Preactor.StorageMapping.DbModel.ComputedColumnBuilder.BuildExpression(IExpressionBase expressionBase, String primaryKeyText)
at Preactor.StorageMapping.DbModel.ComputedColumnBuilder.BuildExpression(IExpressionBase expressionBase, String primaryKeyText)
at Preactor.StorageMapping.DbModel.ComputedColumnBuilder.GenerateExpression()
at Preactor.StorageMapping.DbModel.DbField.BasicDefinitionString()
at Preactor.StorageMapping.DbModel.DbFieldDefinition.a(Boolean A_0)
at Preactor.StorageMapping.DbModel.DbFieldDefinition.get_SqlDefinitionStringToAlter()
at Preactor.StorageMapping.DbUpgrade.AddFieldTask.PerformUpgrade(IDbTransaction dbTransaction)
at Preactor.StorageMapping.DynamicSchemaUpgradeTask.PerformUpgrade(IDbTransaction transaction)
at Preactor.StorageMapping.SchemaUpgradeTask.RunImpl()
at Preactor.Task.Run()
at Preactor.StorageMapping.SchemaUpgradeTask.Run()
at Preactor.WinForms.Controls.TaskRunner.TaskRunner.a(Object A_0, DoWorkEventArgs A_1)


Cause

Fields with EVALUATE expressions on them that reference fields that are defined as TABLE, for example:

Process Time Type,0,STRING,
HELPPOPUPID (180)
DIALOG LEVEL 100
TABLE(Process Time Type)
      DEFAULT ON INSERT
DIALOG ONLY
NO TRACK
LIST TIPS:
Rate Per Hour Toggle,0,TOGGLE,
DIALOG LEVEL 100
EVALUATE"~{$Process Time Type}~==~Rate Per Hour~"
DIALOG ONLY
ALWAYS UPDATE
SWITCH ON (Quantity per Hour):

The issue is due to how computed columns are created for the EVALUATE fields, but the assumption made is that the field will either be a FREE FORMAT or a DATABASE type field, not TABLE.

Resolution

The recommended solution is to replace the STRING_TABLES as actual DATABASE tables.

Another alternative is to use the field classification: EXCLUDE FROM DB.  This can be added to the EVALUATE field, for example:

Rate Per Hour Toggle,0,TOGGLE,
DIALOG LEVEL 100
EVALUATE"~{$Process Time Type}~==~Cadence~"
DIALOG ONLY
ALWAYS UPDATE
SWITCH ON (Quantity per Hour)
EXCLUDE FROM DB:

This will mean that no column will be created in the SQL database for this field, it will only be present in Preactor.  Note that if the field is excluded from the database, that any reports dependent on this field will need to be updated to accomodate the change.

Internal Sequencing Mechanism When Using MADE FROM

$
0
0
Overview

When using the MADE FROM classification to link operations, either within the same order or between orders, the sequencer generates a series of sets of operations that allow it to place the operations on the planning board while respecting the various, potentially complex, operation relationships.  This mechanism can cause some other classifications that affect the sequencing of operations where the relationships of operations that are not directly connected to behave unexpectedly unless this mechanism is understood.  This document aims to explain the mechanism and its implications to other sequencing logic classifications when using the standard forward sequencing options.

Order Sequencing Using Operation Numbers to Link Operations Within an Order

When sequencing orders linked together using operation numbers, the sequencer engine groups all of the operations of the order together and places them on the planning board according to their operation number sequence.

In a simple sequence of three operations: 10, 20, and 30, operation 10 is placed first, operation 20 is placed so that it starts after operation 10 has finished, and finally operation 30 is placed after operation 20.


If there are multiple operations that have the same operation number, then all operations with that number will be considered as a whole when determining the times that subsequent operations are placed on the planning board.  Where only a simple relationship exists, for example 2 operations 20s this is usually adequate.

If the operation relationship is more complex, then the desired relationship may not be obtained.  If there were 2 operation 20s and two operation 30s, the operation 30s may be only dependent on their preceding operation 20s.  The sequence generated may be sub-optimal if the operation 20’s do not finish at the same time.

 

Sequencing Using MADE FROM Relationships to Link Operations in the Same or Different Orders

When using MADE FROM each operation has a defined set of relationships, there are no implied relationships as with Operation numbers.

The sequencer generates sets of operations based on their subsequent and previous operations.  After each set has been sequenced, the next unallocated operation is found and another set is built. For example, with the data set above with a single disassembly point, the following operation sets will be created and sequenced:

Op 10, Previous operations, None; Subsequent operations, Op 20a, Op 20b.

Op 20a, Previous operations, Op 10; Subsequent operations, Op30a.

Op 20b, Previous operations, Op 10; Subsequent operations, Op 30b.

Op 30a, Previous operations, Op 20a; Subsequent operations, None.

Op 30b, Previous operations, Op 20b; Subsequent operations, None.

The sequence on the planning board is built up in the following way:

Op 10 and its dependents are sequenced

As Op 20a and Op 20b are now sequenced, these are not used as a base operation for the next set.  Op 30a is the next operation not on the planning board, so it is used to create the set Op 20a and Op 30a. Op 20a is already on the planning board, Op 10 and Op 20b are also on the planning board but not included when determining the operation relationships for Op 30a. 
Next, Op 30b and its dependents are sequenced.  Op 20b is already on the planning board, Op 10, Op 20a and Op 30a are also on the planning board, but are not included when determining theoperation relationships of Op 30b.


As operations 30a and 30b have no dependents that are not on the planning board, so sequencing is complete.  Operation 30a is now scheduled independently to operation 20b.



Sequencing Features that May Not Work as Expected with MADE FROM

Due to the small sub sets of operations that are scheduled together, sequencing features that cause links between non-contiguous operations may not work as expected.

SUBSEQUENT RESOURCE CONSTRAINT 
 

If a SUBSEQUENT RESOURCE CONSTRAINT is set by an Operation, then with Operations 10, 20 and 30 the constraint set by Op 10 will not have any effect on Op 30 as Op 10 and Op 30 are never included in the same operation set.

Op 10 and its dependents are sequenced


Op 20 is already on the planning board, so Op 30 and its dependents are sequenced


The operation set when sequencing Op 30 only contains Op 20 and Op 30. The constraints set by Op 10 are not considered.

INTER OPERATION INTERVAL
 

If two or more contiguous operations are linked using an INTER OPERATION INTERVAL, that is to say Op 10 is linked to Op 20 and Op 20 is linked to Op 30, then the first link may be violated if the second link requires Op 20 to be moved.

Op 10 and Op 20 are sequenced first, the interval is not violated



The next operation that is not on the planning board is Op 30, so the operation set Op 20 and Op 30 is sequenced, on the first attempt the INTER OPERATION INTERVAL is violated.

The sequencer now adjusts Op 20 to satisfy the INTER OPERATION INTERVAL between Op 20 and Op 30, but in doing so exceeds the INTER OPERATION INTERVAL between Op 10 and Op 20.  However, as the operation set only includes Op 20 and Op 30 this violation is not detected.



Using Secondary Constraint Across Multiple Operations 

If the usage of a secondary constraint is incremented or decremented by one operation, then decremented or incremented by a subsequent operation, the results may not be as expected.  If the secondary constraint is used by another operation on the planning board or has a shift pattern then it may exceed its capacity while scheduling one operation set.

For example, if we have three linked operations, the first of which increments a secondary constraint and the last decrements the secondary constraint by the same amount.  If the secondary constraint has a capacity of 1 and the operations increment and decrement the usage by 1, an unexpected violation may occur if another operation that uses the secondary constraint is already placed on the planning board at any point in the future.

If the initial state of the planning board is:


Giving secondary constraint usage of:



When sequencing the new order, we might expect the following result


However, the actual result will be


To understand this result we need to examine the individual steps in placing the operations on the planning board.  The first step is to sequence the operation set created by Op 10, this contains Op 10 and Op 20.  The first sequencing parse generates the following



The secondary constraint is violated because the combination of the operation on the planning board and the increment by the newly sequenced operation, exceed the capacity.  The operation that decrements the secondary constraint has not yet been placed on the planning board.

Due to the constraint violation the operations are moved to a time when the violation no longer occurs.

Even though the constraint is never decremented, it does not exceed its limits. 

Sequencing the final operation set related to Op 30 causes the constraint to decrement again to produce the final sequence.



Using LINK COMPLETE ORDER to Increase the Size of Operation Sets

In order to limit the impact of the Operations sets, the classification LINK COMPLETE ORDER can be set on a TOGGLE type field.  When the LINK COMPLETE ORDER toggle is set, then the sequencing engine will increase the size of the operation set for both previous and subsequent operations up to the point at which assembly or disassembly occurs.  The LINK COMPLETE ORDER toggle can only be set on the PARENT field of an Order.

SUBSEQUENT RESOURCE CONSTRAINT

In a configuration using MADE FROM with an order that has a simple linear flow of 3 operations, Op 10, 20 and 30, but with a SUBSEQUENT RESOURCE CONSTRAINT set by Op 10, LINK COMPLETE ORDER can be used to enable any SUBSEQUENT RESOURCE CONSTRAINT applied by Op 10 to effect Op 30.
 

The LINK COMPLETE ORDER option enables all three operations, Op 10, 20 and 30, to be part of the same operation set.  Thus if Op 10 has set a SUBSEQUENT RESOURCE CONSTRAINT both Op 20 and Op 30 will respect that constraint when testing which resources they can be processed on.

INTER OPERATION INTERVAL

In a configuration using MADE FROM with an order that has a simple linear flow of 3 operations, Op 10, 20 and 30, but with an INTER OPERATION INTERVAL set between both Op 10 and Op 20 and between Op 20 and Op 30, LINK COMPLETE ORDER can be used to prevent the INTER OPERATION INTERVAL between Op 10 and Op 20 being violated.
 

The LINK COMPLETE ORDER option enables all three operations, Op 10, 20 and 30, to be part of the same operation set.  Thus if Op 20 has to be adjusted due to the INTER OPERATION INTERVAL between Op 20 and Op 30, the INTER OPERATION INTERVAL between Op 10 and Op 20 will also be taken into account and Op 10 moved if required.

Using Secondary Constraint Across Multiple Operations

In a configuration using MADE FROM with an order that has a simple linear flow of 3 operations, Op 10, 20 and 30, but with a secondary constraint increment on Op 10 and a decrement on Op 30, LINK COMPLETE ORDER can be used to prevent the increment on Op 10 causing the constraint to be violated outside the total span of the 3 operations. 

The LINK COMPLETE ORDER option enables all three operations, Op 10, 20 and 30, to be part of the same operation set.  Thus if Op 10 has incremented a secondary constraint, the decrement by Op 30 will be considered before any final checks are performed.

Assembly and Disassembly

Consider the following operation relationships


If there were, for example, a secondary constraint Increment on Op 30 which was decremented at Op 50 then there would be the potential for this to fail due to the creation of the operation sets as follows:

Op 10, Op 20a and Op 20b

Op 20a and Op 30

Op 30 and Op 40

Op 40 and Op 50

Op 50, Op 60a and Op 60b.

The operations that increment and decrement the secondary constraint are never considered together.

If all these operations are part of the same Preactor order, with Op 10 being the PARENT, LINK COMPLETE ORDER will have no effect at all.  The First disassembly point is after Op 10, this will prevent LINK COMPLETE ORDER progressing past Op 10.  If however the order were split into two Preactor Orders, with Op 10 and Op 30 being the PARENTs, LINK COMPLETE ORDER would affect the operation sets.

                      Order 1                                            Order 2

The operation sets will now become:

Op 10, Op 20a and Op 20b

Op 20a and Op 30

Op 30, Op 40 and Op 50

Op 50, Op 60a and Op 60b.

Setting LINK COMPLETE ORDER on the PARENT Op 30 has now caused Op 30, 40 and 50 to be included in the same operation set. The operations that increment and decrement the secondary constraint are now in the same operation set, which will ensure that the constraint is handled correctly.

Viewing all 69 articles
Browse latest View live