You have a typo here. It needs to be ==sum(D[j,i] * j for j in 1:3)).
Putting everything together:
duration_per_task = [
[10 6 4],
[20 10_000 10_000],
[1_000 8 4],
[15 12 8],
]
model = Model()
@variable(model, X[1:2, 1:4, 1:3], Bin)
@variable(model, z[1:4, 1:3], Bin)
@constraint(model, [u=1:4], sum(z[u, :]) <= 1)
@constraint(
model,
[u = 1:4],
sum(i * z[u, i] for i in 1:3) == sum(X[i, u, j] for i in 1:2, j in 1:3),
)
@expression(
model,
duration[u=1:4],
sum(duration_per_task[u][j] * z[u, j] for j in 1:3),
)
# Do something with duration[u]...