Migrated Style Parameters in the Migrated Code
- We'll create a new controller 'GetOrderStatisticsDemoNumberParameter`
public class GetOrderStatisticsDemoNumberParameter : BusinessProcessBase
{
readonly Models.Order_Details Order_Details = new Models.Order_Details();
public GetOrderStatisticsDemoNumberParameter()
{
From = Order_Details;
}
public void Run()
{
Execute();
}
}
- In Magic, any parameter was also a local column
public class GetOrderStatisticsDemoNumberParameter : BusinessProcessBase
{
readonly Models.Order_Details Order_Details = new Models.Order_Details();
readonly NumberColumn OrderId = new NumberColumn();
public GetOrderStatisticsDemoNumberParameter()
{
From = Order_Details;
}
public void Run()
{
Execute();
}
}
- When we receive it as a parameter, we'll add it to the
Runmethod, and call theBindParametermethod to bind the parameter to the local column
public class GetOrderStatisticsDemoNumberParameter : BusinessProcessBase
{
readonly Models.Order_Details Order_Details = new Models.Order_Details();
readonly NumberColumn OrderId = new NumberColumn();
public GetOrderStatisticsDemoNumberParameter()
{
From = Order_Details;
}
public void Run(NumberParameter orderId)
{
BindParameter(OrderId, orderId);
Execute();
}
}
- This is how the migrated code reflects parameters.
- A Local column
- A
NumberParameter - And a call to the
BindParametermethod
- Since we use a local column for the parameter value, we can write the
Wherein the constructor, and we no longer have to write theWherein theRunmethod. - The
BindParametermethod will make sure that the local columnOrderIdwill have the value of the parameter and vice versa. This update will happen before theOnLoadmethod get's executed
public class GetOrderStatisticsDemoNumberParameter : BusinessProcessBase
{
readonly Models.Order_Details Order_Details = new Models.Order_Details();
readonly NumberColumn OrderId = new NumberColumn();
public GetOrderStatisticsDemoNumberParameter()
{
From = Order_Details;
Where.Add(Order_Details.OrderID.IsEqualTo(OrderId));
}
public void Run(NumberParameter orderId)
{
BindParameter(OrderId, orderId);
Execute();
}
}
- Let's add the Quantity
public class GetOrderStatisticsDemoNumberParameter : BusinessProcessBase
{
readonly Models.Order_Details Order_Details = new Models.Order_Details();
readonly NumberColumn OrderId = new NumberColumn();
readonly NumberColumn Quantity = new NumberColumn();
public GetOrderStatisticsDemoNumberParameter()
{
From = Order_Details;
Where.Add(Order_Details.OrderID.IsEqualTo(OrderId));
}
public void Run(NumberParameter orderId, NumberParameter quantity)
{
BindParameter(OrderId, orderId);
BindParameter(Quantity, quantity);
Execute();
}
}
- We need to make sure Quantity will be set to zero.
public class GetOrderStatisticsDemoNumberParameter : BusinessProcessBase
{
readonly Models.Order_Details Order_Details = new Models.Order_Details();
readonly NumberColumn OrderId = new NumberColumn();
readonly NumberColumn Quantity = new NumberColumn();
public GetOrderStatisticsDemoNumberParameter()
{
From = Order_Details;
Where.Add(Order_Details.OrderID.IsEqualTo(OrderId));
}
public void Run(NumberParameter orderId, NumberParameter quantity)
{
BindParameter(OrderId, orderId);
BindParameter(Quantity, quantity);
Execute();
}
protected override void OnStart()
{
Quantity.Value = 0;
}
}
- And update the
Quantitylocal column in theOnLeaveRowmethod
public class GetOrderStatisticsDemoNumberParameter : BusinessProcessBase
{
readonly Models.Order_Details Order_Details = new Models.Order_Details();
readonly NumberColumn OrderId = new NumberColumn();
readonly NumberColumn Quantity = new NumberColumn();
public GetOrderStatisticsDemoNumberParameter()
{
From = Order_Details;
Where.Add(Order_Details.OrderID.IsEqualTo(OrderId));
}
public void Run(NumberParameter orderId, NumberParameter quantity)
{
BindParameter(OrderId, orderId);
BindParameter(Quantity, quantity);
Execute();
}
protected override void OnStart()
{
Quantity.Value = 0;
}
protected override void OnLeaveRow()
{
Quantity.Value += Order_Details.Quantity;
}
}
- The usage of
BindParametermakes sure that when the controller ends, the value in the local columnQuantitywill be returned to thequantityNumberParameter
Help us improve, Edit this page on GitHub
or email us at info@fireflymigration.com